如何计算 “IQ网际搜寻家99” 注册码
“IQ网际搜寻家99”是资讯人公司出品的一个功能十分强大的搜索引擎,获得zdnet五星奖。
下载地址http://www.inforian.com/ ,约3M左右,可以支持中文GB、BIG5、英文等语言。
开始我在网上找了一个注册码,但每次运行时程序都会叫你去资讯人公司主页注册。当然你是不能注册的,因为这个注册码早就被注册了。忍无可忍之下,今天我准备将其注册码计算方式找到,自己注册一个。
IQ99.exe被shrink3.4压过,你可以用deshrink1.6解压,不过不这样作也没关系,因为其比较程序是在checknodll.dll中。
首先,你要随便输入一个注册码,01234567895 (11位)
trw2000中下断点
bpx hmemcpy
g
回到IQ99.exe中,按下“注册”按钮,trw跳出。
bd 中断断点
F12 14下
F10 走到
* Possible StringData Ref from Code Obj ->"bCheckSerialNumber"
|
:004C2CD1 A168205000 mov eax, dword ptr [00502068]
:004C2CD6 E8B512F4FF call 00403F90
:004C2CDB 50 push eax
:004C2CDC 8B45F4 mov eax, dword ptr [ebp-0C]
:004C2CDF 50 push eax
* Reference To: kernel32.GetProcAddress, Ord:0000h
|
:004C2CE0 E8BB2EF4FF Call 00405BA0
:004C2CE5 8BF8 mov edi, eax
:004C2CE7 89FB mov ebx, edi
:004C2CE9 85FF test edi, edi
<--没有输入,失败
:004C2CEB 7417 je 004C2D04
:004C2CED 8B45FC mov eax, dword ptr [ebp-04]
:004C2CF0 E89B12F4FF call 00403F90
:004C2CF5 50 push eax
:004C2CF6 56 push esi
:004C2CF7 FFD3 call ebx
<--**
:004C2CF9 83C408 add esp, 00000008
:004C2CFC 3C01 cmp al, 01
<--以al=1作为注册标志
:004C2CFE 7504 jne 004C2D04 <--跳则失败
:004C2D00 C645FB00 mov [ebp-05], 00
现在你要进入:004C2CF7 FFD3 call ebx 中看看al是如何被赋值的,F8进入
这就进入了checknodll.dll领域了。
:100010EB 83F90B cmp ecx, 0000000B <--注册码是否11位?
:100010EE 0F85AA000000 jne 1000119E
:100010F4 33FF xor edi, edi
......
:10001111 mov [esp+0C], 00000007 <-- 1 -
:10001119 mov [esp+10], 00000011 <-- 2 |
:10001121 mov [esp+14], 00000017 <-- 3 |
:10001129 mov [esp+18], 00000025 <-- 4 |
:10001131 mov [esp+1C], 0000002F <-- 5 |--依次对应注册码
:10001139 mov [esp+20], 00000035 <-- 6 | 1-9位
:10001141 mov [esp+24], 00000043 <-- 7 |
:10001149 mov [esp+28], 00000049 <-- 8 |
:10001151 mov [esp+2C], 00000053 <-- 9 -
:10001159 mov eax, ebx
:1000115B xor ecx, ecx
:1000115D lea edx, dword ptr [esp+0C]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:10001174(C)
|
:10001161 0FBE3C31 movsx edi, byte ptr [ecx+esi]
:10001165 83EF30 sub edi, 00000030
<--依次取1-9位注册码的数字
:10001168 0FAF3A imul edi, dword ptr
[edx]
<--各位数与上述数字对应相乘
:1000116B 03C7 add eax, edi
<--总和给eax
:1000116D 41 inc ecx
:1000116E 83C204 add edx, 00000004
:10001171 83F909 cmp ecx, 00000009
:10001174 7CEB jl 10001161
:10001176 0FBE4E09 movsx ecx, byte ptr [esi+09]
<-- 第十位注册码的ascii码给ecx
:1000117A 0FBE560A movsx edx, byte ptr [esi+0A]
<-- 第十一位注册码的ascii码给edx
:1000117E 8D0C89 lea ecx, dword ptr
[ecx+4*ecx]
<-- ecx=5*第十位注册码的ascii码
:10001181 BE64000000 mov esi, 00000064
:10001186 5F pop edi
:10001187 8D8C4AF0FDFFFF lea ecx, dword ptr [edx+2*ecx-00000210]
<-- ecx= 第十一位注册码的ascii码
+ (A*第十位注册码的ascii码)
- 210
:1000118E 99 cdq
:1000118F F7FE idiv esi
<-- edx为eax/64的余数
:10001191 33C0 xor eax, eax
:10001193 5E pop esi
:10001194 5B pop ebx
:10001195 3BCA cmp ecx, edx
<-- 比较
:10001197 0F94C0 sete al
<-- al赋值
所以我计算出一个:01234567804
不要用这个去网站注册,因为我已经用了。要注册,自己算。
不知谁将这个计算式作一注册机?请在其中写上我的名字:小楼
谢谢。
- 标 题:如何计算 “IQ网际搜寻家99” 注册码 (4千字)
- 作 者:小楼
- 时 间:2000-5-15 23:46:32
- 链 接:http://bbs.pediy.com