欢迎光临散文网 会员登陆 & 注册

C++程序反编译笔记

2022-10-19 21:04 作者:GC_CH  | 我要投稿

    任何可执行程序都可以反编译成C++源代码,因为C++支持内嵌汇编代码。

    目前没有全自动的反编译软件,只能半自动地反编译。

    可执行文件中包括的数据有全部变量,代码,资源(光标,图标,位图等)。

    可行的反编译过程是:

(1)将资源导出到文件,将代码反汇编得到很多个汇编函数,全局变量全部导出;

(2)借助ida pro,ghidra等软件将汇编函数反编译成C语言的函数的伪代码,注:这些软件反编译的结果不是100%准确的,而且代码流程很乱(包含很多goto语句);

(3)在Visual Studio中创建C++项目,将导出的资源,全局变量,函数伪代码添加进来,包含必要的头文件,解决所有的编译错误(绝大多数的编译错误都是类型错误,强制转换就行了,强制转换99.99%的情况都不会导致逻辑错误),此时已经得到了一个可以编译的C++项目了;

(4)解决链接错误,也就是链接必要的库文件,这步很简单;

(5)解决逻辑错误,也就是重构数据结构和算法,这一步是最复杂的。必须要理解可执行程序里的数据结构和算法,相当于去看别人完全没有注释的源代码!!!也相当于玩一个很复杂的解密游戏!!!

    至此,反编译可执行程序完毕!

C++程序反编译笔记的评论 (共 条)

分享到微博请遵守国家法律