首页
社区
课程
招聘
eXeScope V6.41 的注册算法破解
2004-5-3 01:07 13263

eXeScope V6.41 的注册算法破解

2004-5-3 01:07
13263
eXeScope V6.41 的注册算法破解
【软件名称】:eXeScope V6.41

【软件语言】:英文

【应用平台】:Win9x/NT/2000/XP

【难    度】:简单,献给像我等这样的菜鸟学习

【破解工具】TRW2000 1.23,winDasm V8.93汉化版(写教程用)

【软件介绍】:
  功能强大的软件资源分析工具(地球人都知道),升到了6.41版了。

  近来闲来无事,就分析了这个软件的算法,启动TRW2000,点击帮助/注册,输入:
  
  用户名:小虾
  假 码:7878787878 ←必须输够十位,等下就知道。

  按快捷键:Ctrl+N弹出TRW2000调试界面。输入万能断点:Hmemcpy,按F5键返回,点击注册按钮,被TRW拦到,来到以下地方:
 
:004C2170 8B1528EE4C00            mov edx, dword ptr [004CEE28]
:004C2176 8B12                    mov edx, dword ptr [edx]    ←EDX为你输入的注册码
:004C2178 A130EC4C00              mov eax, dword ptr [004CEC30]
:004C217D 8B00                    mov eax, dword ptr [eax]
:004C217F E82C8F0000              call 004CB0B0  ←关键Call,按F8进入
:004C2184 84C0                    test al, al ←测试al值是否为1
:004C2186 0F848D000000            je 004C2219  ←经典跳转,跳就死,暴力破解的话将这里NOP就行了。
:004C218C A1C4EE4C00              mov eax, dword ptr [004CEEC4]
:004C2191 8B00                    mov eax, dword ptr [eax]
:004C2193 E8B82AF4FF              call 00404C50
:004C2198 85C0                    test eax, eax
:004C219A 7E7D                    jle 004C2219
:004C219C 8D55F0                  lea edx, dword ptr [ebp-10]
:004C219F A1D8EE4C00              mov eax, dword ptr [004CEED8]
:004C21A4 8B00                    mov eax, dword ptr [eax]
:004C21A6 E8B904FDFF              call 00492664
:004C21AB 8B45F0                  mov eax, dword ptr [ebp-10]
:004C21AE 8D4DF4                  lea ecx, dword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->".ini"
                                  |
:004C21B1 BA78224C00              mov edx, 004C2278
:004C21B6 E85D79F4FF              call 00409B18
:004C21BB 8B4DF4                  mov ecx, dword ptr [ebp-0C]
:004C21BE B201                    mov dl, 01
:004C21C0 A124BE4300              mov eax, dword ptr [0043BE24]
:004C21C5 E80A9DF7FF              call 0043BED4
:004C21CA 8BF0                    mov esi, eax
:004C21CC A1C4EE4C00              mov eax, dword ptr [004CEEC4]
:004C21D1 8B00                    mov eax, dword ptr [eax]
:004C21D3 50                      push eax

* Possible StringData Ref from Code Obj ->"Name"
                                  |
:004C21D4 B988224C00              mov ecx, 004C2288

* Possible StringData Ref from Code Obj ->"Reg"
                                  |
:004C21D9 BA98224C00              mov edx, 004C2298
:004C21DE 8BC6                    mov eax, esi
:004C21E0 8B38                    mov edi, dword ptr [eax]
:004C21E2 FF5704                  call [edi+04]
:004C21E5 A128EE4C00              mov eax, dword ptr [004CEE28]
:004C21EA 8B00                    mov eax, dword ptr [eax]
:004C21EC 50                      push eax

* Possible StringData Ref from Code Obj ->"Reg"
                                  |
:004C21ED BA98224C00              mov edx, 004C2298
:004C21F2 B9A4224C00              mov ecx, 004C22A4
:004C21F7 8BC6                    mov eax, esi
:004C21F9 8B38                    mov edi, dword ptr [eax]
:004C21FB FF5704                  call [edi+04]
:004C21FE 8BC6                    mov eax, esi
:004C2200 E8DB19F4FF              call 00403BE0
:004C2205 A138EC4C00              mov eax, dword ptr [004CEC38]
:004C220A C60001                  mov byte ptr [eax], 01
:004C220D C7834C02000001000000    mov dword ptr [ebx+0000024C], 00000001
:004C2217 EB20                    jmp 004C2239

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004C2186(C), :004C219A(C)
|
:004C2219 6A00                    push 00000000 ←跳到这里你以经完了。
:004C221B 8D55EC                  lea edx, dword ptr [ebp-14]

