IDAPython是IDA的一款强大的插件,通过它可以对病毒代码做一些自动化的操作,常用于汇编码反混淆和解密。接下来我们尝试使用该工具来解密病毒代码。
本次实验的样本为:F834F898969CD65DA702F4B4E3D83DD0,下载地址:https://app.any.run/tasks/c7c12977-fdd1-4b1a-b8de-1c8f2806cdfc。先使用IDA打开它,目光聚焦到上面的导航栏,有一大段绿色的数据,位于0x40C030,直觉告诉我,这是段加密后的可执行文件。
在unk_40C030处按下Ctrl+X,即可交叉引用到代码处,发现它是函数sub_404520的一个参数,通过代码我们大致可以猜出,sub_404520的作用主要是解密出一个dll,然后LoadLibraryA调用它,下面就来主要分析这个解密函数sub_404520。
解密的核心逻辑就是红框里这个循环,主要工作是读取数据里的每一字节,然后进行减操作,可以说是很简单的加密方式了。同时我们可以注意到一个有趣的地方,在位置0x2F0和0x2FF之间,病毒是产生随机字节,这样做的目的是免杀,使每次生成的dll的哈希不一样。