如何制作符号文件(.sig文件)
在使用IDA时,由于缺少符号文件,有些库函数不能识别.
C++源码:
#include "stdafx.h"
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}
IDA反汇编:
.text:00401000 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:00401000 _main proc near ; CODE XREF: start+AFp
.text:00401000 push offset aHelloWorld ; "Hello World!\n"
.text:00401005 call sub_401010
.text:0040100A add esp, 4
.text:0040100D xor eax, eax
.text:0040100F retn
.text:0040100F _main endp
库函数printf并没有识别出来,而是call sub_401010
工具:link.exe,pcf.exe,sigmake.exe
库文件:libc.lib
在命令行输入 link -lib /list libc.lib
可以查看该库文件中所包含的所有obj文件,期中有一项为
build\intel\st_obj\printf.obj
首先将printf.obj提取出来
在命令行输入link -lib /EXTRACT:build\intel\st_obj\printf.obj libc.lib
在当前目录下会产生一个printf.obj的文件
用pcf工具,提取特征码
在命令行中输入pcf printf.obj
在当前目录下会产生一个printf.obj的文件
用sigmake工具,制作sig文件
在命令行中输入sigmake printf.pat printf.sig
在当前目录下会产生一个printf.sig的文件
之后将printf.sig拷贝到IDA中的sig文件夹中,sig文件制作完成
之后在IDA中添加刚制作的printf.sig文件后,printf即可识别
添加后:
posted on 2016-02-23 09:16 GodOfTheWine 阅读(856) 评论(0) 编辑 收藏 举报