老文章档案 · 2003 年

轻松提取资源1.45破解教程

破解教程 · 算法分析 · 2003-08-18 · 作者:人气: · 出处:赢政天下整理收藏)

轻松提取资源1.45破解教程

Cracked by simonyan

这个软件有几个陷阱, 其实算法都是一致, 但在跟的时候, 可能会误入陷阱, 花费多一点时间.

写得不对之处, 欢迎大家指正.

一: 首先打开软件, 先填入注册码 (19191919), 注册名(simonyan). 点选OK后, 会出现要求重启动软件.

在这里你也可以跟一下, 看他怎样处理的注册码, 注册名.

我跟踪了以后, 发现他运算出四个值, 分别为REGCODE, (=假码每位加2). SEARCHID1(=假码每位加1再反转)

SEARCHID2=(假码每位加3再反转) , SEARCHID3=(假码每位加5再反转)

再将注册名, 及以上值存入注册表.

二: 关闭软件后, 加载SOFTICE, 下断点bpx regqueryvalueexa do “d *(esp+8)”

因我们已知道注册码存入注册表, 就先用注册表断点吧!!

启动程序后, 断下, 按F12到45B019停. 这时显示的值并不是与我们要的值有关, 继续按F5, 这时在数据窗口出现

regusername字样, 再按F12到程序领空.

这时停在40b03c, 按F10走到40b045时, D ECX可看见注册名 “simonyan”, ECX的值为11c7ac8.

这时我们可下断点bpm 11c7ac8.

三: 这时按F5走, 可看见SEARCHID1, 再按F5两次可看见下面一段算法. 再将算出的值, 与SEARCHID1比较.

相等则将一个全局变量给值1.

如一直按F5则可看现SEARCHID2, SEARCHID3, REGCODE与算法结果比较。但最后又将全局变量值改为0

表明这些都是陷阱。

四: 我们可一直跟到出现程序菜单后, 到以下位置:

出现最后一次比较:

* Possible StringData Ref from Data Obj ->"EZ Extract Resource 1.45"

|

:0040CD9E 68C4FC4700 push 0047FCC4

:0040CDA3 E860680300 call 00443608

:0040CDA8 51 push ecx

:0040CDA9 8D542418 lea edx, dword ptr [esp+18]

:0040CDAD 8BCC mov ecx, esp

:0040CDAF 8964242C mov dword ptr [esp+2C], esp

:0040CDB3 52 push edx

:0040CDB4 E8D66A0300 call 0044388F

:0040CDB9 51 push ecx

:0040CDBA C68424CC01000010 mov byte ptr [esp+000001CC], 10

:0040CDC2 8BCC mov ecx, esp

:0040CDC4 89642418 mov dword ptr [esp+18], esp

:0040CDC8 57 push edi

:0040CDC9 E8C16A0300 call 0044388F

:0040CDCE 8BCE mov ecx, esi

:0040CDD0 C68424CC0100000F mov byte ptr [esp+000001CC], 0F

:0040CDD8 E893070000 call 0040D570 (关键CALL)

* Possible StringData Ref from Data Obj ->"help.chm"

|

:0040CDDD 68B8FC4700 push 0047FCB8

:0040CDE2 8986D0000000 mov dword ptr [esi+000000D0], eax (赋全局变量值)

:0040CDE8 E82C080200 call 0042D619

:0040CDED 83C404 add esp, 00000004

:0040CDF0 8BCE mov ecx, esi

:0040CDF2 89868C000000 mov dword ptr [esi+0000008C], eax

:0040CDF8 E863030000 call 0040D160

:0040CDFD 8BB654020000 mov esi, dword ptr [esi+00000254]

五: 现在我们可以跟入CALL中分析算法: (如下)

算法部分:

* Referenced by a CALL at Addresses:

|:0040CAF7 , :0040CB6E , :0040CBE5 , :0040CC63 , :0040CDD8

|

:0040D570 6AFF push FFFFFFFF

:0040D572 6840394600 push 00463940

:0040D577 64A100000000 mov eax, dword ptr fs:[00000000]

:0040D57D 50 push eax

:0040D57E 64892500000000 mov dword ptr fs:[00000000], esp

:0040D585 81ECD0000000 sub esp, 000000D0

:0040D58B C78424D800000000000000 mov dword ptr [esp+000000D8], 00000000

:0040D596 8B8424E0000000 mov eax, dword ptr [esp+000000E0]

:0040D59D 68D4404800 push 004840D4

:0040D5A2 50 push eax

:0040D5A3 C781C400000001000000 mov dword ptr [ebx+000000C4], 00000001

:0040D5AD E8A7FC0100 call 0042D259

:0040D5B2 83C408 add esp, 00000008

