利用IDA PRO反汇编C++程序之操作篇

利用IDA PRO反汇编C++程序之操作篇

时间:2021-02-28 作者:安帝科技

回顾上篇,主要介绍了IDA Pro的常用快捷键及功能窗口。今天继续为大家带来利用IDA Pro反汇编C++程序的操作流程,通过更改16进制数据或汇编代码,达到改变应用程序内容或执行流程的目的。

利用IDA PRO更改应用程序

主要介绍通过Hex View修改数据库中的字节值或直接修改汇编语句,达到更改应用程序的效果。

01示例程序


02更改二进制文件
改动后效果
将输出的“num1 < num2”更改为“number1 < number2”。
定位代码段
通过View→Open Subviews菜单或Shift+F12快捷键打开String窗口,找到“num1 < num2”字符串。在工程较大、字符串较多的情况下,可通过右击String窗口空白处选择“Quick filter”菜单,在弹出的过滤器中输入想要查找的字符串。

双击字符串窗口的该行字符串,会转跳到IDA-View的文本视图中的0000000140002310处。

 在变量名处右击,选择“jump in a new hex window”,跳转到二进制窗口中。

修改程序
在需要修改的位置处右击选择“Edit”或按下F2快捷键,即可编辑数据,在修改完成后右击选择“Apply changes”或按下F2快捷键保存修改。

写入文件
保存完成后,需通过“Edie”→“Path program”→“Apply patched to input file”把改动更新到二进制文件中。

效果展示
重新启动应用程序,更改效果如下图所示:

03更改汇编语句
改动后效果
无论输入什么数据,结果均为num1 >= num2。
修改程序
在IDA-View图形界面中可以看到判断逻辑。

按下“空格”键切换到文本界面,选中对应的代码行,通过“Edit”→“Path program”→“Assemble”修改汇编代码。
本例中只要把00000001400012FB处“cmp [rsp+48h+arg_18],eax”更改为“xor eax, eax”,应用程序将永远不会走到“num1 < num2”分支处。

写入文件
保存完成后,需通过“Edie”→“Path program”→“Apply patched to input file”把改动更新到二进制文件中。
效果展示
重新启动应用程序,更改效果如下图所示:

小结

利用IDA PRO反汇编C++程序的《洗白篇》及《操作篇》简单记录了IDA常用的功能窗口及实际应用。在通过IDA更改应用程序的内容或执行流程中,关键是要如何定位要修改的代码段位置。简单的应用程序可以通过IDA-View窗口直接定位到代码段位置,复杂的应用程序可以通过查找调用函数或在String窗口中查找对应的字符串来定位代码段。定位后可以通过Hex-View更改byte数据,或可直接更改汇编语句,从而达到改变应用程序的执行效果。IDA Pro还有很多高级的开发技巧,功能强大、操作复杂,要完全掌握仍需很多知识。IDA最主要的特性是交互和多处理器。操作者可以通过对IDA的交互来指导IDA更好地反汇编,也可以通过IDA指定编译器类型,对变量名、结构定义、数组等定义等。
IDA Pro是工业网络安全分析漏洞、分析恶意软件、分析病毒行为的常用工具。正确利用IDA Pro,可以降低工业网络安全的机密性、完整性、可用性伤害。在后续文章中,安帝科技还会介绍关于工业网络安全相关的知识或解决方案等,敬请关注。