0. 写在前面
最近在做re、pwn题时,经常遇到一些静态编译过后,又去除符号的程序。
对于动态编译的去符号程序,emm,去除的符号通常都是作者自定义的函数名称,你想通过工具还原其符号通常情况下是不太可能的。但是这种情况下,做符号还原的常规办法还是理解代码逻辑后为其命名,通常不会带来太大的工作量(毕竟你做题也需要理解代码逻辑
但是对于静态编译的去符号程序,问题就来了:库函数和程序的主逻辑混杂在一起,让逆向工作者无法判断该函数是程序函数,还是库函数,无法聚焦程序核心逻辑的分析。
为了应对这个情况,首要思路还是想办法还原库函数,将库函数和程序代码函数分离,帮助我们更快解题
1. sig-database
sig-database顾名思义,是一个面向ida pro的符号存储库,其存储了绝大部分程序会使用的so的sig,我们可以直接将sig-database中的sig中下载下来,项目地址:https://github.com/push0ebp/sig-database
1.1 sig-database在ida中的使用
下载下来后,我们可以把里面存放的sig文件,转存到ida目录下的sig/pc目录下
。
存放完成后,在ida使用界面中点击File->Load file-> FLIRT signature file
将so文件导入,可以一次性多导入几个,总会有几个成功的(😀
2. Finger
如果你处在联网状态下,可以考虑使用:https://github.com/aliyunav/Finger
finger的使用教程也比较简单,照做即可。
————————分割线————————
发现新的好办法再继续更新