飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3237|回复: 0

[已解决] [原创破解] 咪兔QQ找茬助手脱壳去校验破解教程

[复制链接]

该用户从未签到

发表于 2012-9-11 09:33:42 | 显示全部楼层 |阅读模式
        咪兔QQ找茬助手脱壳去校验破解教程,咪兔系列软件都可以用此方法通用破解,在第一期教程中因为没有找到校验位,所以只好教大家用内存补丁做破解,第一期教程出了之后也没有人指导我,大多都是顶啊,学习啊,什么的,有意义的回复基本没有,只好自己再花点时间研究,现在研究出来了,也写出来给大家分享,如有不当之处,还请指出,我希望能在这里多跟大家交流!下面入正题。

用PE查壳为:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo这个壳,我们可以用ESP定律脱壳,OD载入后停在这里:
0045AF70 >  60              PUSHAD
0045AF71    BE 00E04300     MOV ESI,Me2QQZha.0043E000                         //F8到这里看寄存器ESP
0045AF76    8DBE 0030FCFF   LEA EDI,DWORD PTR DS:[ESI+FFFC3000]
0045AF7C    57              PUSH EDI
0045AF7D    EB 0B           JMP SHORT Me2QQZha.0045AF8A
0045AF7F    90              NOP
0045AF80    8A06            MOV AL,BYTE PTR DS:[ESI]
载入后我们F8到0045AF71地址,在寄存器的ESP中选在ESP的值0012FFC4右键选择跟随到数据窗口,然后在右下角首行,点选“0012FFA4  7C930228  ntdll.7C930228”右键选择“断点”-“硬件访问”-“Dword”,然后F9运行后在如下地方断下:
0045B10F    8D4424 80       LEA EAX,DWORD PTR SS:[ESP-80]
0045B113    6A 00           PUSH 0
0045B115    39C4            CMP ESP,EAX
0045B117  ^ 75 FA           JNZ SHORT Me2QQZha.0045B113
0045B119    83EC 80         SUB ESP,-80
0045B11C  - E9 135DFBFF     JMP Me2QQZha.00410E34          //选中这里按F4跳了一下,再选中按一下F4,然后按一下F8飞向光明之顶
0045B121    0000            ADD BYTE PTR DS:[EAX],AL
0045B123    0000            ADD BYTE PTR DS:[EAX],AL
然后选中“0045B11C  - E9 135DFBFF     JMP Me2QQZha.00410E34”按F4跳了一下,再选中这个地方,再按一下F4,然后按一下F8,飞向光明之顶,程序的OEP:
00410E34    55              PUSH EBP                     //光明之顶,程序的OEP
00410E35    8BEC            MOV EBP,ESP
00410E37    6A FF           PUSH -1
00410E39    68 F82A4100     PUSH Me2QQZha.00412AF8
00410E3E    68 980F4100     PUSH Me2QQZha.00410F98                   ; JMP 到 msvcrt._except_handler3
00410E43    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]
00410E49    50              PUSH EAX
现在我们可以在代码中右键选“用OllyDump脱壳调试进程”在跳出的窗口中选择“脱壳”,输入脱壳程序存放的位置及文件名保存存,至此脱壳成功。
下在我们来说破解。
OD载入刚刚脱好壳的文件,在OD中右键“搜索ASCII”进行文本字符串查找,找到字符串后,在底部有文本字符串“登录失败.账号或密码错误!”双击后来到这里:
004108C5    F2:AE           REPNE SCAS BYTE PTR ES:[EDI]
004108C7    F7D1            NOT ECX
004108C9    49              DEC ECX
004108CA    75 0D           JNZ SHORT 脱壳.004108D9
004108CC    C786 30040000 3>MOV DWORD PTR DS:[ESI+430],脱壳.00415A34   ; 登录失败.账号或密码错误!
004108D6    5F              POP EDI
004108D7    5E              POP ESI
004108D8    C3              RETN
我们往上走,找关键跳,找到如下跳转:
00410813    57              PUSH EDI
00410814    8B86 1C040000   MOV EAX,DWORD PTR DS:[ESI+41C]
0041081A    85C0            TEST EAX,EAX
0041081C    0F84 98000000   JE 脱壳.004108BA                              //关键跳,右键选择汇编,把“JE 004108BA”修改为“jmp 00410894”
00410822    8B8E 20040000   MOV ECX,DWORD PTR DS:[ESI+420]
00410828    2BC8            SUB ECX,EAX
0041082A    83E1 F0         AND ECX,FFFFFFF0
0041082D    83F9 30         CMP ECX,30
00410830    0F85 84000000   JNZ 脱壳.004108BA
我们在地址0041081C中看到关键跳,右键选择汇编,把“JE 004108BA”修改为“jmp 00410894”就是把这里直接跳转到“00410894”因为这里是第一个返回,我们就让它直接返回。
        上面的修改是我们输入任意用户名密码,不管服务器返回信息正确与否,我们都能进行登录,但是因为用户名密码有到服务器验证,如果断网或者服务器关闭,服务器没有返回信息,那我们就还是无法登录,所以我们还要改两个地方,让我们输入的用户名密码不进行验证。
