前因: 之前分析某一个样本,使用了一个很大的加密算法,该算法去解密很多字符串,用过idapython都知道这个时候就是搞懂算法然后批量解就行了,但是耗时,虽然算法最后都需要攻克,但是会搞心态,推荐模拟执行完成解密。
先看一下效果:
自定义一个demo,解密三个字符串,调用同一个解密算法,建议使用debuge模式,release直接优化了函数:

简单分析一下:

按照之前流程直接分析算法,然后idapython写脚本静态解密就行,但是这是一个简单的算法,如果比较大就会比较耗时。
看一下模拟执行脚本:

放到ida看一下效果:

后面就是MakeComm和xref函数循环调用的事情了。
正常运行:

下载链接:d41K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3K9i4u0W2k6i4W2W2i4K6u0r3k6X3I4S2M7X3g2Q4x3X3c8W2L8i4f1`.
这三个文件放到ida 的plugins目录下

1 2 3 4 5 6 7 8 9 10 11 12 13 | from __future__ import print_function
import flare_emu
def myCallback(eh, address, argv, userDate):
print ( "%08x: arg0: %08x" % (address, argv[ 0 ]))
eh = flare_emu.EmuHelper()
eh.iterate( 0x0041196A , myCallback)
myStack = [ 0 , b "dgyf'dgh'}idg" ]
mu = eh.emulateRange( 0x004110DC , stack = myStack)
print ( "dec_string: %s" % eh.getEmuString(myStack[ 1 ]))
|
[培训]科锐逆向工程师培训第53期2025年7月8日开班!