老文章档案 · 2003 年

学算法的看过来 》》》算法分析: <献给初学者> 之五 (5千字)

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-07-25 · 作者:ccmc[P.J.CHINA] 人气: · 出处:赢政天下整理收藏)

算法分析: <献给初学者> 之五

◆ 作 者 ◆ goodbao[P.J.CHINA]

▲软件名称▲ 网际搜索 NetSearch V1.0

▲软件简介▲ 一款互联网搜索软件,能有效的对网站、软件、新闻、音乐、图书、购物、股票等进行搜索,而不用烦索的登录到各大网站,直接在本软件内部输入关键字进行搜索,大大的节省了上网时间和费用。

▲破解难度▲ 非明码破解。算法难度初级。

▲破解背景▲ 这几天真的非常背呀!机器总是死机、重启,开不开又关不成!唉,命好苦呃。。。。索性上网找了个软柿子,拼命地狠捏了一通,算是解了心头之恨!!!!呵呵。。“高不成、低不就”的我在这里就再现一回眼,把它贴了出来啦!

▲破解过程▲

这是一个非明码的注册方式,如果注册不对,它会有提示,又没加过壳,因此反编译是很容易的。但是,也正由于其非明码,所以可能对初学的朋友们来说会有些难度。因此,我尽量把过程写得细些,供大家参考。

首先,设断Bpx hmemcpy,然后F5退出,然后填写名与码,然后点击注册认证,会中断。然后,清断,然后12下F12(因为13下会出错),就会来到如下地方:

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

|:004AC9C6(C)

|

:004ACA3B 8B45F4 mov eax, dword ptr [ebp-0C]======>我们停在这儿。

:004ACA3E E87974F5FF call 00403EBC======>取注册名的长度并保存在EAX中。

:004ACA43 8BF0 mov esi, eax========>ESI=EAX=注册名的长度

:004ACA45 85F6 test esi, esi=======>测试ESI是否为0。即:判断是否什么都没输入。

:004ACA47 7E38 jle 004ACA81========>什么都没输入就跳了,那就玩完。。

:004ACA49 C745F001000000 mov [ebp-10], 00000001====>给[ebp-10]赋值为01,下边要用到它进行一次传送,然后作为循环计算时的计数器。

===================循环计算开始===================

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

|:004ACA7F(C)

|

:004ACA50 8D45EC lea eax, dword ptr [ebp-14]

:004ACA53 50 push eax

:004ACA54 B901000000 mov ecx, 00000001=============>ECX=01

:004ACA59 8B55F0 mov edx, dword ptr [ebp-10]===>EDX=[ebp-10],就是上边提到的已经被赋值为01的那个。这里给EDX赋值为01,其作用就是为下边即将进行的循环过程计数。

:004ACA5C 8B45F4 mov eax, dword ptr [ebp-0C]===>EAX=用户名

:004ACA5F E86076F5FF call 04040C4===============>依次取用户名的每一个字符送给EAX

:004ACA64 8B45EC mov eax, dword ptr [ebp-14]===>EAX=用户名第一个字符

:004ACA67 E81476F5FF call 00404080=================>取字符的$

:004ACA6C 8A00 mov al, byte ptr [eax]========>AL=所取字符的$

:004ACA6E 25FF000000 and eax, 000000FF=============>EAX和000000FF进行与运算,事实上就是把EAX的值写为上面所取字符的16进制值。

:004ACA73 03D8 add ebx, eax==================>EBX=EBX+EAX。什么意思呢?就是说,依次取了我们输入的用户名的字符后,把所取的字符值存入了EAX,然后把这个值与EBX相加,结果存入了EBX。EBX在初始时,值是0,因此,第一次运行到这里,就是把我们所取的第一个用户名$给了EBX。下次开始再运行到这里时,就是把后面的计算结果与每次所取的字符值依次相加后,放入EBX了。呵呵。。。。因此,第一次时,EBX=EAX。

:004ACA75 81C351EBC900 add ebx, 00C9EB51=============>上面的结果EBX与00C9EB51相加,再把计算的和存在EBX中。

:004ACA7B FF45F0 inc [ebp-10]==================>[ebp-10]加1,开始计数。

:004ACA7E 4E dec esi=======================>ESI减1。前面ESI已经被赋值为用户名$长度了,因此,这里减1,意味着已经有一个字符被取算完成。

:004ACA7F 75CF jne 004ACA50==================>没取完跳回,取完继续。

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

|:004ACA47(C)

|

:004ACA81 8D55E8 lea edx, dword ptr [ebp-18]

:004ACA84 8B45FC mov eax, dword ptr [ebp-04]

:004ACA87 8B8000090000 mov eax, dword ptr [eax+00000900]

:004ACA8D E8FA07F8FF call 0042D28C=====================>取注册码个数

:004ACA92 8B45E8 mov eax, dword ptr [ebp-18]=======>EAX=[ebp-18]=输入的注册码

:004ACA95 E8F6C0F5FF call 00408B90=====================>取注册码的值存入EAX

:004ACA9A 3BD8 cmp ebx, eax======================>比较EBX与EAX。即比较前面计算的结果值与注册码的值是否相等

:004ACA9C 7519 jne 004ACAB7======================>不相等,就完蛋啦!

:004ACA9E C645FB01 mov [ebp-05], 01

:004ACAA2 B8B49A4C00 mov eax, 004C9AB4

:004ACAA7 8B55F4 mov edx, dword ptr [ebp-0C]

:004ACAAA E8E171F5FF call 00403C90

:004ACAAF 891DB89A4C00 mov dword ptr [004C9AB8], ebx

:004ACAB5 EB04 jmp 004ACABB

▲算法总结▲

用户名与注册码的关系应该是这样的:比如,我取用户名为ABC。那么,先经过如下计算得到EBX的值为41+00C9EB51+42+00C9EB51+43+00C9EB51=25DC2B9。然后,将其转化为10进制值:39699129。这就是注册码了。应该指出的是,这个软件对注册码长度是没有限制的,哪怕你只在用户名中输入一个字符,那么也可以注册成功!中文名字就更可以啦!只是要注意,中文名字一个字相当于两个字节长度的。呵呵。。。。

收工喽…………………………@!@

--------------------------------------------------------------------------------

神龙宝宝

goodbao[P.J.CHINA][BCG][CNCG] (出处:赢政天下整理收藏)

相关文章:

·语音界面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)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史