首页
社区
课程
招聘
新手试破[原创]
2004-11-28 11:20 8008

新手试破[原创]

2004-11-28 11:20
8008
新手试破(高为)  [email]laomms@51.com[/email]
软件名称:EVA  ANIMATER
未破解限制:30天的试用用期及部分功能限制
下载地址:http://www.hanzify.org/index.php?Go=Show::List&ID=501
破解工具: W32Dasm v10.0  UltraEdit-32.v10.10c

破解过程:
用W32Dasm v10.0反汇编XEVA22DL.EXE,一阵狂扫后点击“参考”-串式数据参考,晕,里面居然没有相关的注册信息,难道注册程序不在这里?看了一下软件目录,发现一个可疑的链接文件SHPLCINF.DLL(因为文件名有点类似Licence Information 的缩写),试试,又用W32Dasm狂扫SHPLCINF.DLL,点击“参考”-串式数据参考,果然,在里面发现了“注册信息正被输入。按下确认,软件的全部功能得以..”双击它来到这里:
* Reference To: USER32.EnableWindow, Ord:00B7h
                                  |
:100038D0 FF150CA10010            Call dword ptr [1000A10C]

* Possible StringData Ref from Data Obj ->"注册信息正被输入。按下确认,软件的全部功能得以"
                                        ->"使用。"
                                  |
:100038D6 6888B40010              push 1000B488
:100038DB 68F0030000              push 000003F0
:100038E0 53                      push ebx
:100038E1 FFD7                    call edi

从该行往上翻,注意CMP TEST JNE 等字样。

:1000385E A19CC70010              mov eax, dword ptr [1000C79C]
:10003863 8D542420                lea edx, dword ptr [esp+20]
:10003867 52                      push edx
:10003868 6800C80010              push 1000C800
:1000386D 6820C80010              push 1000C820
:10003872 68C0C70010              push 1000C7C0
:10003877 50                      push eax
:10003878 E853DDFFFF              call 100015D0
:1000387D 85C0                    test eax, eax
:1000387F 0F8536010000            jne 100039BB
:10003885 8B442420                mov eax, dword ptr [esp+20]
:10003889 85C0                    test eax, eax    对比输入的注册码与真实的注册码
: 1000388B 756F                   jne 0100038FC    如果不是则跳转
:1000388D 6A01                    push 00000001
:1000388F 53                      push ebx
:10003890 C705DCC3001001000000    mov dword ptr [1000C3DC], 00000001
:1000389A FFD6                    call esi
:1000389C 50                      push eax

* Reference To: USER32.SetFocus, Ord:022Fh
                                  |
:1000389D FF1520A10010            Call dword ptr [1000A120]
:100038A3 6A00                    push 00000000
:100038A5 6800040000              push 00000400
:100038AA 53                      push ebx
:100038AB FFD6                    call esi
:100038AD 50                      push eax

关键处已经找到,就是这里:1000388B 756F , JNE 0100038FC.我们只要使它“无论输入的注册码对不对都跳转就行了”即把上面的75该为74或者JNE改为JE就行。可以用UltraEdit或者HIEX软件。这里我们用UltraEdit,用UltraEdit打开SHPLCINF.DLL,按CTRL+G调出十六进制跳转,输入0x388B,找到85 C0 75 6F 6A 01将75改为74存盘即可。
运行程序,随便输入注册码(注要10位以上,为什么等一下会说到),点击确定。原以为OK了,谁知软件仍然提示“输入的许可信息不能被接受”,看来软件对输入的注册码还有要求,肯定哪里调用了对比的部分。重新来过,用W32Dasm狂扫SHPLCINF.DLL,点击“参考”-串式数据参考,在里面发现了“输入的许可信息%s不能被接受。”双击它来到这里:
:1000390C 8B4C2410                mov ecx, dword ptr [esp+10]
:10003910 A19CC70010              mov eax, dword ptr [1000C79C]
:10003915 8B51FC                  mov edx, dword ptr [ecx-04]
:10003918 52                      push edx
:10003919 50                      push eax
:1000391A E8815F0000              call 100098A0    关键 CALL
:1000391F 83C408                  add esp, 00000008
:10003922 85C0                    test eax, eax      对比输入的注册码与真实注册码
:10003924 7577                    jne 1000399D     如果不是则跳转
:10003926 8B4C2410                mov ecx, dword ptr [esp+10]
:1000392A 6A05                    push 00000005
:1000392C 8B11                    mov edx, dword ptr [ecx]
:1000392E 52                      push edx
:1000392F 6820C80010              push 1000C820
:10003934 E887600000              call 100099C0
:10003939 83C40C                  add esp, 0000000C
:1000393C 85C0                    test eax, eax
:1000393E 745D                    je 1000399D
:10003940 33C0                    xor eax, eax
:10003942 6A05                    push 00000005
:10003944 8D4C241C                lea ecx, dword ptr [esp+1C]
:10003948 8944241C                mov dword ptr [esp+1C], eax
:1000394C 6820C80010              push 1000C820
:10003951 51                      push ecx
:10003952 6689442428              mov word ptr [esp+28], ax
:10003957 E8F4100000              call 10004A50
:1000395C 8B44241C                mov eax, dword ptr [esp+1C]
:10003960 8D542424                lea edx, dword ptr [esp+24]
:10003964 52                      push edx
:10003965 8D542458                lea edx, dword ptr [esp+58]
:10003969 8B48F8                  mov ecx, dword ptr [eax-08]
:1000396C 51                      push ecx

