常见算法识别
特征值识别
许多常见算法会使用一些常量,如AES,DES等,为了提高效率,常常被硬编码在程序中,所以可以通过识别这些常量来推测程序是否使用了该算法.
例如:
IDA中的FindCrypt插件,PEiD的KANAL可以查找特征值
特征运算识别
特定的算法会有与之对应的运算,特征值不足以识别的时候,可以尝试分析程序中使用了那些特征运算,来进行算法的识别
例如:
第三方库识别
字符串识别
许多第三方库都会将自己的版权信息,使用到的字符串(报错信息等)以字符串写入库,静态编译时,可以在二进制程序中找到这些信息,即可判断使用了哪些第三方库
函数签名识别
库对应一系列函数,可通过特定的函数签名来识别具体的函数,可以使用IDA的签名识别功能来进行查找,同时若IDA没有预置需要识别的库函数签名,则可以上网查找需要的函数签名库进行导入,或者使用IDA SDK中提供的FLAIR工具,根据已有的静态库文件来生成一份签名
二进制比对识别
可以使用BinDiff工具来对二进制程序A(要分析的程序)和二进制程序B(自行找到的一个包含特定信息的程序)进行比较分析.
如果已知了A使用了某特定库,但是因为环境不同等原因不能完全匹配,这时可以找另外一个已经使用了该库的程序进行比对,来查看相似度,相似度达0.99的大概率是相同函数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WAHAHA's blog!
评论