逆向代码
1、如果是小的代码点,我们只需要将代码看懂,使用高级语言实现就行了;
2、如果是大批量的反代码,我们需要做的是将函数含义,函数参数,返回值,数据结构先分析好,建好结构体,然后将整个函数转成.c 文件,再将函数拷贝到VS中,然后逐句重写;
IDA 逆向代码,分析清楚函数的参数,然后直接将IDA的代码C导出来,然后复制粘贴,然后每行去逆向代码, 这里面变量就是不变的;
注意点:
1、要注意内存读取字节数
FreadLibData(File_handle, _offset + 1, buf + 2, 2);// 【348C】--2 == 0x0000
这里表示的是从文件FileHandle的_offset+1的位置取两个字节存放buf+2 处;
for ( i = 0; i < *((unsigned __int16 *)buf + 1); ++i )
访问的时候,这里的*((unsigned __int16 *)buf + 1 实际上就是char* buf + 2处的两个字节;
2、有些函数IDA不同的版本,定义会不一样
Defs.h 不同,所以逆向出来的代码需要使用对应版本的def.h