首页
社区
课程
招聘
[旧帖] [讨论]破解野狼QQ军旗刷分器的心得以及难点 0.00雪花
发表于: 2009-6-21 20:00 1427

[旧帖] [讨论]破解野狼QQ军旗刷分器的心得以及难点 0.00雪花

2009-6-21 20:00
1427
破解野狼QQ军旗刷分器的心得以及难点
该外挂是用一个MFC的machine来注册的,双击它,出现一个自动生成机器码的对话框,要求输入验证码。我的思路是,用OD载入,F9运行,出现注册窗口后,随便输入123456,出现一个”注册“信息框,提示有“对不起,验证码有误”的信息。在OD中,寻找MessageboxA函数,发现有两个,然后均设为断点。来到0042F352  /$  8B4424 08     MOV EAX,DWORD PTR SS:[ESP+8]                     ;  machine.004472C0
0042F356  |.  56            PUSH ESI
0042F357  |.  85C0          TEST EAX,EAX
0042F359  |.  8BF1          MOV ESI,ECX
0042F35B  |.  75 08         JNZ SHORT machine.0042F365
0042F35D  |.  E8 584D0000   CALL machine.004340BA
0042F362  |.  8B40 10       MOV EAX,DWORD PTR DS:[EAX+10]
0042F365  |>  85F6          TEST ESI,ESI
0042F367  |.  75 04         JNZ SHORT machine.0042F36D
0042F369  |.  33C9          XOR ECX,ECX
0042F36B  |.  EB 03         JMP SHORT machine.0042F370
0042F36D  |>  8B4E 1C       MOV ECX,DWORD PTR DS:[ESI+1C]
0042F370  |>  FF7424 10     PUSH DWORD PTR SS:[ESP+10]                       ; /Style
0042F374  |.  50            PUSH EAX                                         ; |Title
0042F375  |.  FF7424 10     PUSH DWORD PTR SS:[ESP+10]                       ; |Text
0042F379  |.  51            PUSH ECX                                         ; |hOwner
0042F37A  |.  FF15 34A44300 CALL DWORD PTR DS:[<&USER32.MessageBoxA>]        ; \MessageBoxA (就是来到这里)
0042F380  |.  5E            POP ESI
0042F381  \.  C2 0C00       RETN 0C

然后根据其返回(RETN 0C),来到
004027B0   .  6A 00         PUSH 0
004027B2   .  68 C0724400   PUSH machine.004472C0                            ;  注册
004027B7   .  68 AC724400   PUSH machine.004472AC                            ;  对不起,验证码有误
004027BC   .  E8 91CB0200   CALL machine.0042F352                            ;  (Initial CPU selection)  
004027C1   .  C3            RETN  (就是来到这里)

扩大范围仔细观察周围,发现是这样子
004027A4      90            NOP
004027A5      90            NOP
004027A6      90            NOP
004027A7      90            NOP
004027A8      90            NOP
004027A9      90            NOP
004027AA      90            NOP
004027AB      90            NOP
004027AC      90            NOP
004027AD      90            NOP
004027AE      90            NOP
004027AF      90            NOP
004027B0   .  6A 00         PUSH 0
004027B2   .  68 C0724400   PUSH machine.004472C0                            ;  注册
004027B7   .  68 AC724400   PUSH machine.004472AC                            ;  对不起,验证码有误
004027BC   .  E8 91CB0200   CALL machine.0042F352                            ;  (Initial CPU selection)
004027C1   .  C3            RETN
004027C2      90            NOP
004027C3      90            NOP
004027C4      90            NOP
004027C5      90            NOP
004027C6      90            NOP
004027C7      90            NOP
004027C8      90            NOP
004027C9      90            NOP
004027CA      90            NOP
004027CB      90            NOP
004027CC      90            NOP
004027CD      90            NOP
004027CE      90            NOP
004027CF      90            NOP
在往前或往后找,还是找不到有什么价值的东西、、、、、、

我的结论是发现不了输入注册号比较的关键段,很是郁闷、、、、、、

该软件在天空软件中可以找到:

希望各位老师可以帮助我,给我些提示,不胜感谢。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵 顶啊  
我也想学习啊
2009-6-21 22:00
0
雪    币: 89
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我帮你分析一下吧。首先,这个可以查到字符串
00402324   .  52            PUSH EDX                                 ; |Arg1
00402325   .  E8 7FA70000   CALL machine.0040CAA9                    ; \machine.0040CAA9
0040232A   .  83C4 14       ADD ESP,14
0040232D   .  85C0          TEST EAX,EAX
0040232F   /75 15           JNZ SHORT machine.00402346
00402331   |8BCE            MOV ECX,ESI
00402333   |E8 78000000     CALL machine.004023B0
00402338   |6A 00           PUSH 0
0040233A   |68 C0714400     PUSH machine.004471C0                    ; 注册成功
0040233F   |68 AC714400     PUSH machine.004471AC                    ; 恭喜您,注册成功!
00402344   |EB 0C           JMP SHORT machine.00402352
00402346   \6A 00           PUSH 0
00402348    68 A4714400     PUSH machine.004471A4                    ; 错误
0040234D    68 8C714400     PUSH machine.0044718C                    ; 对不起,您的注册码有误

0040232F   . /75 15         JNZ SHORT machine.00402346--------这个跳向注册失败,nop掉就行
但是NOP掉之后发现依然是注册错误。这就很奇怪了,我们再次查下字符串,发现还有另外一个注册错误..
004027B0      6A 00         PUSH 0
004027B2      68 C0724400   PUSH machine.004472C0                    ;  注册
004027B7   .  68 AC724400   PUSH machine.004472AC                    ;  对不起,验证码有误
004027BC   .  E8 91CB0200   CALL machine.0042F352
004027C1   .  C3            RETN

在这里,而且可以断下来,说明无论你输入什么,必然错误!
那么这就奇怪了,好好的做这个干吗?
我们修改004027B0      6A 00         PUSH 0
把push 0 改为jmp 00402324
就跳到注册成功上面的关键call上面.保存之后在00402325   .  E8 7FA70000   CALL machine.0040CAA9
下断点,可以在寄存器上追到码,但是下面有一个TEST EAX,EAX.这里就奇怪了.EAX于EAX相比,相等就跳,不相等就不跳.
EAX肯定等于EAX啊?没悬念的..所以必然跳..
然后就注册失败..(不知道作者为什么要这么写)
但是拿真注册码却可以注册成功...
这一点我就有点不明白了..
2009-7-28 18:43
0
雪    币: 111
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我倒觉得问题可能会在这里面!

00402333   |E8 78000000     CALL machine.004023B0

就是这个子程序的调用这里!
2009-7-28 21:45
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
分析了  半个多小时  问题依然在   卧槽同学 的疑问  我也有。。。那么期待高手指点咯。。。
2009-7-29 09:46
0
雪    币: 127
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
3楼,TEST EAX,EAX做什么用的,看看基础知识吧。

注:
test   eax,   eax的目的就是查看eax的值是否为0.
等效于:jz(eax==0的时候跳转)     jnz(eax!=0的时候跳转)
2009-9-3 00:25
0
游客
登录 | 注册 方可回帖
返回
//