SIG文件在IDA的作用中相当于符号文件。如果是自己写的PE文件,在编译过程中会产生OBJ文件,可以通过工具为它生成SIG文件。先把SIG文件拷贝到IDA目录的sig文件夹中,加载PE文件后依次点击view-"Open subview"-Signatures(快捷键shift+F5)打开已应用的签名窗口:
在"List of applied library modules"右键添加sig文件,IDA反汇编窗口中的函数名会变为原本的函数名,以便于查看。下面两张图是应用SIG文件前后IDA对release版程序的函数名的解析,可以看到一部分函数名已经被正确解析:
那么,怎么才能生成SIG文件呢?分2种情况:
1.通过obj生成sig:
2.为lib生成sig:
步骤略微复杂,所以我参考网上现有的bat文件
SIG帮助IDA解析函数名的原理:
先提出一个大家都熟悉的词语:特征码。来看个例子,system函数的特征:
特征就是固定的二进制代码,是固定的二进制代码,打死都不会变的。比如上面的push ebp的机器代码,是55但是注意,偏移不是,比如最后的一个红框后面的偏移,因为这个受很多因素干扰。而pcf则是用来提取特征码的工具。它提取的特征码有如下的形式:
前边都是机器码,后面的2E 2E 2E 2E...代表的是偏移,用来做补充。比如机器码55 68 FF 25 00 00 40 00那么写到文件中就是55 68 FF 2E 2E 2E 2E 2E 2E 2E 2E 其中两个2E代表一个"."
参考资料:
逆向知识第一讲,IDA的熟悉使用 作者:iBinary