- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件逆向分析过程中基于ollydbg的三种汇编代码定位方法
软件逆向分析过程中
基于OllyDbg的三种汇编代码定位方法
【摘要】软件逆向分析技术在信息安全领域发挥着至关重要的作用。软件逆向分析过程中,对汇编代码的定位速度极大地影响着工作效率。本文以OllyDbg为调试工具,结合具体的实例,总结和分析了三种汇编代码定位思路。
【关键字】逆向分析;汇编代码;代码定位;OllyDbg
中国分类号:IP393.09
引言
软件逆向分析技术在恶意代码调查、软件漏洞挖掘、电子取证、软件维护等领域中发挥着至关重要的作用。在对软件进行逆向分析的过程中,不同的源代码编译的可执行文件都会被无差别的反编译成汇编语言。分析过程中,根据具体情况对具体汇编代码进行定位的速度,极大的影响着软件逆向分析的工作效率。
然而,编译器在编译源代码时,会添加包括启动函数在内的额外代码:软件的原创者可能会加入干扰性的代码或垃圾代码:一些压缩器和保护器更是会对可执行文件进行处理。这些因素,都给你想分析中的汇编代码定位带来额外的困难和挑战。如何高效的定位汇编代码,一直是逆向分析工作人员重点关注的问题。
本文结合具体的实例,对3中常用的汇编代码定位方法进行了分析和总结。
方法1---单步再现法
1.1原理与思路
此方法依赖于程序的可重现性。通过逐条执行汇编语句重现出要定位的事件,锁定代码位置。
1.2实例
图一 输入错误的密码弹出的对话框
在某软件登录操作时,如果输入了错误的密码,会弹出如图一的对话框。
现欲定位此对话框弹出时所对应的代码位置,可通过OllyDbg的单步调试功能(快捷键F8)逐条执行汇编代码,并通过输入错误密码的方式重现出图一中的对话框弹出事件,此时代码窗口中对应的位置4010CF处的CAL令,就是我们的要定位的位置(如图二所示)
1.3适用情况与局限性。
当事件可以被明确的重现出来时,可以优先考虑通过单步再现法逐条执行汇编代码来定位,对于程序中的一些逻辑复杂、不容易被明确的重现的事件,此方法往往效率很低,而且不适用。
方法2---字符串定位法
2.1原理与思路
程序运行时,程序中引用的静态字符串会被加载到进程内存中。可通过观察这些字符串在代码中的那些位置被引用,提高汇编代码调试效率。
2.2实例
图三 All referenced text strings
通过OllyDbg右键菜单中的Search for-Allreferenced text strings选项,可调出如图3所示的列表窗口,列表中显示了程序中引用的静态字符串及其地址。
可通过这个列表,结合断点跟踪等调试手段,提高调试效率。
2.3 适用情况
当程序中出现明确已知的字符串时,可通过此方法提高调试效率,此方法往往与其他方法配合使用。
3 方法3---API定位法
3.1原理与思路
编程经验丰富的逆向分析人员,往往会根据程序执行时的特征,大致推测出程序调用了那些系统API,可通过重点追踪某个具体的API来验证推测。定位代码。
3.2实例--跟踪程序代码中调用的API
图4 Found intermodular calls
通过OllyDbg右键菜单中的Search for- All intermodular calls选项,可调出如图4所示的列表窗口,列表中显示了程序内部调用的系统API。
可以死通过具体跟踪某个API来锁定某些有特征的事件所对应的代码。如:通过重点跟踪MessageBoxA被调用的地址来追踪对话框被调用的事件。
3.3 实例2 --对DLL代码库的断点跟踪
经过压缩器、保护器处理过的可执行文件,其API调用列表往往不会出现在上述的Found intermodular calls列表中。
文档评论(0)