* Possible StringData Ref from Data Obj ->"输入的许可信息%s不能被接受。输入的注册码(注册"
                                        ->"码=%s?)不能接受。请输入正确的注册信息。"
                                  |
:1000396D 6804B40010              push 1000B404
:10003972 52                      push edx
:10003973 E803100000              call 1000497B
:10003978 83C41C                  add esp, 0000001C
:1000397B 6A00                    push 00000000
:1000397D 6803040000              push 00000403
:10003982 53                      push ebx
:10003983 FFD6                    call esi
向上找到10003924 7577,jne 1000399D,将JNE改为JE即可,运行程序随便输入注册码,点击确定,成功!
另外程序在这里调用了注册码10数字的对比程序:
:10003B90 8B442408                mov eax, dword ptr [esp+08]
:10003B94 3D11010000              cmp eax, 00000111
:10003B99 774D                    ja 10003BE8
:10003B9B 7439                    je 10003BD6
:10003B9D 83F810                  cmp eax, 00000010  对比输入的注册码是否为10位
:10003BA0 7422                    je 10003BC4       如果是则跳转到10003BC4
:10003BA2 3D10010000              cmp eax, 00000110
:10003BA7 756C                    jne 10003C15
:10003BA9 8B442404                mov eax, dword ptr [esp+04]
:10003BAD 6A00                    push 00000000
:10003BAF 6A64                    push 00000064

至此,破解成功。本人对汇编知识了解并不多(正在学习),所以水平有限,如有错误,请前辈指正。
另外,想做一个注册机。Trw2000在WINXP下不支持,换系统麻烦。SOFTICE不太熟悉,所以没有求出真正注册玛,也不知道注册机该怎么做,有兴趣的朋友请帮忙做一个,最好写出教程。

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

收藏
点赞1
打赏
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dehameec 2004-11-28 12:39
2
0
可以使用OD来跟踪做注册机的
雪    币: 560
活跃值: (309)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
laomms 34 2004-11-29 12:33
3
0
它的注册信息藏在DLL文件中,该如何办呢?
雪    币: 560
活跃值: (309)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
laomms 34 2004-11-30 05:30
4
0
用OD跟踪了半天,发现寄存器中没有注册码00000000,不知道在哪里,好象比较复杂.
雪    币: 414
活跃值: (531)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
nig 4 2004-11-30 07:37
5
0
//运行程序,随便输入注册码(注要10位以上,为什么等一下会说到),
//
:10003B9D 83F810                  cmp eax, 00000010  对比输入的注册码是否为10位
:10003BA0 7422                    je 10003BC4       如果是则跳转到10003BC4

是16进制的数值,所有长度应该是16吧!
向这种,你可以用OD跟踪,之后在DLL的那个位置下硬件点,这样,程序在运算后会中断在那个位置.
雪    币: 560
活跃值: (309)
能力值: ( LV13,RANK:1370 )
在线值:
发帖
回帖
粉丝
laomms 34 2004-11-30 13:55
6
0
不行啊nig兄,你能试一下吗?
附上原版的shplcinf.dll文件附件:shplcinf.txt
游客
登录 | 注册 方可回帖
返回