飞叶 发表于 2012-9-7 00:29

咪兔QQ游戏五子棋助手连连看助手等全系列外挂破解教程

本帖最后由 飞叶 于 2012-9-9 18:59 编辑

此破文中的软件自校验问题已解决,详细请看我的第二期教程
http://www.52pojie.cn/thread-165452-1-1.html

      我女朋友爱玩五子棋,最近跟女朋友玩五子棋,玩不过她,想下个外挂跟她比比,找了一下,就看到一个“咪兔QQ游戏五子棋助手V1.1.1”,于是下了试试,果然不错,但要收费,收费就收费,还给我按时长收费,试用版只能下40步棋后自动退出,就算去论坛注册个用户名,也只能用40分钟就会自动退出,外挂试用版自动退出也就算了,还要在游戏里发条信息告诉我女朋友说我正在使用外挂,你说火大不火大,我女朋友生气,我就生气,我生气那就只好破解了!
    如果你比我菜,你就看下面,如果你是高手,下面还有个问题请教,如有不对的地方,或者更好的方法,也请兄弟们也就不要吝啬给我指点一下,懂得分享,享受共享,互相学习,共同进步!
废话不多说了,下面开始……
    软件用PE查壳,是UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo壳,这壳简单,ESP定律轻松搞定,或者用脱壳机也可以自动脱,不会脱壳的朋友自己去在百度搜一下“完美UPX脱壳机
