这里大多数内容摘自NU1L的《0-1》,目前见到用到的东西不多,现在总结记录在这里,方便日后遇到的时候好查看,也有个思考的方向
特征值识别
很多常见的算法如:AES、Base64 会用到一些对应的固定常量,通过识别这些常量从而推断猜测所用到的算法,下面放一个书上的表
特征运算识别
还可以通过某些算法的特征运算来推测识别,也放一个表
ps:有些题目会针对这些固定算法做变换(包括在常量和运算上的一些小变换),分析的时候还是要仔细确认好
第三方库识别
算法中可能会使用一些现成的库,对这些库进行针对性的识别可以提高逆向分析的效率,下面是ida识别第三方库的一些方法
字符串识别
很多第三方库会将版权信息和该库使用的一些字符串(如报错信息)以字符串的形式写入库中。通过寻找这些字符串可以快速判断使用了哪些第三方库
函数签名识别
在确定了使用的库之后,可以进一步识别具体函数
- 当IDA函数列表或者导航栏有大部分青色区域,就属于识别函数,这时可以手动应用:
shift+f5
打开Signature列表,然后insert
可以新增匹配的函数签名库 - 第三方库函数也有类似上述的方法:ida文件菜单 -> Load File -> FLIRT Signature file,对应添加就行,若ida没有预置所需识别的库函数签名,这里查github.com/push0ebp/sig-database,对应签名放进sig文件夹,然后在IDA中加载
Comments