-
本类下载排行
- MYSQL常用命令
- WIN2000 WEB服务器防止ICMP数据包攻击
- 一个定时发作删除文件的程序原码---EVA-777 TIME BOMB
- 破解QQ2005的“键盘加密保护技术”
- 近墨者远程控制小凤居专版使用说明书
- MS05 039漏洞测试手记
- 流光初级教程二
- 入侵检测原理和实践
- 网管工具密码破解
- 中国黑客病毒(worm.runouce)详细介绍
- 手工清除“新欢乐时光”
- 天空葵QQ密码探索者 beta 0.70版 使用说明
- 如何把木马注册为系统服务
- 通用手工删除木马的方法
- 如何使QQ好友删出不了自已
- GooGle Hack 让你瞬间成为黑客
- FolkQQ专业黑软回顾
- 破解灰鸽子的教程
- sniff教程
- 个人计算机安全
破解灰鸽子的教程
- 唉,今天上网的时候被月亮大哥抓住了, 要我做一个破解灰鸽子的教程。看来这次是走不掉了,无奈我自己都是刚刚学破解的人,算了,我只好硬着头皮上了,其实灰鸽子的东西我自己都不是怎么懂搞。。。
希望高手看了以后不要笑我这个教程,因为我的确是很菜,这个教程主要是写给一些有兴趣想知道灰鸽子怎么破解的人看的。
好了,现在开始动工。
首先用PE-SCAN扫灰鸽子的壳,是ASPACK的,
不用多说了,顺便干掉。
干掉以后打开灰鸽子,发现出错。。。昏倒。。。唉,原来灰鸽子跟流光一样,都是会自我检错的啊。。。
没办法了,先用W32DASM打开看看。。。
我们进入程序的进口,往下拉,不多久我们就看到了作者大人写的“灰鸽子自我检测”大家要等一下。看来等的时间还要很长啊,灰鸽子比较大,呵呵~~呜呼。。。兄弟你搞好了没有???嗯。。。对我这个菜鸟来说,葛军好样的!先向您老鞠躬啦~~现在要修改的大致范围我们已经决定了。跟着我们看看是那里出的问题吧。不知道大家有没有一个破解的习惯,就是要密切关注有TEST之后跟着JNZ,JZ之类的命令。因为通常看到这些命令的时候,我们已经可以说爆破点十有八九是在这里的了。其实,正统的破解是应该用TRW来找的,我第一次破的时候都是用TRW来找的,但是TRW运行在RING 0层,当运行TRW的时候,电脑的时间是相对静止的。因此我们使用TRW的一举一动都无法记录下来。所以在这个教程我就只好跟大家讲这里就是灰鸽子的破解关键了,大家看这里:
:00572E47 BA8C315700 mov edx, 0057318C
:00572E4C E8274FEFFF call 00467D78
:00572E51 8BC7 mov eax, edi
:00572E53 E89044EFFF call 004672E8 /就是这里出提示框的
:00572E58 84C0 test al, al /对AL进行检测
:00572E5A 750C jne 00572E68 /这里是爆破点!
:00572E5C 8B06 mov eax, dword ptr [esi]
:00572E5E E81D19EFFF call 00464780
:00572E63 E911030000 jmp 00573179 /来到这里程序就自动退出了先不要理会我刚才做的解释,就代码而言,我们先是在00572E53看到了CALL,然后在他的下方看到了TEST,再在他下面看到了JNE,想象一下,这个程序在干什么?很明显,他现实调用子进程检测,然后再决定跳到正确的入口还是错误的进口,在这里我们要选择爆破正确的进口,把JNE改成JE或者JMP,把CALL调用子进程改成NOP(在汇编里面是什么都不干的意思)。这样,这个可恶的对话框就不会来烦我们了。。。
搞定了以后我们继续看,我们要成为注册用户。
还是老样子,看看提示先,我们在W32DASM里面看看注册成功的提示:”网络验证身份成功,程序以注册用户身份执行“GOOD,我们就看这里了。。。
:0053DA98 8D45E0 lea eax, dword ptr [ebp-20]
:0053DA9B 8B5DEC mov ebx, dword ptr [ebp-14]
:0053DA9E 8D1C9B lea ebx, dword ptr [ebx+4*ebx]
:0053DAA1 8D9314945700 lea edx, dword ptr [ebx+00579414]
:0053DAA7 E87071ECFF call 00404C1C
:0053DAAC 8B55E0 mov edx, dword ptr [ebp-20]
:0053DAAF 8B45F4 mov eax, dword ptr [ebp-0C]
:0053DAB2 E80573ECFF call 00404DBC /调用检测注册用户的子程
:0053DAB7 755D jne 0053DB16 /爆破的目标就是再这里
:0053DAB9 A1F49D5700 mov eax, dword ptr [00579DF4]
:0053DABE 8B00 mov eax, dword ptr [eax]
:0053DAC0 C6805509000001 mov byte ptr [eax+00000955], 01
:0053DAC7 A1F49D5700 mov eax, dword ptr [00579DF4]
:0053DACC 8B00 mov eax, dword ptr [eax]
:0053DACE 8B8010050000 mov eax, dword ptr [eax+00000510]
:0053DAD4 8B8020020000 mov eax, dword ptr [eax+00000220]* Possible StringData Ref from Data Obj ->"网络验证身份成功!程序以注册用户身份运行!"
老话,看到0053DAB2这里的CALL和下面的JNE没有?感觉告诉我们这里绝对有玄机在的。因为JNE下面已经没任何可以跳转的命令在,所以我们可以肯定如果我们在JNE这里跳的话,肯定就会来不到网络验证身份成功这里的。我们现在要做的就是让JNE永远也不跳走,一句话,把JNE修改成NOP就可以了,轻轻松松,搞定……
不过事实上灰鸽子还有一处地方是检测的,怎么找到的?就是修改以后发现还不行所以才发现的啊!我们再找一下网络验证身份成功,发现……
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0053DC40(U)
|
:0053DC4C 33C0 xor eax, eax
:0053DC4E 55 push ebp
:0053DC4F 68F8DC5300 push 0053DCF8
:0053DC54 64FF30 push dword ptr fs:[eax]
:0053DC57 648920 mov dword ptr fs:[eax], esp
:0053DC5A 8D45D4 lea eax, dword ptr [ebp-2C]
:0053DC5D 8B5DEC mov ebx, dword ptr [ebp-14]
:0053DC60 8D1C9B lea ebx, dword ptr [ebx+4*ebx]
:0053DC63 8D9314945700 lea edx, dword ptr [ebx+00579414]
:0053DC69 E8AE6FECFF call 00404C1C
:0053DC6E 8B55D4 mov edx, dword ptr [ebp-2C]
:0053DC71 8B45F4 mov eax, dword ptr [ebp-0C]
:0053DC74 E84371ECFF call 00404DBC
:0053DC79 7556 jne 0053DCD1 /这里就是我们要爆破的地方了:)
:0053DC7B A1F49D5700 mov eax, dword ptr [00579DF4]
:0053DC80 8B00 mov eax, dword ptr [eax]
:0053DC82 C6805509000001 mov byte ptr [eax+00000955], 01
:0053DC89 A1F49D5700 mov eax, dword ptr [00579DF4]
:0053DC8E 8B00 mov eax, dword ptr [eax]
:0053DC90 8B8010050000 mov eax, dword ptr [eax+00000510]
:0053DC96 8B8020020000 mov eax, dword ptr [eax+00000220]* Possible StringData Ref from Data Obj ->"网络验证身份成功!程序以注册用户身份运行!"
跟刚才的一样,所以我照着做就是了。不多说废话了。
解决完上面的麻烦以后,我们下一步要对付的就是突破灰鸽子连接密码检测错误的问题。
大家来研究一下灰鸽子是怎么处理连接需要密码的问题的。根据提示,灰鸽子首先会把客户端连接的密码发送到本机上面,然后再决定连接正确还是错误。因此,连接密码正确与否不是客户端说了算,而是服务端说了算的。因此我们就可以通过修改灰鸽子本身的程序来实现突破灰鸽子连接密码错误的问题。希望葛军大人下次可以修改一些服务端和客户端,因为这个毕竟是一个安全的隐患。好了,废话就讲到这里,我们继续。首先,我们在文本查找那里打上连接错误的提示。
“连接密码错误!请修改主机连接密码后再次连接试试!”
我们会来到:
* Possible StringData Ref from Data Obj ->"002"
|
:0056098A BA701D5600 mov edx, 00561D70
:0056098F E82844EAFF call 00404DBC /这里调用子程序判断密码的正确与否
:00560994 0F85AC000000 jne 00560A46 /这里肯定就是爆破点了
:0056099A 8B45FC mov eax, dword ptr [ebp-04]
:0056099D C6805409000001 mov byte ptr [eax+00000954], 01
:005609A4 8D8578FEFFFF lea eax, dword ptr [ebp+FFFFFE78]
:005609AA E8053DFFFF call 005546B4
:005609AF 8B8D78FEFFFF mov ecx, dword ptr [ebp+FFFFFE78]
:005609B5 8D857CFEFFFF lea eax, dword ptr [ebp+FFFFFE7C]* Possible StringData Ref from Data Obj ->"连接密码错误!请修改主机连接密码后再次连接试试!"
要修改那里,你说呢?
搞好了以后,我们再试试看看。
嗯,看来是失败了哦,可恶啊,一定还有地方没有搞好。
我们再来看一下代码,就会找到:
* Possible StringData Ref from Data Obj ->"001"
|
:0056075D BAA81C5600 mov edx, 00561CA8
:00560762 E85546EAFF call 00404DBC /这里又会判断你的密码是否正确
:00560767 0F851A020000 jne 00560987 /爆破的兄弟到这里集中!
:0056076D 8B55F4 mov edx, dword ptr [ebp-0C]
:00560770 8B45FC mov eax, dword ptr [ebp-04]
:00560773 E88C44FFFF call 00554C04* Possible StringData Ref from Data Obj ->"验证连接密码正确.分配远程打开端口为:"
搞定了以后,我们再来试试看,呵呵~~大功告成了。
我们现在来运行一下我们修改的灰鸽子,看看还有什么问题。
由此我们可以看到,我们的灰鸽子依然是有问题的,首先第一个就是虽然验证密码成功,但是灰鸽子依然会对我们使用注册用户才有的功能做限制。因此,我们要接触这些限制,其次是我们做客户端的时候会有什么请支持正版的限制。
好了,提起精神来,同志们,我们一起来把这两个最后的限制也消灭掉!
我们首先来消灭请支持正版提示框,虽然这个不影响我们的使用,但是我们依然不爽。第一个我们要做什么啊?当然就是搜索那个出错提示了,我们输入“请支持正版”就会来到这里:
:0055084B D6 BYTE 0d6h
:0055084C B4CB mov ah, CB
:0055084E B6D4 mov dh, D4
:00550850 BBB0BFF2A3 mov ebx, A3F2BFB0
:00550855 A10000538B mov eax, dword ptr [8B530000]
:0055085A D8A1F49D5700 fsub dword ptr [ecx+00579DF4]
:00550860 8B00 mov eax, dword ptr [eax]
:00550862 80B85509000000 cmp byte ptr [eax+00000955], 00
:00550869 7513 jne 0055087E /我们不想看到提示就要再这里跳!
:0055086B 6A40 push 00000040* Possible StringData Ref from Data Obj ->"请支持正版"
把00550869的JNE改成JMP或者JE就搞定了,类似的地方还有两处处,这里就不一一列出来了。只是给一个应该改的地方的代码:
:00550731 7513 jne 00550746
:0054F928 7513 jne 0054F93D我们来进行最后一步,修改灰鸽子对非注册用户的功能限制!
查找“对不起!只有注册用户才能使用此功能!”我们就会看到……
:00570824 64FF30 push dword ptr fs:[eax]
:00570827 648920 mov dword ptr fs:[eax], esp
:0057082A 80BB5509000000 cmp byte ptr [ebx+00000955], 00
:00570831 751B jne 0057084E /jne同志,见到你真好哦
:00570833 8B8310050000 mov eax, dword ptr [ebx+00000510]
:00570839 8B8020020000 mov eax, dword ptr [eax+00000220]* Possible StringData Ref from Data Obj ->"对不起!只有注册用户才能使用此功能!"
一个字,改JNE,给我变成JMP或者JE吧。。。
类似这样的地方还有十三个,我们把它改好了以后就可以手工了。
:00570A49 751B jne 00570A66
:00570C61 751B jne 00570C7E
:00570E7B 751B jne 00570E98
:0057146A 752E jne 0057149A
:00571D0F 751E jne 00571D2F
:00571D68 7526 jne 00571D90
:00571F43 751E jne 00571F63
:00571F9C 7526 jne 00571FC4
:0057218B 752E jne 005721BB
:00572509 7518 jne 00572523
:005725F3 7517 jne 0057260C
:0057265B 7517 jne 00572674
:005726CF 7518 jne 005726E9把这些地方的JNE修改成JE或者JMP就可以了。因为时间问题,我这里就不改了,下面给大家看看一个我事先已经修改好了的灰鸽子。