* Possible StringData Ref from Code Obj ->"错误注册码或姓名!;??ID??????????"
                                  |
:004C221E B8B0224C00              mov eax, 004C22B0  
:004C2223 E8280C0000              call 004C2E50  ←出错的对话框

这里是上面按F8进的Call里面,分析算法就在这里。

:004CB0B0 55                      push ebp
:004CB0B1 8BEC                    mov ebp, esp
:004CB0B3 51                      push ecx
:004CB0B4 53                      push ebx
:004CB0B5 8955FC                  mov dword ptr [ebp-04], edx
:004CB0B8 8B45FC                  mov eax, dword ptr [ebp-04]
:004CB0BB E8809DF3FF              call 00404E40
:004CB0C0 33C0                    xor eax, eax
:004CB0C2 55                      push ebp
:004CB0C3 684FB14C00              push 004CB14F
:004CB0C8 64FF30                  push dword ptr fs:[eax]
:004CB0CB 648920                  mov dword ptr fs:[eax], esp
:004CB0CE 33DB                    xor ebx, ebx
:004CB0D0 8B45FC                  mov eax, dword ptr [ebp-04] ←EAX为你的假码
:004CB0D3 E8789BF3FF              call 00404C50 ←取得假码的位数
:004CB0D8 83F80A                  cmp eax, 0000000A ←比较假码是不是十位,
:004CB0DB 755C                    jne 004CB139   ←不到十位或超过十位送你上西天
:004CB0DD 8B55FC                  mov edx, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"A1910"
                                  |
:004CB0E0 B864B14C00              mov eax, 004CB164 ←EAX为A1910
:004CB0E5 E8AA9EF3FF              call 00404F94   ←检查你的注册码前五位是不是A1910
:004CB0EA 48                      dec eax
:004CB0EB 7410                    je 004CB0FD    ←是就跳到004CB0FD继续。不是就接着往下比较
:004CB0ED 8B55FC                  mov edx, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"A1423"
                                  |
:004CB0F0 B874B14C00              mov eax, 004CB174 ←如果你的注册码前五位不是A1910就走到这里,现EAX值是A1423
:004CB0F5 E89A9EF3FF              call 00404F94   ←比较注册码前五位是不是A1423
:004CB0FA 48                      dec eax
:004CB0FB 753C                    jne 004CB139   ←不是就跳,送你上西天。

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004CB0EB(C)
|
:004CB0FD B802000000              mov eax, 00000002

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004CB117(C)
|
:004CB102 8B55FC                  mov edx, dword ptr [ebp-04] ←EDX值为假码
:004CB105 8A5402FF                mov dl, byte ptr [edx+eax-01] ←依次取出假码的第二位
:004CB109 80FA30                  cmp dl, 30 ←比较 
:004CB10C 722B                    jb 004CB139 ←小于30就送你上西天
:004CB10E 80FA39                  cmp dl, 39 ←比较
:004CB111 7726                    ja 004CB139 ←大于39就送你上西天
:004CB113 40                      inc eax ←计数加1
:004CB114 83F80B                  cmp eax, 0000000B ←比较
:004CB117 75E9                    jne 004CB102 ←EAX小于0B继续跳到上面比较下一个假码。
:004CB119 8B45FC                  mov eax, dword ptr [ebp-04] ←EAX为假码
:004CB11C 0FB64008                movzx eax, byte ptr [eax+08] ←取出假码的第九位数
:004CB120 8B55FC                  mov edx, dword ptr [ebp-04] ←EDX为假码
:004CB123 0FB65209                movzx edx, byte ptr [edx+09] ←取出假码的第十位数
:004CB127 03C2                    add eax, edx ←EAX和EDX相加
:004CB129 B90A000000              mov ecx, 0000000A ←ECX值为0000000A
:004CB12E 33D2                    xor edx, edx ←EDX清0
:004CB130 F7F1                    div ecx ←EAX和ECX相除,整数保存在EAX中,余数保存在EDX
:004CB132 83FA04                  cmp edx, 00000004 ←比较
:004CB135 7502                    jne 004CB139 ←若相除的余数不相等就送你上西天。算法到这里也就结束了,以下不管它了
:004CB137 B301                    mov bl, 01

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004CB0DB(C), :004CB0FB(C), :004CB10C(C), :004CB111(C), :004CB135(C)
|
:004CB139 33C0                    xor eax, eax
:004CB13B 5A                      pop edx
:004CB13C 59                      pop ecx
:004CB13D 59                      pop ecx
:004CB13E 648910                  mov dword ptr fs:[eax], edx
:004CB141 6856B14C00              push 004CB156

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004CB154(U)
|
:004CB146 8D45FC                  lea eax, dword ptr [ebp-04]
:004CB149 E84298F3FF              call 00404990
:004CB14E C3                      ret ←返回子程序


  经过以上分析,得出算法:
  1、与用户名无关,
  2、注册码前五位必须是:A1910和A1423
  3、第二位以后的注册码必须是数字0~9
  4、注册码第六位和第八位可以是任意数。
  5、注册码第九位和第十位注册码也可任意输入,但他们相加再除的余数必须余4,否则注册不成功

  例如:A1910XXX08或A1423XXX08就可以注册成功。

  好了,有以上信息,可以写注册机了(我的编程技术太烂,注册机就让你们去写吗!呵呵~~),我也累了,分析这个软件花了几分钟,但写这个教程用了半个钟头呀。

