老文章档案 · 2003 年

非明码软件的入门教学--现给算法的入门者

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-22 · 作者:PowerBoy 人气: · 出处:嬴政天下整理收藏)

非明码软件的入门教学

破解软件:CalcVoice计算器

破解人:PowerBoy

下载地址:电力系统网,“软件下载乐园”

软件介绍:该软件是一个语音计算器,可以进行二进制、十进制、八进制、十六进制的转换和三角函数的

计算,注册保护为软件自生成一个序列号,然后根据序列号算出注册码。(每台机器序列号都不相同)

并且有30次限制所以有2种选择:一种是暴力破解,另外一种是分析出算法写成注册机。

*************************************************************************************************************************

1.爆破

首先用language侦测发现是用aspack加的壳。选择用CASPR脱壳(效果好)。

运行软件弹出要求注册的对话框随便输入注册码弹出:

"对不起!您的注册码不正确,请与作者联系! "

接下来用w32dsam反汇编查找“串式参考”

发现此句,用左键双击来到程序中。

向上查找发现是由00476AE0(C)跳转来得(用右键双击)

查看程序发现如果00476AE0不跳转就可以来到:

"恭喜您,注册成功!谢谢您支持本软件,请保存好序列?

因此将3BC2757OB201改为

××7470×× je或

××9090×× nop 成功!!!!!!!!!!!!!!!

*************************************************************************************************************************

2.算法分析

因为该软件是非明码比较,这就要求破解者要有一定的算法破解基础了。废话不说了开始!

下断点:BPX HMEMCPY 按F12共N次来到下面...........

这时就要用F10了,并且要求要成用D和?命令查看个寄存器的数值,(要有宁可错杀一千不放过一个的态度才行啊!)

:00476AA3 55 push ebp

:00476AA4 687D6B4700 push 00476B7D

:00476AA9 64FF30 push dword ptr fs:[eax]

:00476AAC 648920 mov dword ptr fs:[eax], esp

:00476AAF 8D55FC lea edx, dword ptr [ebp-04]

:00476AB2 8B8634040000 mov eax, dword ptr [esi+00000434]

:00476AB8 E87FFFFBFF call 00436A3C

:00476ABD 8B45FC mov eax, dword ptr [ebp-04]

:00476AC0 83CAFF or edx, FFFFFFFF

:00476AC3 E8C41CF9FF call 0040878C-------------------->经过此CALL后,我们输入的SN变成十六进制,并保存倒EAX中;

:00476AC8 35630AB302 xor eax, 02B30A63---------------->EAX=EAX XOR 0x2B30A63

:00476ACD 35C5AC3703 xor eax, 0337ACC5---------------->EAX=EAX XOR 0x337ACC5

:00476AD2 8B15489D4700 mov edx, dword ptr [00479D48]---->EDX=0x13215B=1253723

:00476AD8 81F2630AB302 xor edx, 02B30A63---------------->EDX=EDX XOR 0x2B30A63//这时EDX的值就是机器码MN;

:00476ADE 3BC2 cmp eax, edx--------------------->比较EAX和EDX

:00476AE0 7570 jne 00476B52*********************关键跳转,不相等则跳,跳则死

:00476AE2 B201 mov dl, 01

:00476AE4 A174CC4600 mov eax, dword ptr [0046CC74]

:00476AE9 E88662FFFF call 0046CD74

:00476AEE 8BD8 mov ebx, eax

:00476AF0 BA02000080 mov edx, 80000002

:00476AF5 8BC3 mov eax, ebx

:00476AF7 E81863FFFF call 0046CE14

:00476AFC 33C9 xor ecx, ecx

* Possible StringData Ref from Code Obj ->"\Software\Microsoft\Active Setup\Installed "

->"Components"

|

:00476AFE BA946B4700 mov edx, 00476B94

:00476B03 8BC3 mov eax, ebx

:00476B05 E86E63FFFF call 0046CE78

* Possible StringData Ref from Code Obj ->"1.0"

|

:00476B0A B9D46B4700 mov ecx, 00476BD4

* Possible StringData Ref from Code Obj ->"Version"

|

:00476B0F BAE06B4700 mov edx, 00476BE0

:00476B14 8BC3 mov eax, ebx

:00476B16 E8F964FFFF call 0046D014

:00476B1B 8BC3 mov eax, ebx

:00476B1D E836CAF8FF call 00403558

:00476B22 6A00 push 00000000

:00476B24 668B0DE86B4700 mov cx, word ptr [00476BE8]

:00476B2B B202 mov dl, 02

* Possible StringData Ref from Code Obj ->"恭喜您,注册成功!谢谢您支持本软件,请保存好序列?

->"庞胱⒉崧?便于作者为您提供服务! "

->" 联系邮箱:JRYCL@163.COM"

|

:00476B2D B8F46B4700 mov eax, 00476BF4

:00476B32 E85999FBFF call 00430490

:00476B37 33D2 xor edx, edx

:00476B39 8B8618040000 mov eax, dword ptr [esi+00000418]

:00476B3F E818FEFBFF call 0043695C

:00476B44 A18C9C4700 mov eax, dword ptr [00479C8C]

:00476B49 C6802D02000001 mov byte ptr [eax+0000022D], 01

:00476B50 EB15 jmp 00476B67

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

|:00476AE0(C)

|

:00476B52 6A00 push 00000000

:00476B54 668B0DE86B4700 mov cx, word ptr [00476BE8]

:00476B5B B201 mov dl, 01

* Possible StringData Ref from Code Obj ->"对不起!您的注册码不正确,请与作者联系! "

->"联系邮箱:JRYCL@163.COM"

|

:00476B5D B8646C4700 mov eax, 00476C64

:00476B62 E82999FBFF call 00430490

*******************************************************************************************************************

算法整理:

这是典型的非明码比较的注册码形式;

1.:00476ADE处比较EAX和EDX.如果相等就注册成功,不相等则注册失败;

我们来看:EAX中保存着我们输入的假SN变成十六进制形式在经过与常数XOR计算所得的数值,而EDX中保存着MN的十六进制形式;

如果想注册成功就要使EAX等于EDX;

2.好既然这样我们就令:EAX=EDX;然后,逆推;

(这里我们要知道一些必要的知识即:A XOR B = C 等价于 A XOR C = B 或 B XOR C = A);

如果知道这些就简单了啊!

用MN先与常数0x2B30A63异或,在与常数0x337ACC5异或;

最后,将所得的数变成十进制就是正确的注册码了啊!

例如:

MN=44051256

44051256=0x2A02B38

0x2A02B38 XOR 0x2B30A63 = 0x13215B

0x13215B XOR 0x337ACC5 = 0x3248D9E

0x3248D9E=52727198

SN=52727198

输入52727198显示成功!!!!!!!!

*********************************************************************************************************************

另外这个软件有个缺陷

如果在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components]

建立主键"Version"="1.0"

那么就不用注册就可以成功了啊!

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

相关文章:

·5StarZip 2001 破解--初学者破解入门

·应用olldbg快速调试入门

相关软件:

·康节神数分析体彩入门 1.0

·康节易数分析体彩入门 1.5

·康节易数分析彩票入门 1.6

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

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

Powered

by:MeSky.Net

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

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

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