0.3简体中文免费版”,下个脱壳机脱壳。
脱壳完后OD载入,在OD中右键“搜索ASCII”进行文本字符串查找,找到字符串后,在底部有文本字符串“登录失败.账号或密码错误!”双击后来到这里:0040DC60 /$ 56 PUSH ESI
0040DC61 |. 8BF1 MOV ESI,ECX
0040DC63 |. 57 PUSH EDI
0040DC64 |. 8B86 1C040000 MOV EAX,DWORD PTR DS:
0040DC6A |. 85C0 TEST EAX,EAX
0040DC6C 0F84 98000000 JE 已脱壳Me.0040DD0A               //注意:这里把“JE 0040DD0A”修改为“JMP 0040DCE4”
0040DC72 |. 8B8E 20040000 MOV ECX,DWORD PTR DS:
0040DC78 |. 2BC8 SUB ECX,EAX
0040DC7A |. 83E1 F0 AND ECX,FFFFFFF0
0040DC7D |. 83F9 30 CMP ECX,30
0040DC80 |. 0F85 84000000 JNZ 已脱壳Me.0040DD0A
0040DC86 |. 8B15 E8F14000 MOV EDX,DWORD PTR DS:[<&MSVCP60.`std::ba>; MSVCP60.`std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Nullstr'::`2'::_C
0040DC8C |. 8BC8 MOV ECX,EAX
0040DC8E |. 8B41 04 MOV EAX,DWORD PTR DS:
0040DC91 |. 85C0 TEST EAX,EAX
0040DC93 |. 75 02 JNZ SHORT 已脱壳Me.0040DC97
0040DC95 |. 8BC2 MOV EAX,EDX
0040DC97 |> 53 PUSH EBX
0040DC98 |. 8A18 MOV BL,BYTE PTR DS:
0040DC9A |. 80FB 40 CMP BL,40
0040DC9D |. 5B POP EBX
0040DC9E |. 75 6A JNZ SHORT 已脱壳Me.0040DD0A
0040DCA0 |. 8B41 24 MOV EAX,DWORD PTR DS:
0040DCA3 |. 85C0 TEST EAX,EAX
0040DCA5 |. 75 02 JNZ SHORT 已脱壳Me.0040DCA9
0040DCA7 |. 8BC2 MOV EAX,EDX
0040DCA9 |> 8B3D 88F24000 MOV EDI,DWORD PTR DS:[<&MSVCRT.atoi>] ; msvcrt.atoi
0040DCAF |. 50 PUSH EAX ; /s
0040DCB0 |. FFD7 CALL EDI ; \atoi
0040DCB2 |. 8986 2C040000 MOV DWORD PTR DS:,EAX
0040DCB8 |. 8B86 1C040000 MOV EAX,DWORD PTR DS:
0040DCBE |. 83C4 04 ADD ESP,4
0040DCC1 |. 8B40 04 MOV EAX,DWORD PTR DS:
0040DCC4 |. 85C0 TEST EAX,EAX
0040DCC6 |. 75 05 JNZ SHORT 已脱壳Me.0040DCCD
0040DCC8 |. A1 E8F14000 MOV EAX,DWORD PTR DS:[<&MSVCP60.`std::ba>
0040DCCD |> 40 INC EAX
0040DCCE |. 50 PUSH EAX
0040DCCF |. FFD7 CALL EDI
0040DCD1 |. 83C4 04 ADD ESP,4
0040DCD4 |. 83F8 01 CMP EAX,1
0040DCD7 |. 75 22 JNZ SHORT 已脱壳Me.0040DCFB
0040DCD9 |. 8BCE MOV ECX,ESI
0040DCDB |. E8 D0FEFFFF CALL 已脱壳Me.0040DBB0
0040DCE0 |. 85C0 TEST EAX,EAX
0040DCE2 |. 74 08 JE SHORT 已脱壳Me.0040DCEC
0040DCE4 |. 5F POP EDI
0040DCE5 |. B8 01000000 MOV EAX,1
0040DCEA |. 5E POP ESI
0040DCEB |. C3 RETN
0040DCEC |> C786 30040000>MOV DWORD PTR DS:,已脱壳Me.00413BF>; 登录失败.未知错误2!
0040DCF6 |. 5F POP EDI
0040DCF7 |. 33C0 XOR EAX,EAX
0040DCF9 |. 5E POP ESI
0040DCFA |. C3 RETN
0040DCFB |> C786 30040000>MOV DWORD PTR DS:,已脱壳Me.00413BE>; 账号兔币不足无法登录!
0040DD05 |. 5F POP EDI
0040DD06 |. 33C0 XOR EAX,EAX
0040DD08 |. 5E POP ESI
0040DD09 |. C3 RETN
0040DD0A |> 8DBE 10030000 LEA EDI,DWORD PTR DS:
0040DD10 |. 83C9 FF OR ECX,FFFFFFFF
0040DD13 |. 33C0 XOR EAX,EAX
0040DD15 |. F2:AE REPNE SCAS BYTE PTR ES:
0040DD17 |. F7D1 NOT ECX
0040DD19 |. 49 DEC ECX
0040DD1A |. 75 0D JNZ SHORT 已脱壳Me.0040DD29
0040DD1C |. C786 30040000>MOV DWORD PTR DS:,已脱壳Me.00413BC>; 登录失败.账号或密码错误!
0040DD26 |. 5F POP EDI
0040DD27 |. 5E POP ESI
0040DD28 |. C3 RETN
0040DD29 |> C786 30040000>MOV DWORD PTR DS:,已脱壳Me.00413BB>; 登录失败.未知错误1!
0040DD33 |. 5F POP EDI
0040DD34 |. 33C0 XOR EAX,EAX
0040DD36 |. 5E POP ESI
0040DD37 \. C3 RETN
我们通过上面可以到看,这个外挂的登陆相关的跳转,我们把:
0040DC6C   /0F84 98000000 JE 已脱壳Me.0040DD0A   
修改为:JMP 0040DCE4后确定变成如下格式:
0040DC6C   /EB 76         JMP SHORT 已脱壳Me.0040DCE4

继续在OD中右键“搜索ASCII”进行文本字符串查找,找到字符串后,在底部有文本字符串“服务器忙,请稍候再试”双击后来到这里:0040DAB9 |. 53 PUSH EBX
0040DABA |. 50 PUSH EAX
0040DABB |. C74424 18 040>MOV DWORD PTR SS:,104
0040DAC3 |. E8 68F2FFFF CALL 已脱壳Me.0040CD30               //注意:这个CALL我们一会儿回车键进去看看
0040DAC8 |. 83C4 0C ADD ESP,0C
0040DACB |. 85C0 TEST EAX,EAX
0040DACD 0F84 C3000000 JE 已脱壳Me.0040DB96               //注意:这里把“JE 0040DB96”修改为“jmp 0040DB87”
0040DAD3 |. C786 38040000>MOV DWORD PTR DS:,1
0040DADD |. 8DBE 18040000 LEA EDI,DWORD PTR DS:
0040DAE3 |. 6A 3B PUSH 3B
0040DAE5 |. 57 PUSH EDI
0040DAE6 |. 53 PUSH EBX
0040DAE7 |. E8 54CEFFFF CALL 已脱壳Me.0040A940
0040DAEC |. 8B47 04 MOV EAX,DWORD PTR DS:
0040DAEF |. 33DB XOR EBX,EBX
0040DAF1 |. 83C4 0C ADD ESP,0C
0040DAF4 |. 3BC3 CMP EAX,EBX
0040DAF6 |. 0F84 8B000000 JE 已脱壳Me.0040DB87
0040DAFC |. 8B4F 08 MOV ECX,DWORD PTR DS:
0040DAFF |. 2BC8 SUB ECX,EAX
0040DB01 |. 83E1 F0 AND ECX,FFFFFFF0
0040DB04 |. 83F9 30 CMP ECX,30
0040DB07 |. 75 7E JNZ SHORT 已脱壳Me.0040DB87
0040DB09 |. 8B86 1C040000 MOV EAX,DWORD PTR DS:
0040DB0F |. 8B0D DCF14000 MOV ECX,DWORD PTR DS:[<&MSVCP60.std::bas>; MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::npos
0040DB15 |. 83C0 20 ADD EAX,20
0040DB18 |. 8A10 MOV DL,BYTE PTR DS:
0040DB1A |. 895C24 14 MOV DWORD PTR SS:,EBX
0040DB1E |. 885424 10 MOV BYTE PTR SS:,DL
0040DB22 |. 895C24 18 MOV DWORD PTR SS:,EBX
0040DB26 |. 895C24 1C MOV DWORD PTR SS:,EBX
0040DB2A |. 8B11 MOV EDX,DWORD PTR DS:
0040DB2C |. 52 PUSH EDX
0040DB2D |. 53 PUSH EBX
0040DB2E |. 50 PUSH EAX
0040DB2F |. 8D4C24 1C LEA ECX,DWORD PTR SS:
0040DB33 |. FF15 E0F14000 CALL DWORD PTR DS:[<&MSVCP60.std::basic_>; MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign
0040DB39 |. 8B4424 14 MOV EAX,DWORD PTR SS:
0040DB3D |. 3BC3 CMP EAX,EBX
0040DB3F |. 75 05 JNZ SHORT 已脱壳Me.0040DB46
0040DB41 |. A1 E8F14000 MOV EAX,DWORD PTR DS:[<&MSVCP60.`std::ba>
0040DB46 |> 50 PUSH EAX ; /s
0040DB47 |. FF15 88F24000 CALL DWORD PTR DS:[<&MSVCRT.atoi>] ; \atoi
0040DB4D |. 8B4C24 18 MOV ECX,DWORD PTR SS:
0040DB51 |. 83C4 04 ADD ESP,4
0040DB54 |. 3BCB CMP ECX,EBX
0040DB56 |. 8986 3C040000 MOV DWORD PTR DS:,EAX
0040DB5C |. 74 29 JE SHORT 已脱壳Me.0040DB87
0040DB5E |. 8A41 FF MOV AL,BYTE PTR DS:
0040DB61 |. 3AC3 CMP AL,BL
0040DB63 |. 74 18 JE SHORT 已脱壳Me.0040DB7D
0040DB65 |. 3C FF CMP AL,0FF
0040DB67 |. 74 14 JE SHORT 已脱壳Me.0040DB7D
0040DB69 |. FEC8 DEC AL
0040DB6B |. 5F POP EDI
0040DB6C |. 8841 FF MOV BYTE PTR DS:,AL
0040DB6F |. 5E POP ESI
0040DB70 |. B8 01000000 MOV EAX,1
0040DB75 |. 5B POP EBX
0040DB76 |. 81C4 1C020000 ADD ESP,21C
0040DB7C |. C3 RETN
0040DB7D |> 49 DEC ECX
0040DB7E |. 51 PUSH ECX
0040DB7F |. E8 2E040000 CALL 已脱壳Me.0040DFB2
0040DB84 |. 83C4 04 ADD ESP,4
0040DB87 |> 5F POP EDI
0040DB88 |. 5E POP ESI
0040DB89 |. B8 01000000 MOV EAX,1
0040DB8E |. 5B POP EBX
0040DB8F |. 81C4 1C020000 ADD ESP,21C
0040DB95 |. C3 RETN
0040DB96 |> C786 30040000>MOV DWORD PTR DS:,已脱壳Me.00413B9>; 服务器忙,请稍候再试.
0040DBA0 |. 5F POP EDI
0040DBA1 |. 5E POP ESI
0040DBA2 |. 33C0 XOR EAX,EAX
0040DBA4 |. 5B POP EBX
0040DBA5 |. 81C4 1C020000 ADD ESP,21C
0040DBAB \. C3 RETN在上面,我们往上走,可以看到,这里的关键跳在这里,要做如下修改:
0040DACD   /0F84 C3000000 JE 已脱壳Me.0040DB96   
修改为:jmp 0040DB87后确定,变成如下格式:
0040DACD   /E9 B5000000   JMP 已脱壳Me.0040DB87

在这个跳转上面,我们还看到一个如下的CALL,
0040DAC3|.E8 68F2FFFF   CALL 已脱壳Me.0040CD30,
我们回车键进去看看,看到如下内容:0040CD30 /$ 51 PUSH ECX
0040CD31 |. 53 PUSH EBX
0040CD32 |. 8B5C24 14 MOV EBX,DWORD PTR SS:
0040CD36 |. 55 PUSH EBP
0040CD37 |. 56 PUSH ESI
0040CD38 |. 8B7424 18 MOV ESI,DWORD PTR SS:
0040CD3C |. 57 PUSH EDI
0040CD3D |. 33ED XOR EBP,EBP
0040CD3F |. C74424 10 020>MOV DWORD PTR SS:,2
0040CD47 |> 6A 00 /PUSH 0
0040CD49 |. 6A 00 |PUSH 0
0040CD4B |. 6A 00 |PUSH 0
0040CD4D |. 6A 00 |PUSH 0
0040CD4F |. 68 D83A4100 |PUSH 已脱壳Me.00413AD8 ; IE6.0
0040CD54 |. FF15 F4F34000 |CALL DWORD PTR DS:[<&WININET.InternetOp>; WININET.InternetOpenA
0040CD5A |. 8BF8 |MOV EDI,EAX
0040CD5C |. 85FF |TEST EDI,EDI
0040CD5E |. 74 41 |JE SHORT 已脱壳Me.0040CDA1                                 //注意:这里把“JE 0040CDA1”修改为“jmp 0040CDD1”
0040CD60 |. 8B4424 18 |MOV EAX,DWORD PTR SS:
0040CD64 |. 6A 00 |PUSH 0
0040CD66 |. 68 00000004 |PUSH 4000000
0040CD6B |. 6A 00 |PUSH 0
0040CD6D |. 6A 00 |PUSH 0
0040CD6F |. 50 |PUSH EAX
0040CD70 |. 57 |PUSH EDI
0040CD71 |. FF15 F8F34000 |CALL DWORD PTR DS:[<&WININET.InternetOp>; WININET.InternetOpenUrlA
0040CD77 |. 8BF0 |MOV ESI,EAX
0040CD79 |. 85F6 |TEST ESI,ESI
0040CD7B |. 74 24 |JE SHORT 已脱壳Me.0040CDA1
0040CD7D |. 8B0B |MOV ECX,DWORD PTR DS:
0040CD7F |. 8B5424 1C |MOV EDX,DWORD PTR SS:
0040CD83 |. 49 |DEC ECX
0040CD84 |. 53 |PUSH EBX
0040CD85 |. 51 |PUSH ECX
0040CD86 |. 52 |PUSH EDX
0040CD87 |. 56 |PUSH ESI
0040CD88 |. FF15 FCF34000 |CALL DWORD PTR DS:[<&WININET.InternetRe>; WININET.InternetReadFile
0040CD8E |. 85C0 |TEST EAX,EAX
0040CD90 |. 74 0F |JE SHORT 已脱壳Me.0040CDA1
0040CD92 |. 8B03 |MOV EAX,DWORD PTR DS:
0040CD94 |. 8B4C24 1C |MOV ECX,DWORD PTR SS:
0040CD98 |. BD 01000000 |MOV EBP,1
0040CD9D |. C60408 00 |MOV BYTE PTR DS:,0
0040CDA1 |> 56 |PUSH ESI
0040CDA2 |. FF15 00F44000 |CALL DWORD PTR DS:[<&WININET.InternetCl>; WININET.InternetCloseHandle
0040CDA8 |. 57 |PUSH EDI
0040CDA9 |. FF15 00F44000 |CALL DWORD PTR DS:[<&WININET.InternetCl>; WININET.InternetCloseHandle
0040CDAF |. 85ED |TEST EBP,EBP
0040CDB1 |. 75 1E |JNZ SHORT 已脱壳Me.0040CDD1
0040CDB3 |. 68 88130000 |PUSH 1388 ; /Timeout = 5000. ms
0040CDB8 |. FF15 20F14000 |CALL DWORD PTR DS:[<&KERNEL32.Sleep>] ; \Sleep
0040CDBE |. 8B4424 10 |MOV EAX,DWORD PTR SS:
0040CDC2 |. 8BD0 |MOV EDX,EAX
0040CDC4 |. 48 |DEC EAX
0040CDC5 |. 85D2 |TEST EDX,EDX
0040CDC7 |. 894424 10 |MOV DWORD PTR SS:,EAX
0040CDCB |.^ 0F85 76FFFFFF \JNZ 已脱壳Me.0040CD47
0040CDD1 |> 5F POP EDI
0040CDD2 |. 8BC5 MOV EAX,EBP
0040CDD4 |. 5E POP ESI
0040CDD5 |. 5D POP EBP
0040CDD6 |. 5B POP EBX
0040CDD7 |. 59 POP ECX
0040CDD8 \. C3 RETN从上面我们可以到看,把用户名密码进行验证,并且有个5秒的等待超时,在这里,我们都把它跳开,不验证,不等待:
0040CD5E   /74 41         JE SHORT 已脱壳Me.0040CDA1   
修改为:jmp 0040CDD1 后确定,变成如下格式:
0040CD5E   /EB 71         JMP SHORT 已脱壳Me.0040CDD1

到这里,我们的修改就大功告成了,然后OD中点右键选“复制到可执行文件”-“所有修改”,选择“全部复制”,在跳出的新窗口中还是点右键,选“保存到文件”即可!
好了,到此,我们打开刚刚保存好的已破解外挂文件,输入任意用户名密码点选“登录”,便可使用了。

现在登录后,玩了几下,问题又来,软件下了几个棋后,不会自动下了,这个问题我想应该是软件有自校验的问题,脱壳后改变了大小的原因,到这里我个人能力有限,没有办法找自校验,有能力的高手,知道原因,麻烦指导我一下,在下感谢了!

但是我不放弃,我还有第二种办法,软件即然脱壳后就有问题,那我就不脱壳,使用内存补丁搞定,我就在论坛里下了个“樱花补丁制作工具”做内存补丁,现在也教大做一下:
首先打开“樱花补丁制作工具”后,在“程序名称”那里选你要破解的那个软件,这里注意,不是选你刚刚破解过的那个,要选原版没有脱壳过的那个Me2QQWZQ,
然后在
内存地址中填:0040DC6C 原始指令中填:0F84C3修改指令中填:E9B500 点添加,
内存地址中填:0040DC6C 原始指令中填:0F84修改指令中填:EB76 点添加,
内存地址中填:0040CD5E 原始指令中填:7441修改指令中填:EB71 点添加,
如下图所示:


最后生成补丁即可大功告成,我已经写得很详细了,不懂的慢慢领吾,真的领吾不出的,可以回贴发问,我看到的就回尽量回答!

对于这个软件中自校验问题,我无法解决的问题,如有高手知道,请给我些指导,小弟感谢了!

附件我放了原版官方的外挂及脱好壳的外挂,以及我做好的内存补丁,大家可以自己学习一下,对于内存补丁,用坛里的“樱花补丁制作工具”做的内存补,360会报木马,怕的人就删除补丁自己做!还有咪兔的所有外挂软件都可以用这个方法破解!大家有空可以自己下其它的练练手!

对于补丁,有的人不懂使用,这里请注意了:要运行破解补丁,然后会自动启动软件,之后输入任意用户名和密码便可登陆使用,不要直接运行软件!


咪兔QQ游戏五子棋助手V1.1.1原版及破解补丁:





咪兔连连看助手V1.5.15原版及破解补丁:



咪兔QQ找茬助手1.3.20破解版



咪兔QQ黑白棋助手V1.0.101破解补丁:



可乐煎饼 发表于 2012-9-7 00:40

感谢楼主啊   最好出个视屏教程啊

飞叶 发表于 2012-9-7 00:46

可乐煎饼 发表于 2012-9-7 00:40 static/image/common/back.gif
感谢楼主啊   最好出个视屏教程啊

说了这么详细了还要出视频啊?天,什么世界啊?

zhaoyunjihao 发表于 2012-9-7 00:53

看下啊。。。。。。。。。。。。

q5293435 发表于 2012-9-7 02:13

那还是有暗装的,继续F8跟下去。就会发现了

老海 发表于 2012-9-7 08:12

分析的不错,但从自校验来看不像是文件大小引起的,很可能是时间校验问题。

oldman 发表于 2012-9-7 08:22

在对应相关函数上下断点啊,然后一步一步找关键啊{:17_1062:}

落晔 发表于 2012-9-7 08:27

学习一下,感谢楼主分享

8362832 发表于 2012-9-7 09:20

笨蛋,破解完之后在再次加壳不就行了,挺聪明个人,怎么犯糊涂呢?

8362832 发表于 2012-9-7 09:21

o

本帖最后由 8362832 于 2012-9-7 09:48 编辑

但是我想问的是,为什么我查你发布的连连看是 yoda's Protector v1.02 (.dll,.ocx) --> Ashkbiz Danehkar *
并不是UPX啊~!


哦是UPX,呵呵我的PEID有问题,!!!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 咪兔QQ游戏五子棋助手连连看助手等全系列外挂破解教程