IDA反编译dll库时导入C++头文件

引言

有时候,可能因为硬盘损坏等等原因,自己曾经写的动态链接库源码丢失了,幸好对应的头文件得以保留了下来,这个动态链接库主要是某种算法的实现,并没有继承其他的一些类库,比如MFC之类的,而自己对算法的实现已经忘得差不多了,而突然又需要该算法的实现过程,那么有什么办法可以帮助我们呢?

一个很好的办法就是采用IDA进行反编译,如果dll只是C语言的导出,那么反编译代码应该比较好看懂!(不过有一个难题是结构体的识别)

假如dll是C++类的导出,那么问题就比较复杂了,C++类成员函数中有隐含的this指针,直接反编译的话对成员函数的操作非常难以识别,此时自然而然就想到了在头文件上做文章,而IDA只支持导入C语言格式的头文件,直接导入C++头文件会报错,无法识别C++语法,那么应该怎么利用C++的头文件呢?

经过在互联网上的一番搜索,竟然没搜到类似的问题及解决办法,只能自己进行思考和尝试了。

其实,C++的类class是在C语言的结构体struct基础上发展而来的,多了成员函数的概念以及权限的控制,而成员函数其根本就是在调用时传入this指针,那么能否把C++的类手动改成C语言的格式呢?答案是可行的。

解决方法

假设某个C++类的头文件如下所

你可能感兴趣的:(通信杂记和Windows逆向,c++,mfc,开发语言)