逆向工程中的XOR加密分析与实践
1. MSVCR*.DLL 函数问题分析
在较新的 MSVCR*.DLL 版本中, invalid_parameter() 函数被重写,它会弹出消息框,询问是否要终止进程或调用调试器,这比之前直接静默返回要好很多。然而,自那时起,Microsoft 似乎忘记修复 MSVCRT.DLL 中的问题。
在 Windows XP 时代,MSVCRT.DLL 不会对参数是否为 NULL 进行检查。例如,在 Windows XP 系统下, stricmp("asd", NULL) 代码会崩溃,但这其实是合理的。推测 Microsoft 在为 Windows 7 升级 MSVCR*.DLL 文件(包括 MSVCRT.DLL)时,在各处添加了参数检查,但由于自 2002 年 MSVS .NET 之后 MSVCRT.DLL 使用较少,没有进行充分测试,导致问题遗留。不过,像 MinGW 这样的编译器仍然可以使用这个 DLL。而且,Windows 8.1 中的 MSVCRT.DLL 也存在同样的问题。
2. 原始 XOR 加密方法
2.1 最简单的 XOR 加密
曾见过一款软件,其所有调试消息都通过与值 3 进行 XOR 运算来加密,即每个字符的最低两位被翻转。例如,“Hello, world” 会变成 “Kfool/#tlqog”。以下是实现该加密的 Python 代码:
#!/usr/bin/python
msg="Hello, world!"
print "".join(m
超级会员免费看
订阅专栏 解锁全文
2249

被折叠的 条评论
为什么被折叠?



