0


OD+IDA动静结合反编译C++

需求

C++编译出来的hello world函数,如果没有源码,如何定位还原到exe当中的汇编代码位置?软件逆向动静态结合如何操作?

流程

1.内存搜索

输入你所看到的字符串:

2.定位内存位置

3.搜索引用内存地址的代码

4.给该位置下断点

5.内存代码和exe静态程序地址的映射

    IDA(Ghidra)导出的EXE程序地址是0x401000,而使用OD(X32dbg)动态调试看到的地址是0xEA1000,目前看到的helloword程序,是原样搬过去一一对应的。那么看到内存地址把EA改为40,就是静态程序地址了。

磁盘地址和内存镜像的对应关系

6.使用静态反编译出C++代码

在IDA(Ghidra)中,可以对汇编代码进行反编译,它们的功能还是很强大的。

小技巧:静态编译工具定位到起始位置

在IDA中,通过view-->open subviews--->Segments,可以看到真实程序起始点:

但是程序起始端,并不一定是main,要看一下点跳转。另外一种方法是,在function windows里,启动Quick filter来查找特定函数:

弹出搜索框,输入main(或你想找的函数):

Ghidra的界面这些入口位置就直接在主界面有,按照下面的两个方法都可以找到程序起始点:

总结

    通过正向编译,知道要找的东西,在逆向过程中,就可以有的放矢的去观察,了解工具的使用方法和编译原理,数据的追踪线路,再去查找无源码的程序,就有思路了。

本文转载自: https://blog.csdn.net/qq_20031585/article/details/124455446
版权归原作者 向往生 所有, 如有侵权,请联系我们删除。

“OD+IDA动静结合反编译C++”的评论:

还没有评论