逆向常见算法识别

这里大多数内容摘自NU1L的《0-1》,目前见到用到的东西不多,现在总结记录在这里,方便日后遇到的时候好查看,也有个思考的方向

特征值识别

很多常见的算法如:AES、Base64 会用到一些对应的固定常量,通过识别这些常量从而推断猜测所用到的算法,下面放一个书上的表

1

特征运算识别

还可以通过某些算法的特征运算来推测识别,也放一个表

2

ps:有些题目会针对这些固定算法做变换(包括在常量和运算上的一些小变换),分析的时候还是要仔细确认好

第三方库识别

算法中可能会使用一些现成的库,对这些库进行针对性的识别可以提高逆向分析的效率,下面是ida识别第三方库的一些方法

字符串识别

很多第三方库会将版权信息和该库使用的一些字符串(如报错信息)以字符串的形式写入库中。通过寻找这些字符串可以快速判断使用了哪些第三方库

函数签名识别

确定了使用的库之后,可以进一步识别具体函数

  • 当IDA函数列表或者导航栏有大部分青色区域,就属于识别函数,这时可以手动应用:shift+f5打开Signature列表,然后insert可以新增匹配的函数签名库
  • 第三方库函数也有类似上述的方法:ida文件菜单 -> Load File -> FLIRT Signature file,对应添加就行,若ida没有预置所需识别的库函数签名,这里查github.com/push0ebp/sig-database,对应签名放进sig文件夹,然后在IDA中加载

二进制对比识别

工具:BinDiff
安装使用:https://www.cnblogs.com/lsdb/p/10543411.html

Comments