[摘要]一个qq马的分析 文章作者:Monster[E.S.T] 原始出处:http://www.hackerm.com.cn/read.php/31.htm 信息来源:邪恶八进制信息安全团队(... 一个qq马的分析 文章作者:Monster[E.S.T] 原始出处:http://www.hackerm.com.cn/read.php/31.htm 信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 该文章已发表于《黑客X档案》0906期,后由原创作者友情提交到邪恶八进制信息安全团队, 转载请著名原作者和原始出处 最近Blog人气疯狂下跌, 就随便发篇垃圾文过来广告一下Blog, 希望大牛们不要B4我. 就快要高考了, 好长时间没上网了。 今天好不容易抽出点时间, 刚上QQ一个我不认识的小子就说要给我个黄站发布器, 我一高兴就要了因为我在网吧, 也没多想就直接运行了, 结果刚运行文件一下子就没了, 过了一会qq又掉了, 我心里一凉啊, 哎, 又是马啊, 那就拿出来逆逆吧! 直接放到OD里, 代码如下: 复制内容到剪贴板 代码: 0041D987 > 60 pushad 0041D988 E8 09000000 call 0041D996 0041D98D 05 D80100E9 add eax, E90001D8用PEID来分析来看看, PEID说是Upack 0.3.9 beta2s -> Dwing的壳, 记得这是个很古老的壳了, 不管什么壳, 看到第一句的pushad大部分就应该可以用ESP定律来脱了。 为什么?翻翻以前的杂志, 看看ESP定律的原理就行了。 在OD中按F8跟踪一下, 只要看见ESP寄存器的数据变红, 然后就执行命令hr esp, 然后按F9让它运行起来, 接着程序就被断在了这里: 复制内容到剪贴板 代码: 0041DB9C 61 popad 0041DB9D - E9 8F54FFFF jmp 00413031这里的popad和pushad是一对, 看到这个popad, 基本说明我们成功了, 我们跟随这个jmp跳过去就到了程序的OEP了, 直接使用OD把它DUMP出来, 再用PEID看看, 说是Microsoft Visual C++ 6.0 [Overlay], 已经没壳了。 我们用OD载入脱壳后的文件, F8跟踪几下后就可以看到如下代码: 复制内容到剪贴板 代码: 00405086 E8 65EBFFFF call <jmp.&kernel32.OpenMutexA> 0040508B 85C0 test eax, eax 0040508D 75 13 jnz short 004050A2刚开始先打开互斥(用来判断程序运行是否唯一), 继续往下看: 复制内容到剪贴板 代码: 004050E9 E8 16EEFFFF call 00403F04 004050EE 8B55 EC mov edx, dword ptr [ebp-14] 004050F1 B8 B0764000 mov eax, 004076B0 004050F6 E8 05E0FFFF call 00403100 004050FB A1 B0764000 mov eax, dword ptr [4076B0] 00405100 E8 EFE2FFFF call 004033F4 这段代码用来得到一个随即字符串作为DLL的文件名 我们略过这些,直接看关键代码: 复制内容到剪贴板 代码: 0040188A . 6A 02 push 2 ; /Origin = FILE_END 0040188C . 6A 00 push 0 ; |