一个QQ马的解析[网络技术]
本文“一个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 ; |pOffsetHi = NULL
0040188E . 6A C4 push -3C ; |OffsetLo = FFFFFFC4 (-60.)
00401890 . FFB5 ACFEFFFF push dword ptr [ebp-154] ; |hFile
00401896 . FF15 1C304000 call dword ptr [<&KERNEL32.SetFilePoi>; \SetFilePointer这里的代码用于调整好文件指针用来读文件,持续往下看: 复制内容到剪贴板
代码:
0040189C . 8365 EC 00 and dword ptr [ebp-14], 0
004018A0 . 6A 00 push 0 ; /pOverlapped = NULL
004018A2 . 8D45 EC lea eax, dword ptr [ebp-14] ; |
004018A5 . 50 push eax ; |pBytesRead
004018A6 . 6A 3C push 3C ; |BytesToRead = 3C (60.)
004018A8 . 8D85 B0FEFFFF lea eax, dword ptr [ebp-150] ; |
004018AE . 50 push eax ; |Buffer
004018AF . FFB5 ACFEFFFF push dword ptr [ebp-154] ; |hFile
004018B5 . FF15 30304000 call dword ptr [<&KERNEL32.ReadFile>] ; \ReadFile开始读文件了,再往下几行我们会看到这里:
004018BB . 6A 3C push 3C 复制内容到剪贴板
代码:
004018BD . 8D85 B0FEFFFF lea eax, dword ptr [ebp-150] ; 取加密字符地址
004018C3 . 50 push eax ; 压入加密字符地址
004018C4 . E8 B90A0000 call 00402382 ; 举行解密这里是解密算法,对加密信息举行解密,我们这里所谓的加密信息就是从文件中读出来的盗号贼的密码什么的,我们按F7跟进这个call,看这里的解密算法代码:
004023AD > /8B45 F8 mov eax, dword ptr [ebp-8] 复制内容到剪贴板
代码:
004023B0 . |40 inc eax ; eax加1,已经解密到第eax位
004023B1 . |8945 F8 mov dword ptr [ebp-8], eax ; 保存位数
004023B4 > |8B45 F8 mov eax, dword ptr [ebp-8] ; 读取位数
004023B7 . |3B45 0C cmp eax, dword ptr [ebp+C] ; 能否解密到最后一位
004023BA . |73 16 jnb short 004023D2 ; 解密完成刚跳走
004023BC . |8B45 FC mov eax, dword ptr [ebp-4] ; 取加密字符地址到eax
004023BF . |0345 F8 add eax, dword ptr [ebp-8] ; 该位的ASCII值与位数举行与运算
004023C2 . |0FB600 movzx eax, byte ptr [eax] ; 按位取加密字符
004023C5 . |83F0 12 xor eax, 12 ; 该位的ASCII值与12H举行异或运算
004023C8 . |8B4D FC mov ecx, dword ptr [ebp-4]
004023CB . |034D F8 add ecx, dword ptr [ebp-8]
004023CE . |8801 mov byte ptr [ecx], al ; 保存该位加密后的值
004023D0 .^\EB DB jmp short 004023AD再F8往下跟踪几句,会看到这样的代码: 复制内容到剪贴板
代码:
004047D3 8D45 E0 lea eax, dword ptr [ebp-20] 这里把解密后的明文地址放到eax里,我们履行号令d eax,嘿,瞥见好东西了,邮箱帐号,密码.到这里我们的解析也算完毕了,用方才得到的邮箱帐号和密码登录上去,嘿,小样,你的邮箱归我喽,上面有1000+的QQ,这时忽然想到这个盗号贼在盗号之前必定会拿自己的号先测试一下什么的,我一向往前翻,终于在前面找到了这个盗号贼的密码,密码还挺让人忧郁的,"fuckmepahhyyou",哎,真不知道这人怎么样想的,不管了,登上去看看.
以上是“一个QQ马的解析[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |