查看原文
其他

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

安帝实验室 安帝Andisec 2022-07-03


回顾上篇,主要介绍了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,可以降低工业网络安全的机密性、完整性、可用性伤害。在后续文章中,安帝科技还会介绍关于工业网络安全相关的知识或解决方案等,敬请关注。

 


往期精选

利用IDA PRO反汇编C++程序之洗白篇

安帝科技畅谈工业互联网安全解决之道

安帝科技煤炭行业工业网络安全态势感知系统解决方案



安帝科技ANDISEC

北京安帝科技有限公司是新兴的工业网络安全能力供应商,专注于网络化、数字化、智能化背景下的工业网络安全技术、产品、服务的探索和实践,创新应用网络空间行为学及工业网络行为验证,构建了工业大数据深度分析、威胁情报共享、威胁感知和协同响应等核心能力优势,为电力、石油石化、煤炭、烟草、轨道交通、智能制造等关键信息基础设施行业提供安全产品、服务和综合解决方案,工业网络安全态势感知平台已部署3600余家电厂。



点击“在看”鼓励一下吧

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存