1. IDA入门,签名文件制作

时间:2024-03-18 09:32:15

IDA中导入函数以粉色显示在函数列表中:

 

 

 

 

start+E4↓p 表示start+E4的地方引用了_main,下箭头表示引用代码在下面,p表示函数过程proc

 

_main↑j 表示_main的地方引用了_main_0,上箭头表示引用代码在上面,j表示jmp

 

 

 

 

 

 

 

 

 

 

 

 

左侧亮蓝色的地址表示运行时库代码或框架代码,分析时一般无需关注,如果是黑色,表示用户代码或未识别出,尤其是库代码未识别出,IDA把它当作是用户代码:

 

 

 

 

几个快捷键:

N rename 重命名

D data 切换数据解释方式

C code 解释为代码

A Ascii 解释为字符串

 

VC6找到main函数:

3push,一个call

 

VS2019找到main函数:

Debug版:

main前有两个if结构,if中用&&判断条件,故一共生成了4jcc指令,且都是jz,前两个jz到同一地址,后两个jz到另一个同一地址,接下来的call就进入main函数。

 

Release版相对简单,可参照Debug版方法,也可参照VC6的方法。

 

 

如果有obj文件,可以制作IDA签名文件:

1. 运行以下命令行,生成sig文件,其中-n”Hang”是对签名文件的说明性意义。

 

 

 

 

  1. sig文件放在IDAsig文件夹内。
  2. 打开IDAShit + F5,或者点以下菜单。

 

 

 

 

 

 

  1. 在新窗口中右键,添加制作好的签名文件,IDA即可识别出函数名。

 

静态编译出的lib文件是obj文件的集合,命令行link -lib /list libc.lib可以查看lib文件中的所有obj文件,也可使用命令行lib /list libc.lib

 

 

 

 

 

 

 

 

 

 

 

 

lib中提取某个obj文件,以下两个命令皆可:

 

 

 

 

出现以下错误时,去文件夹中找到exc文件,例如libc.exc

 

 

 

 

打开libc.exc,发现特征码冲突了,手动删除开头4行,意味着告诉sigmake,随便选一个

 

 

 

 

再执行一次出错的指令,成功: