首页
社区
课程
招聘
[旧帖] [原创]排课高手破解记录(求邀请码) 0.00雪花
发表于: 2010-10-6 09:50 1653

[旧帖] [原创]排课高手破解记录(求邀请码) 0.00雪花

2010-10-6 09:50
1653
前些天写了个emu8086的破解记录求得了邀请码无奈自己发现时已经过期了。所以又去华军下载了一个破解了,再次申请。希望不要嫌小弟烦人

查壳无壳 VB所写。

随便输入注册信息:aaaaaaaaaaaaaaaaaaaa

点击注册提示:注册码错误注册失败!

OD载入查找字符串:
注册码错误          提示未找到

下断rtcMsgBox

再次注册 可以断下 从系统函数出来 来到用户领空:

0082DF62                          .  50                      push eax
0082DF63                          .  8D4D B0                 lea ecx,dword ptr ss:[ebp-50]
0082DF66                          .  6A 30                   push 30                                      ; /Arg2 = 00000030
0082DF68                          .  51                      push ecx                                     ; |Arg1
0082DF69                          .  C745 B0 08400000        mov dword ptr ss:[ebp-50],4008               ; |错误调用!!
0082DF70                          .  FF15 D4104000           call dword ptr ds:[<&MSVBVM60.#595>]         ; \rtcMsgBox
0082DF76                          .  8D55 C0                 lea edx,dword ptr ss:[ebp-40]

向上寻找找不到关键跳转。。  从这个函数出来来到:
004DFD46                          .  83F8 04                 cmp eax,4
004DFD49                          . /75 3F                   jnz short pkgs.004DFD8A                            ;  这里不跳是C类注册成功!!eax == 4
004DFD4B                          . |C745 FC 11000000        mov dword ptr ss:[ebp-4],11                        ;  Case 4 of switch 004DFC86
004DFD52                          . |68 70CC4300             push pkgs.0043CC70
004DFD57                          . |8B45 D8                 mov eax,dword ptr ss:[ebp-28]
004DFD5A                          . |50                      push eax
004DFD5B                          . |FF15 74104000           call dword ptr ds:[<&MSVBVM60.__vbaStrCat>]        ;  MSVBVM60.__vbaStrCat
004DFD61                          . |8BD0                    mov edx,eax
004DFD63                          . |8D4D C0                 lea ecx,dword ptr ss:[ebp-40]
004DFD66                          . |FFD7                    call edi
004DFD68                          . |8D4D C0                 lea ecx,dword ptr ss:[ebp-40]
004DFD6B                          . |51                      push ecx
004DFD6C                          . |E8 AFE03400             call pkgs.0082DE20
004DFD71                          . |8D4D C0                 lea ecx,dword ptr ss:[ebp-40]
004DFD74                          . |FF15 34134000           call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]       ;  MSVBVM60.__vbaFreeStr
004DFD7A                          . |E9 82000000             jmp pkgs.004DFE01
004DFD7F                          > |BB 08400000             mov ebx,4008
004DFD84                          . |8B35 20124000           mov esi,dword ptr ds:[<&MSVBVM60.__vbaVarCat>]     ;  MSVBVM60.__vbaVarCat
004DFD8A                          > \C745 FC 12000000        mov dword ptr ss:[ebp-4],12                        ;  Default case of switch 004DFC86
004DFD91                          .  BA 58B34300             mov edx,pkgs.0043B358
004DFD96                          .  B9 38549600             mov ecx,pkgs.00965438
004DFD9B                          .  FF15 5C124000           call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>]       ;  MSVBVM60.__vbaStrCopy
004DFDA1                          .  C745 FC 13000000        mov dword ptr ss:[ebp-4],13
004DFDA8                          .  C705 4C549600 00000000  mov dword ptr ds:[96544C],0
004DFDB2                          .  C745 FC 14000000        mov dword ptr ss:[ebp-4],14
004DFDB9                          .  68 98CD4300             push pkgs.0043CD98
004DFDBE                          .  8B15 1C539600           mov edx,dword ptr ds:[96531C]
004DFDC4                          .  52                      push edx
004DFDC5                          .  FF15 74104000           call dword ptr ds:[<&MSVBVM60.__vbaStrCat>]        ;  MSVBVM60.__vbaStrCat
004DFDCB                          .  8BD0                    mov edx,eax
004DFDCD                          .  8D4D C0                 lea ecx,dword ptr ss:[ebp-40]
004DFDD0                          .  FFD7                    call edi
004DFDD2                          .  50                      push eax
004DFDD3                          .  68 E4CE4300             push pkgs.0043CEE4
004DFDD8                          .  FF15 74104000           call dword ptr ds:[<&MSVBVM60.__vbaStrCat>]        ;  MSVBVM60.__vbaStrCat
004DFDDE                          .  8BD0                    mov edx,eax
004DFDE0                          .  8D4D BC                 lea ecx,dword ptr ss:[ebp-44]
004DFDE3                          .  FFD7                    call edi
004DFDE5                          .  8D45 BC                 lea eax,dword ptr ss:[ebp-44]
004DFDE8                          .  50                      push eax
004DFDE9                          .  E8 02E13400             call pkgs.0082DEF0                                 ;  ???
004DFDEE                          .  8D4D BC                 lea ecx,dword ptr ss:[ebp-44]