:0040D5B5 85C0 test eax, eax

:0040D5B7 0F8432010000 je 0040D6EF

:0040D5BD 8B8C24E4000000 mov ecx, dword ptr [esp+000000E4]

:0040D5C4 68D4404800 push 004840D4 (此处用 D ECX可看见实际输入的假码19191919)

:0040D5C9 51 push ecx

:0040D5CA E88AFC0100 call 0042D259

:0040D5CF 83C408 add esp, 00000008

:0040D5D2 85C0 test eax, eax

:0040D5D4 0F8415010000 je 0040D6EF

:0040D5DA 8B9424E0000000 mov edx, dword ptr [esp+000000E0]

:0040D5E1 53 push ebx

:0040D5E2 56 push esi

:0040D5E3 33C9 xor ecx, ecx

:0040D5E5 8B72F8 mov esi, dword ptr [edx-08]

:0040D5E8 C644240868 mov [esp+08], 68

:0040D5ED 85F6 test esi, esi

:0040D5EF C644240975 mov [esp+09], 75

:0040D5F4 C644240A79 mov [esp+0A], 79

:0040D5F9 C644240B64 mov [esp+0B], 64

:0040D5FE C644240C6F mov [esp+0C], 6F

:0040D603 C644240D6E mov [esp+0D], 6E

:0040D608 C644240E67 mov [esp+0E], 67

:0040D60D C644240F00 mov [esp+0F], 00

:0040D612 7E3F jle 0040D653

:0040D614 55 push ebp

:0040D615 57 push edi

:0040D616 8D7C3417 lea edi, dword ptr [esp+esi+17]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040D64F(C)

|

:0040D61A 8B8424F0000000 mov eax, dword ptr [esp+000000F0] (EAX 中的值为注册名)

:0040D621 BD07000000 mov ebp, 00000007 (这几句作用是注册名超过7位后,又得第一个开始)

:0040D626 8A1C01 mov bl, byte ptr [ecx+eax]

:0040D629 8BC1 mov eax, ecx

:0040D62B 99 cdq

:0040D62C F7FD idiv ebp

:0040D62E 0FBEC3 movsx eax, bl (EAX值为注册名第N个字符值)=a

:0040D631 8BD9 mov ebx, ecx

:0040D633 0FBE541410 movsx edx, byte ptr [esp+edx+10] (ESP+10)的值为字符 “huydong”

:0040D638 03DA add ebx, edx (取第N个固定字符值+N-1)=b

:0040D63A 03C3 add eax, ebx (a+b)=c

:0040D63C BB09000000 mov ebx, 00000009

:0040D641 03C6 add eax, esi (esi为注册名长度)+c=d

:0040D643 99 cdq

:0040D644 F7FB idiv ebx

:0040D646 80C230 add dl, 30

:0040D649 41 inc ecx (ECX+1)

:0040D64A 8817 mov byte ptr [edi], dl (除9余数+30)=(注册名长度-N+1)位注册码

:0040D64C 4F dec edi

:0040D64D 3BCE cmp ecx, esi

:0040D64F 7CC9 jl 0040D61A (小于注册名长度跳回运算)

:0040D651 5F pop edi

:0040D652 5D pop ebp

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0040D612(C)

|

:0040D653 8D464D lea eax, dword ptr [esi+4D] (注册名长度+4D)

:0040D656 B909000000 mov ecx, 00000009

:0040D65B 99 cdq

:0040D65C F7F9 idiv ecx

:0040D65E 8B8424EC000000 mov eax, dword ptr [esp+000000EC]

:0040D665 80C230 add dl, 30 (最后一位注册码)

:0040D668 88543410 mov byte ptr [esp+esi+10], dl

后面有一个与假码比对过程, 就不写了.

六: 整理算法如下:

算法分析如下:

J=len(注册名)

I<=J

S(I)=注册名第I位字符

D(I)=”huydong”第I位字符, 如注册名大于7, 则又从第一位开始

经过J次循环

则SN(J-I+1)= CHR(((S(I)+D(I)+J+I-1) MOD 9)+30h)

最后一位注册码为 SN(J+1)=CHR(((J+4Dh) mod 9)+30h)

可能很凌乱, 请大家谅解!!!!

(出处:赢政天下整理收藏)

相关文章:

·语音界面2.0算法分析及注册机源码!

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·ClockWise 3.22e注册码算法分析

·CoolClock V1.02注册算法分析

·Directory Scanner v1.5 注册算法分析

·Disk Chief 1.2 简单注册算法分析

·EffeTech HTTP Sniffer 3.2注册算法分析

·eLib2.01算法分析

·EZ MP3 Recorder 1.15 注册算法分析

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史