继续在OD中右键“搜索ASCII”进行文本字符串查找,找到字符串后,在底部有文本字符串“服务器忙,请稍候再试”双击后来到这里:
00410746    C786 30040000 085A4100  MOV DWORD PTR DS:[ESI+430],脱壳.00415A08   ; 服务器忙,请稍候再试.
00410750    5F                      POP EDI
00410751    5E                      POP ESI
00410752    33C0                    XOR EAX,EAX
00410754    5B                      POP EBX
00410755    81C4 1C020000           ADD ESP,21C
0041075B    C3                      RETN
我们还是往上找关键跳,找到地址“0041067D”这个跳转:
00410673    E8 68FDFFFF             CALL 脱壳.004103E0             //这个CALL一会儿进去看看
00410678    83C4 0C                 ADD ESP,0C
0041067B    85C0                    TEST EAX,EAX
0041067D    0F84 C3000000           JE 脱壳.00410746                 //这个跳我们直接把它NOP掉
00410683    C786 38040000 01000000  MOV DWORD PTR DS:[ESI+438],1
我们把地址“0041067D”这个跳我们直接把它NOP掉,在地址“0041067D”处右键选择“二进制”-“使用NOP填充”。
我们还看到在刚刚修改的那个跳转上面还有一个CALL,我们选中这个CALL回车进去看看,
00410673    E8 68FDFFFF             CALL 脱壳.004103E0
选中上面地址的CALL按回车键进入后到如下代码:
004103E0    51                      PUSH ECX
004103E1    53                      PUSH EBX
004103E2    8B5C24 14               MOV EBX,DWORD PTR SS:[ESP+14]
004103E6    55                      PUSH EBP
004103E7    56                      PUSH ESI
004103E8    8B7424 18               MOV ESI,DWORD PTR SS:[ESP+18]
004103EC    57                      PUSH EDI
004103ED    33ED                    XOR EBP,EBP
004103EF    C74424 10 02000000      MOV DWORD PTR SS:[ESP+10],2
004103F7    6A 00                   PUSH 0
004103F9    6A 00                   PUSH 0
004103FB    6A 00                   PUSH 0
004103FD    6A 00                   PUSH 0
004103FF    68 A8594100             PUSH 脱壳.004159A8                         ; IE6.0
00410404    FF15 9C234100           CALL DWORD PTR DS:[<&WININET.InternetOpe>; WININET.InternetOpenA
0041040A    8BF8                    MOV EDI,EAX
0041040C    85FF                    TEST EDI,EDI
0041040E    74 41                   JE SHORT 脱壳.00410451                     //这里右键选择汇编,把“JE SHORT 00410451”修改为“jmp 00410481”
00410410    8B4424 18               MOV EAX,DWORD PTR SS:[ESP+18]
00410414    6A 00                   PUSH 0
看到第一个Call下面地址“0041040E”有个跳转,我们就修改这个跳转,在地址“0041040E”处右键选择汇编,把“JE SHORT 00410451”修改为“jmp 00410481”。
到这里,我们的修改就大功告成了,然后OD中点右键选“复制到可执行文件”-“所有修改”,选择“全部复制”,在跳出的新窗口中还是点右键,选“保存到文件”即可!
好了,到此,我们打开刚刚保存好的已破解外挂程序,输入任意用户名密码点选“登录”,便可使用了。但是用一段时间后你会发现,软件就不起作用了,我再试试没有破解的脱壳软件,还是一样的问题,由此分析,这个软件有自校验,下面我们来讲如何去自校验。
重新OD载入刚刚破解好的软件,在OD底部的命令框里输入“bp CreateFileA”按F9运行软件。程充断下来后,我们注意看OD里右下框的“注释”,我总共按了138下F9才出现如下信息:
0012C8F8   736DB6EA  /CALL 到 CreateFileA 来自 DDRAW.736DB6E4                                    //注意看这里
0012C8FC   0012CA80  |FileName = "D:\咪兔QQ游戏外挂\Me2QQZhaoChaV20\脱壳.exe"            //还有注意看这里
0012C900   80000000  |Access = GENERIC_READ
0012C904   00000001  |ShareMode = FILE_SHARE_READ
0012C908   00000000  |pSecurity = NULL
0012C90C   00000003  |Mode = OPEN_EXISTING
0012C910   00000080  |Attributes = NORMAL
0012C914   00000000  \hTemplateFile = NULL
根据每个人的电脑不同,按F9的次数可能会有所不同,但是出现上面信息时就要注意了,主要是看第一行“来自”后面的内容以及第二行“FileName =”后面的内容。记住这里一定要看到CALL 到 CreateFileA 来自0040FA45时停下来,重点是看0040出现在这里时,我们才停下来看到如下信息。
03CEF880   0040FA4B  /CALL 到 CreateFileA 来自 脱壳.0040FA45                       //这里只要是0040开头就对了
03CEF884   03CEF8BC  |FileName = "D:\咪兔QQ游戏外挂\Me2QQZhaoChaV20\脱壳.exe"
03CEF888   80000000  |Access = GENERIC_READ
03CEF88C   00000000  |ShareMode = 0
03CEF890   00000000  |pSecurity = NULL
03CEF894   00000004  |Mode = OPEN_ALWAYS
03CEF898   00000000  |Attributes = 0
03CEF89C   00000000  \hTemplateFile = NULL
这时我们按Ctrl+F9执行到返回,再按一下F8返回到这里:
0040FA4B    8BF0            mov esi,eax
0040FA4D    83FE FF         cmp esi,-0x1
0040FA50    75 04           jnz X脱壳.0040FA56
0040FA52    33C0            xor eax,eax
0040FA54    5E              pop esi
0040FA55    C3              retn
我们再按Ctrl+F9执行到返回,再按一下F8返回到这里:
00404E5A    8BF0            mov esi,eax
00404E5C    83C4 04         add esp,0x4
00404E5F    85F6            test esi,esi
00404E61    75 23           jnz X脱壳.00404E86
这时我们往下看,看到如下信息:
00404EA8    8B57 1C         mov edx,dword ptr ds:[edi+0x1C]
00404EAB    83C4 08         add esp,0x8
00404EAE    33C9            xor ecx,ecx
00404EB0    3BC2            cmp eax,edx
00404EB2    0F95C1          setne cl           //注意这里比较相等就为假,不相等就为真
在这里setne cl就是关键验证比较相等就为假,不相等就为真,我们把它修改成sete cl后比较相等就为真,不相等就为假。
现在终于大功告成,OD中点右键选“复制到可执行文件”-“所有修改”,选择“全部复制”,在跳出的新窗口中还是点右键,选“保存到文件”即可!

咪兔QQ找茬助手1.3.20原版、脱壳版、破解版以及此破文请在此下载!
QQ截图20120909170916.jpg
咪兔QQ找茬助手1.3.20.zip (455.13 KB, 下载次数: 4, 售价: 1 枚飘云币)
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表