制作sig文件

本文为在学习过程中的笔记,写的不好请见谅.


在使用IDA的过程中,由于缺少符号文件,有些库函数不能识别.

int main(int argc, char* argv[])
{
	printf("Hello World!\n");
	return 0;
}

.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

以上述为例,制作printf.sig文件


查找printf.obj

在命令行输入 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的文件


提取printf.obj特征码

在命令行中输入pcf printf.obj

在当前目录下会产生一个printf.pat的文件


制作sig文件

在命令行中输入sigmakeprintf.pat printf.sig

在当前目录下会产生一个printf.sig的文件


将printf.sig拷贝到IDA中的sig文件夹中,sig文件制作完成

在IDA中添加printf.sig文件后,printf即可识别

.text:00401000 _main           proc near               ; CODE XREF: start+AFp
.text:00401000                 push    offset aHelloWorld ; "Hello World!\n"
.text:00401005                 call    _printf
.text:0040100A                 add     esp, 4
.text:0040100D                 xor     eax, eax
.text:0040100F                 retn
.text:0040100F _main           endp

批处理

由于lib里边有很多obj所以这里用批处理文本来写,从《C++反汇编与逆向分析》得到以下代码

md %1_objs
cd %1_objs
for /F %%i in ('link -lib /list %1.lib') do link -lib /extract:%%i %1.lib
for %%i in (*.obj) do pcf %%i
sigmake -n"%1.lib" *.pat %1.sig
if exist %1.exc for %%i in (%1.exc) do find /v ";" %%i > abc.exc 
if exist %1.exc for %%i in (%1.exc) do > abc.exc more +2 "%%i"
copy abc.exc %1.exc
del abc.exc
sigmake -n"%1.lib" *.pat %1.sig
copy %1.sig ..\%1.sig
cd ..
del %1_objs /s /q
rd %1_objs


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值