其中带???是call向错误调用的。004DFD7A  处的jmp可以跳过这里的错误。这样只能让004DFD49 处的jnz不实现

在004DFD46 处下断重新注册断下来

这时将eax改为4 接着运行提示c类注册成功。

接着向上分析发现这片代码貌似像一个消息处理的分支有很多cmp eax,xxx的语句。其中eax若与xxx相等则执行后面的指令。

不如直接在004DFC81  处下断再次注册并中断下来将eax的值置为1 此时提示A0类注册成功

再多试验几次将eax设为不同的值发现当eax = 1 时A0类注册成功

eax = 2是A类注册成功

eax = 3是B类注册成功

eax = 4是C类注册成功

而eax的值是在004DFC81处 由96544C内存地址处传递过来的。。

硬件断点 96544C  大小4 类型访问再次注册。

中断在:

007470D1                           .  66:3BF0               cmp si,ax                             ;  这里如果si == 0则完蛋!!不为零则B级成功
007470D4                           .  74 0C                 je short pkgs.007470E2
007470D6                           .  C705 4C549600 0300000>mov dword ptr ds:[96544C],3           ;  !!!
007470E0                           .  EB 0A                 jmp short pkgs.007470EC
007470E2                           >  A3 4C549600           mov dword ptr ds:[96544C],eax         ;  !!!
007470E7                           .  A3 E4529600           mov dword ptr ds:[9652E4],eax
007470EC                           >  9B                    wait
007470ED                           .  68 7D717400           push pkgs.0074717D
007470F2                           .  EB 60                 jmp short pkgs.00747154
007470F4                           .  8D55 B0               lea edx,dword ptr ss:[ebp-50]
007470F7                           .  8D45 B4               lea eax,dword ptr ss:[ebp-4C]
007470FA                           .  52                    push edx
007470FB                           .  50                    push eax
007470FC                           .  6A 02                 push 2
007470FE                           .  FF15 70124000         call dword ptr ds:[<&MSVBVM60.__vbaFr>;  MSVBVM60.__vbaFreeStrList

这里对96544C 地址赋值。。

往上寻找发现007470D4 处的  je short pkgs.007470E2 很关键这里如果比较的两个寄存器值不相等则放进去3 意味着B类注册成功。

往下点击到007470EC 处的  wait发现有几处跳转来到这里。

往上寻找跳转来源:(通过分析发现)
00746BCD                           .  FF15 58114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>;  MSVBVM60.__vbaStrCmp
00746BD3                           .  85C0            test eax,eax
00746BD5                           .  74 17           je short pkgs.00746BEE
00746BD7                           .  B8 01000000     mov eax,1
00746BDC                           .  03C3            add eax,ebx
00746BDE                           .  0F80 BD050000   jo pkgs.007471A1
00746BE4                           .  8945 E4         mov dword ptr ss:[ebp-1C],eax
00746BE7                           .  33DB            xor ebx,ebx
00746BE9                           .^ E9 D3F9FFFF     jmp pkgs.007465C1
00746BEE                           >  83C3 01         add ebx,1
00746BF1                           .  0F80 AA050000   jo pkgs.007471A1
00746BF7                           .  891D 4C549600   mov dword ptr ds:[96544C],ebx
00746BFD                           .  E9 EA040000     jmp pkgs.007470EC

在00746BD3下普通断点

接着往下分析:
00746ECB                           .  FF15 60114000   call dword ptr ds:[<&MSVBVM60.__vbaVarTst>;  MSVBVM60.__vbaVarTstEq
00746ED1                           .  8D8D 10FFFFFF   lea ecx,dword ptr ss:[ebp-F0]
00746ED7                           .  8985 54FEFFFF   mov dword ptr ss:[ebp-1AC],eax            ;  这里eax如果不等于0则A级成功

00746F23                           . /74 0F           je short pkgs.00746F34                    ;  这里不跳A级必成功 跳则可能完蛋!!
00746F25                           . |C705 4C549600 0>mov dword ptr ds:[96544C],2

接着往下分析:
00747089                           .  8D8D 10FFFFFF   lea ecx,dword ptr ss:[ebp-F0]
0074708F                           .  8BF0            mov esi,eax                               ;  这里eax不应当是0

007470D1                           .  66:3BF0         cmp si,ax                                 ;  这里如果si == 0则完蛋!!不为零则B级成功
007470D4                           .  74 0C           je short pkgs.007470E2

再次注册中断在00746BD3 此时发现寄存器:
EAX 0017516C UNICODE "aaaaaa-aaaaaa-aaaaaa"
EDX 00172184 UNICODE "bh9x93-3xh2dd-86d9gp"
EIP 00746BCD pkgs.00746BCD

这个edx处的字符串可能就是注册码了,,,先拷贝下来。

执行到00746BD5    je short pkgs.00746BEE 时修改标志位让其跳转

接着到00746BF7   mov dword ptr ds:[96544C],ebx  此时ebx值是1,将其修改为4

F9运行提示C类注册成功

这样发现一个规律96544C 地指处的值决定着注册是否成功和注册的级别。。

保留96544C处的硬件断点重新载入

中断在:
00740883                           .  C705 4C549600 030000>mov dword ptr ds:[96544C],3
0074088D                           .^ E9 A8FEFFFF          jmp pkgs.0074073A

继续F9
来到主界面提示已注册

但点击注册按钮中断在:
007470E2                              A3 4C549600          mov dword ptr ds:[96544C],eax             ;  !!!
007470E7                              A3 E4529600          mov dword ptr ds:[9652E4],eax

此时eax = 0, 继续F9则来到注册框提示未注册!!

可以将007470D4  指令nop掉

将007470D6处改为mov dword ptr ds:[96544C], 4

并将00740883   处的mov dword ptr ds:[96544C],3 改为:mov dword ptr ds:[96544C], 4 保存运行

则提示注册,点击注册按钮来到注册对话框提示已进行C类注册

运行一个没破解的将上面找到的貌似注册码的东西输入进去提示A0类注册成功。。

文中提到的软件可以到这里下载:
http://www.vdisk.cn/user/admin/gudujianjsk?1286330503781

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 209
活跃值: (839)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很多东西都没说清楚。
2010-10-28 17:10
0
雪    币: 7
活跃值: (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
根据00746BD3地址 做了4个内存注册机
2010-10-29 00:46
0
雪    币: 7
活跃值: (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
以下是我机器的注册信息

用户码:8461368XXXXXX
AO类注册:d2f38d-axpfd9-87x83x
A类注册:d2f38d-5xpfd9-77x83x
B类注册:e338df-adh399-67fg29
C类注册:e338df-5dh399-57fg29
根据注册码  - - 可以看出 B-C  只要第8位字符-5  第15位-1 就OK了  A0-A也是一样 - - ....这注册码....
2010-10-29 00:56
0
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
路过,顶一下。
2010-10-29 09:38
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼猪很强大!
2010-10-29 11:09
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
路过,学习了!
2010-10-29 11:11
0
雪    币: 136
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
没有分析,不过第一直觉,这个可能是个忽悠人的假注册码,可能在一定条件下会触发新的注册判断
2010-10-29 12:34
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
高手啊高手。
2010-10-29 12:45
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
2010-10-29 12:47
0
雪    币: 81
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
看起来真复杂…
唉,继续努力呀我…
          —来自手机端
2010-10-30 08:45
0
雪    币: 60
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
羡慕啊,学基础中
2010-10-30 08:57
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
先支持再说吧,,,,
2010-10-30 09:32
0
雪    币: 7
活跃值: (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
注册码是真的,但是这程序还有网络验证  那个应该也要拆掉!~  断开他的服务器  用HOST处理一下 就可以安全的用了
2010-11-1 16:37
0
雪    币: 7
活跃值: (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
因为作者说了 他验证的是学校 如果修改就会出错 所以可见 他的报复就是发现 -- 所以你不让他发现
2010-11-1 16:38
0
雪    币: 70
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
在本地虚拟一个服务端不就OK了吗
2010-11-2 00:28
0
雪    币: 7
活跃值: (31)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
不用的  那个直接断开就行了
2010-11-2 00:55
0
游客
登录 | 注册 方可回帖
返回
//