-
-
[分享]《逆向工程核心原理》1-8章总结
-
发表于:
2022-10-25 17:54
8952
-
快速查找指定代码的四种方法:
- 代码执行法(一直F7执行,适用于程序功能明确且代码量不大的情况)
- 字符串检索法(检索程序中引用的字符串)
- API检索法1(预测会使用的Win32 API,检索)
- API检索法2(程序被保护时,从DLL代码库中检索)
第3、4种方法让我意识到如果不熟悉windows编程就会比较难去找指定代码,也难以逆向
修改字符串的两种方法:
- 直接修改字符串缓冲区
- 在其他内存区域新建字符串并传递给消息函数
小端序标记法,即低位优先,虽然是逆序存储方式看着不是很舒服,但很符合人类思维。windows系统就是采用了小端序(Little endian)。
栈——一种由高地址向低地址扩展的数据结构,遵循后进先出的规则存储数据。栈帧——利用EBP寄存器访问栈内局部变量、参数、函数返回地址等的手段。栈帧结构:
1 2 3 4 5 6 7 8 | PUSH EBP
mov EBP,ESP / / 可以看作函数开始的地方
... / / 无论ESP怎么变化,EBP都保持不变
mov ESP,EBP / / 还原ESP的值
POP EBP
RETN
|
函数在被调用前参数会被逆序入栈,这样在函数调用时才能正确地顺序获取参数,这还是因为栈后进先出的规则。
abex' crackme #2是一个根据NAME生成密钥然后检查输入的VB文件。对这个文件的逆向分析更让我觉得“预测代码”能力的重要性,正向开发和逆向分析是相辅相成的。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!