作者:小虾
2004年5月3日

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞10
打赏
分享
最新回复 (17)
雪    币: 126
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
zhouzhen 1 2004-5-4 17:31
2
0
不错。看懂了。谢谢。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lanrs 2004-5-4 18:45
3
0
不错的文。菜鸟我也看得懂。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
happy九拍 2004-5-4 21:43
4
0
写的很好的说!
雪    币: 2367
活跃值: (756)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 10 2004-5-4 23:45
5
0
:) 呵~偶的文章被列为精了,谢谢版主看得起,我会继续努力的。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学习狂 2004-5-5 10:11
6
0
楼主好强,称自己小虾,太谦虚了!
雪    币: 239
活跃值: (190)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
bbsxwk 1 2004-5-5 10:49
7
0
xixi
果然写的详细
不愧为“精”
希望再接再厉多写些让我们这种菜鸟看的懂的文章
雪    币: 396
活跃值: (1078)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
simonzh2000 24 2004-5-6 21:31
8
0
看看这个.
雪    币: 248
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zdd 2004-5-6 23:26
9
0
雷同?呵呵
雪    币: 2367
活跃值: (756)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
小虾 10 2004-5-6 23:47
10
0
最初由 simonzh2000 发布
看看这个.

  呵呵~~看了simonzh2000发过来的文章,我看了也大为吃惊,竟有如此雷同的作品,我也的确无话可说了。
  不过,不管大家相不相信,我先在这里郑重声明一下,我在写这编教程的时候并没有看过这编文章,这次是第一次看到,其实这个软件用的人很多,注册码算法又简单,有些雷同并不奇怪(看了这篇文章才知道6.30版的注册算法和我这篇6.41版的注册算法是雷同的),就说到这里吧,其余我也不多说了,说多了也没多大作用,是非清白就由大家去决定吧。
雪    币: 462
活跃值: (18)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
dododo 2 2004-5-7 00:19
11
0
int main()
{
  cout<<"你的注册码是:A191012308"<<endl;
  return 0;
}

雪    币: 261
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
hunter_boy 3 2004-5-9 17:10
12
0
同意楼主说的,这种又好用,防御又低的东东是不多了,是很多菜鸟过瘾的好东东啊,我写的也和楼主基本一样,(谁叫她的内容少呢:)还好我先看到了这篇文章~~~~)不过还是要感谢软件的作者撒,重内涵不重外表啊
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gzk101 2004-5-11 17:37
13
0
好东西啊,特别适合像我一样的菜鸟,希望楼主以后可以多发点这样的文章。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yttec 2004-5-11 21:59
14
0
好东西。
这年头,这种文章不多了。
雪    币: 242
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xcs 2004-6-8 13:38
15
0
确实是好东西,连我也看的差不多懂了耶!
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
redhouse 2004-6-15 13:54
16
0
谢谢!
在OD下用什么断点才能拦截?我试过很多了,都不行
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
suwenfeng 2004-6-19 09:29
17
0
很值得学习
......谢谢
雪    币: 258
活跃值: (230)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
qiweixue 19 2004-6-21 13:08
18
0
引用:
--------------------------------------------------------------------------------
最初由 simonzh2000 发布
看看这个.
--------------------------------------------------------------------------------

  呵呵~~看了simonzh2000发过来的文章,我看了也大为吃惊,竟有如此雷同的作品,我也的确无话可说了。
  不过,不管大家相不相信,我先在这里郑重声明一下,我在写这编教程的时候并没有看过这编文章,这次是第一次看到,其实这个软件用的人很多,注册码算法又简单,有些雷同并不奇怪(看了这篇文章才知道6.30版的注册算法和我这篇6.41版的注册算法是雷同的),就说到这里吧,其余我也不多说了,说多了也没多大作用,是非清白就由大家去决定吧。

由 小虾 于 2004-05-07 00:03 最后编辑
游客
登录 | 注册 方可回帖
返回