1.样本是恶意代码实战中的Lab15-03.exe。
2.IDA 打开发现在00401016处有标红,IDA识别出了一些异常,仔细分析发现,把0x40148c写到了ebp+4的位置,而这个位置刚好是main函数返回地址的位置,通过改写此处的内容让main返回的时候执行0x40148c位置处的代码。

2.由此可看出主函数应该是非常正常,不会看出有什么恶意的地方。分析0x40148c处的代码。你此处的代码在0x401496处,有明显标红,说明有反汇编异常,一般都是恶意代码作者故意制作的来影响反汇编的结果。此处是一个很明显的对抗反汇编,上一步是跳转到401497的位置,而这个位置是jmp 这条指令的中间,这显然是不可能的,在此处按d键,把代码转为数据显示,然后把401497后面的数据按c键再转回代码,注意对齐。然后把401496位置的数据改为nop,可以通过Edit->Patch Program->change word ,把E9改为90,然后按c转换为代码就可以了。效果如图

继续往下看,发现有一个除零异常出现 ,

显然恶意代码先把异常处理函数的地址存到FS寄存器,然后出发除零异常执行此处的函数。显此处显然异常处理函数的地址是0x4014c0,而0x4014c0位置处的IDA没有识别为代码。按c键来转换为代码,继续向下看,在0x4014D7位置处,又出现了一个与0x401496处的相似的异常,同样的方法进行处理,结果如图

这个估计就是恶意代码真正要做的事情的代码了。继续向下看,有个URLDownloadToFileA函数,显然很恶意。下面还有个反汇编异常先处理了,先D后C,然后结果如下,

到此整个代码就分析完了,主要是4014c0处是真正要关注的,下面分析这个位置的代码


主要关注标红的位置,此处看不出什么来,在OD中实际执行一下来看。
直接在0x40148c处下断点,然后直接f9运行到此处,若看到一堆数据,右键分析->从模块中删除分析就可以了,改写相应位置的异常按照IDA那样,实验过程发现se处理程序的确是0x4014c0但是程序并没有跳到那个位置而是终止了,没搞明白,为了真正看到0x4014c0处的具体执行情况。我选择直接编辑汇编代码。写入jmp 0x4014c0,

发现在0x4014db处好像也是异常终止了,后改为

正常了、
然后在四个函数处下断点观察参数信息和返回信息,

0x401534明显是一个解密函数,然后把网址和文件就解密出来,然后URLDownloadToFileA下载,winexec 执行下载的文件。
网友评论