-
-
[讨论]逆向工程核心原理_学习3
-
发表于: 2020-1-11 17:48 3499
-
代码执行法的基本原理:程序功能非常明确时,逐条执行指令来查找需要查找的位置。仅适用于被调试的代码量不大,且程序功能明确的情况。
根据这篇文章测试的就是代码执行法,调试exe的过程中,main函数中的MessageBox函数会在某刻被调用执行,慢慢跟随代码直到调试到MessageBox函数为止。
扩展知识:Win32应用程序中,API函数的参数是通过栈传递的。VC++中默认字符串是使用Unicode码表示,处理字符串的API函数也全部变更为Unicode系列函数。
OllyDbg在初次载入待调试的程序时会先经历一个预分析过程,查看进程内存、程序中引用的字符串,和调用的API都会被摘录出来。注意:如果不是第一次的话,或者信息不全的话记得清理.udd .bak文件
扩展知识:VC++中,static字符串会默认保存为Unicode码形式。
观察程序的行为特征,事先推测出代码中使用的API,使用这个方法快速查找到需要的部分。
扩展知识:OllyDbg通过PE文件格式的IAT 导入地址表结构准确摘录出API名称的。暂时不用深究了解即可。
OllyDbg不能为所有可执行文件都列出API函数调用列表。使用压缩器/保护器工具对可执行文件进行压缩或保护之后,文件结构会改变。
扩展知识:
用程序执行某种操作时,API向OS提出请求,被调用API对应的系统DLL文件被加载到应用程序的进程内存。我们可以在DLL代码库被加载到进程内存后,直接向DLL代码库添加断点。
最后于 2020-1-11 17:49
被陈阿姨编辑
,原因:
赞赏
他的文章
- 跟帖实践,base64编码中位运算操作分析. 1808
- [原创]深入理解计算机系统第三版P35问题 1844
- 深入理解计算机系统第三版26页问题 2311
- [讨论]设置内核调试环境 2571
- [翻译]持续更新用到的词汇 7230
赞赏
雪币:
留言: