17.2 编译重建后的反汇编代码
17.1 节介绍了简单的反汇编代码的重建过程,那么如何对提取出的反汇编代码进行编译并与VC++6.0中的程序进行链接呢?不管是汇编编译器还是C语言编辑器,在编译的过程中都会生成通用的obj格式的文件,有了这个共同点,就可以将汇编代码与C\C++代码进行联合编译。首先利用RadASM对代码清单17-3进行编译,生成obj文件,如图17-2所示。
图 17-2 生成obj文件的汇编文件
使汇编文件生成对应的obj文件后,将图17-2中的MyToUpper.obj文件复制到我们的VC++6.0的工程目录下。在VC++6.0的文件视图中,将复制到目录中的obj文件添加到当前工程中,如图17-3所示。
图 17-3 载入obj文件
这样一来,函数的实现就被加载到了当前工程中,那么如何调用obj文件中的ToUpper函数呢?这需要对该函数进行声明,如图17-4所示。
图 17-4 函数接口声明
在声明的过程中需要注意函数的调用约定,以及加入“extern"C"”的说明,防止函数被名词粉碎。现在万事俱备,只需要调用ToUpper函数即可,如见图17-5所示。
图 17-5 接口调用
运行程序,输入字符串,得到的结果如图17-6所示。
图 17-6 结果显示
查看图17-6的显示结果,是不是成功地将字符串helloworld由小写字符转换为大写字符了呢?这表示从图17-1的程序中提取出来的代码被成功执行了。