- UID
- 1874
注册时间2005-6-3
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
发表于 2006-3-18 23:46:56
|
显示全部楼层
原帖由 wan 于 2006-3-17 14:02 发表
支持```最好来篇算法文章让我等菜鸟学习一下:victory:;P
本人去年6月就已经给出了跟踪过程及注册算法:
再菜也要追出 LANSEE16 算法
局域网查看工具(LanSee) V1.60 注册信息
也许是该程序没什么难度,版主ljwbh只给了2个注册码。
我虽然很菜,但不愿意老吃人现成的,就想把它算法追出来。
用户名随便取,无壳 ,Borland Delphi 6.0 - 7.0
004966E2 |. 6>push 局域网查.004967B9 ; 设置异常处理过程
004966E7 |. 6>push dword ptr fs:[eax]
004966EA |. 6>mov dword ptr fs:[eax],esp
004966ED |. 8>lea edx,dword ptr ss:[ebp-4]
004966F0 |. 8>mov eax,dword ptr ds:[esi+2FC]
004966F6 |. E>call 局域网查.00444D80
004966FB |. 8>mov eax,dword ptr ss:[ebp-4] ; EAX<-假码
004966FE |. E>call 局域网查.0049666C ; 关键,验证注册码,F7跟进
00496703 |. 8>test al,al ; EAX=0 注册失败
00496705 |. 0>je 局域网查.00496794 ; 若要爆破,NOP这里既可
0049670B |. B>mov dl,1
0049670D |. A>mov eax,dword ptr ds:[47099C]
00496712 |. E>call 局域网查.00470A9C
00496717 |. 8>mov ebx,eax
00496719 |. B>mov edx,80000002
0049671E |. 8>mov eax,ebx
00496720 |. E>call 局域网查.00470B3C
00496725 |. B>mov cl,1
00496727 |. B>mov edx,局域网查.004967D0 ; ASCII "SOFTWARE\LanSee"
0049672C |. 8>mov eax,ebx
0049672E |. E>call 局域网查.00470BA0
00496733 |. 8>test al,al
00496735 |. 7>je short 局域网查.00496754
00496737 |. 8>lea edx,dword ptr ss:[ebp-8]
0049673A |. 8>mov eax,dword ptr ds:[esi+2FC]
00496740 |. E>call 局域网查.00444D80
00496745 |. 8>mov ecx,dword ptr ss:[ebp-8]
00496748 |. B>mov edx,局域网查.004967E8 ; ASCII "Serial"
0049674D |. 8>mov eax,ebx
0049674F |. E>call 局域网查.00470D3C
00496754 |> 8>mov eax,ebx
00496756 |. E>call 局域网查.00470B0C
0049675B |. 8>mov eax,ebx
0049675D |. E>call 局域网查.00403794
00496762 |. A>mov eax,dword ptr ds:[4A7310]
00496767 |. C>mov byte ptr ds:[eax],1
0049676A |. A>mov eax,dword ptr ds:[4A7648]
0049676F |. 8>mov eax,dword ptr ds:[eax]
00496771 |. 8>mov eax,dword ptr ds:[eax+3F4]
00496777 |. B>mov edx,10
0049677C |. E>call 局域网查.00493614
00496781 |. B>mov eax,局域网查.004967F8 ; 谢谢您的注册!
00496786 |. E>call 局域网查.0043E548
0049678B |. 8>mov eax,esi
0049678D |. E>call 局域网查.00461750
00496792 |. E>jmp short 局域网查.0049679E
00496794 |> B>mov eax,局域网查.00496810 ; 您输入的注册名或注册码无效,请重新输入!
00496799 |. E>call 局域网查.0043E548
0049679E |> 3>xor eax,eax
004967A0 |. 5>pop edx
004967A1 |. 5>pop ecx
004967A2 |. 5>pop ecx
004967A3 |. 6>mov dword ptr fs:[eax],edx
004967A6 |. 6>push 局域网查.004967C0
004967AB |> 8>lea eax,dword ptr ss:[ebp-8]
004967AE |. B>mov edx,2
004967B3 |. E>call 局域网查.004045A8
004967B8 \. C>retn
===========================
0049666C /$ 5>push ebp
0049666D |. 8>mov ebp,esp
0049666F |. 5>push ecx
00496670 |. 5>push ebx
00496671 |. 8>mov dword ptr ss:[ebp-4],eax
00496674 |. 8>mov eax,dword ptr ss:[ebp-4] ; 假码
00496677 |. E>call 局域网查.00404A24
0049667C |. 3>xor eax,eax
0049667E |. 5>push ebp
0049667F |. 6>push 局域网查.004966BD ; 安装异常处理过程
00496684 |. 6>push dword ptr fs:[eax]
00496687 |. 6>mov dword ptr fs:[eax],esp
0049668A |. 3>xor ebx,ebx
0049668C |. 8>mov eax,dword ptr ss:[ebp-4] ; 假码
0049668F |. E>call 局域网查.0040483C ; 获取假码长度
00496694 |. 8>cmp eax,0A ; 不应该小于10个字符
00496697 |. 7>jl short 局域网查.004966A7
00496699 |. 8>mov eax,dword ptr ss:[ebp-4] ; 假码
0049669C |. E>call 局域网查.00496398 ; 真正的关键,算法CALL,F7跟进
004966A1 |. 8>test al,al
004966A3 |. 7>je short 局域网查.004966A7
004966A5 |. B>mov bl,1 ; 若注册码正确,执行此指令,后面会EAX<--EBX
004966A7 |> 3>xor eax,eax
004966A9 |. 5>pop edx
004966AA |. 5>pop ecx
004966AB |. 5>pop ecx
004966AC |. 6>mov dword ptr fs:[eax],edx
004966AF |. 6>push 局域网查.004966C4
004966B4 |> 8>lea eax,dword ptr ss:[ebp-4]
004966B7 |. E>call 局域网查.00404584
004966BC \. C>retn
==============================================
00496398 /$ 5>push ebp
00496399 |. 8>mov ebp,esp
0049639B |. 8>add esp,-44
0049639E |. 5>push ebx
0049639F |. 5>push esi
004963A0 |. 3>xor edx,edx ; 清零
004963A2 |. 8>mov dword ptr ss:[ebp-44],edx
004963A5 |. 8>mov dword ptr ss:[ebp-40],edx
004963A8 |. 8>mov dword ptr ss:[ebp-3C],edx
004963AB |. 8>mov dword ptr ss:[ebp-38],edx
004963AE |. 8>mov dword ptr ss:[ebp-10],edx
004963B1 |. 8>mov dword ptr ss:[ebp-14],edx
004963B4 |. 8>mov dword ptr ss:[ebp-8],edx
004963B7 |. 8>mov dword ptr ss:[ebp-4],eax
004963BA |. 8>mov eax,dword ptr ss:[ebp-4] ; 假码
004963BD |. E>call 局域网查.00404A24
004963C2 |. 3>xor eax,eax
004963C4 |. 5>push ebp
004963C5 |. 6>push 局域网查.0049664B
004963CA |. 6>push dword ptr fs:[eax]
004963CD |. 6>mov dword ptr fs:[eax],esp
004963D0 |. 3>xor ebx,ebx
004963D2 |. 8>mov eax,dword ptr ss:[ebp-4] ; 假码"1234567890"
004963D5 |. E>call 局域网查.0040483C ; EAX<-取假码长度
004963DA |. 8>lea edx,dword ptr ss:[ebp-10]
004963DD |. E>call 局域网查.00408DAC ;
004963E2 |. 8>mov eax,dword ptr ss:[ebp-10] ; EAX<--假码长度 "10"
004963E5 |. 5>push eax
004963E6 |. 8>lea eax,dword ptr ss:[ebp-18]
004963E9 |. 8>mov edx,dword ptr ss:[ebp-4] ; EDX<--假码"1234567890"
004963EC |. 8>mov dl,byte ptr ds:[edx+1] ; DL<--'2'
004963EF |. 8>mov byte ptr ds:[eax+1],dl
004963F2 |. C>mov byte ptr ds:[eax],1
004963F5 |. 8>lea edx,dword ptr ss:[ebp-18]
004963F8 |. 8>lea eax,dword ptr ss:[ebp-1C]
004963FB |. E>call 局域网查.00402F18
00496400 |. 8>lea eax,dword ptr ss:[ebp-20]
00496403 |. 8>mov edx,dword ptr ss:[ebp-4] ; EDX<--假码
00496406 |. 8>mov dl,byte ptr ds:[edx+4] ; DL<--'5'
00496409 |. 8>mov byte ptr ds:[eax+1],dl
0049640C |. C>mov byte ptr ds:[eax],1
0049640F |. 8>lea edx,dword ptr ss:[ebp-20]
00496412 |. 8>lea eax,dword ptr ss:[ebp-1C]
00496415 |. B>mov cl,2
00496417 |. E>call 局域网查.00402EE8
0049641C |. 8>lea edx,dword ptr ss:[ebp-1C] ; EDX<--ASCII 02 "25"
0049641F |. 8>lea eax,dword ptr ss:[ebp-24]
00496422 |. E>call 局域网查.00402F18
00496427 |. 8>lea eax,dword ptr ss:[ebp-20]
0049642A |. 8>mov edx,dword ptr ss:[ebp-4] ; EDX<--假码
0049642D |. 8>mov dl,byte ptr ds:[edx+6] ; DL<--'7'
00496430 |. 8>mov byte ptr ds:[eax+1],dl
00496433 |. C>mov byte ptr ds:[eax],1
00496436 |. 8>lea edx,dword ptr ss:[ebp-20]
00496439 |. 8>lea eax,dword ptr ss:[ebp-24]
0049643C |. B>mov cl,3
0049643E |. E>call 局域网查.00402EE8
00496443 |. 8>lea edx,dword ptr ss:[ebp-24] ; EDX<--ASCII 03 "257" (这是dephi的字符串表示形式)
00496446 |. 8>lea eax,dword ptr ss:[ebp-2C]
00496449 |. E>call 局域网查.00402F18
0049644E |. 8>lea eax,dword ptr ss:[ebp-20]
00496451 |. 8>mov edx,dword ptr ss:[ebp-4] ; EDX<--假码
00496454 |. 8>mov dl,byte ptr ds:[edx+7] ; DL<--'8'
00496457 |. 8>mov byte ptr ds:[eax+1],dl
0049645A |. C>mov byte ptr ds:[eax],1
0049645D |. 8>lea edx,dword ptr ss:[ebp-20]
00496460 |. 8>lea eax,dword ptr ss:[ebp-2C]
00496463 |. B>mov cl,4
00496465 |. E>call 局域网查.00402EE8
0049646A |. 8>lea edx,dword ptr ss:[ebp-2C] ; EDX<--ASCII 04 "2578"
0049646D |. 8>lea eax,dword ptr ss:[ebp-34]
00496470 |. E>call 局域网查.00402F18
00496475 |. 8>lea eax,dword ptr ss:[ebp-20]
00496478 |. 8>mov edx,dword ptr ss:[ebp-4] ; EDX<--假码
0049647B |. 8>mov dl,byte ptr ds:[edx+9] ; DL<--'0'
0049647E |. 8>mov byte ptr ds:[eax+1],dl
00496481 |. C>mov byte ptr ds:[eax],1
00496484 |. 8>lea edx,dword ptr ss:[ebp-20]
00496487 |. 8>lea eax,dword ptr ss:[ebp-34]
0049648A |. B>mov cl,5
0049648C |. E>call 局域网查.00402EE8
00496491 |. 8>lea edx,dword ptr ss:[ebp-34] ; EDX<--ASCII 05 "25780"
00496494 |. 8>lea eax,dword ptr ss:[ebp-14] ; [EAX]=00DAD794-->"25780"
00496497 |. E>call 局域网查.004047E0
0049649C |. 8>mov edx,dword ptr ss:[ebp-14] ; EDX<--"25780"
0049649F |. 8>lea eax,dword ptr ss:[ebp-8]
004964A2 |. 5>pop ecx ; ECX<--"10" (假码长度的字符串形式)
004964A3 |. E>call 局域网查.00404888
004964A8 |. 8>mov eax,dword ptr ss:[ebp-8] ; EAX<--"2578010"
004964AB |. 0>movzx eax,byte ptr ds:[eax] ; EAX<--32 ('2')
004964AE |. 8>mov edx,dword ptr ss:[ebp-8] ; EDX<--"2578010"
004964B1 |. 0>movzx edx,byte ptr ds:[edx+1] ; EDX<--35 ('5')
004964B5 |. 0>add eax,edx ; EAX=EAX+EDX=32+35=67
004964B7 |. B>mov ecx,5 ; ECX<--5
004964BC |. 9>cdq
004964BD |. F>idiv ecx ; 除法结果 EDX:EAX=3:14
004964BF |. 8>add dl,61 ; DL<--余数DL + 61 转换成ASCII小写字母 'd'
004964C2 |. 8>mov byte ptr ss:[ebp-C],dl
004964C5 |. 8>mov eax,dword ptr ss:[ebp-8] ; EAX<--"2578010"
004964C8 |. 3>xor ecx,ecx
004964CA |. 8>mov cl,byte ptr ds:[eax+2]
004964CD |. 8>mov eax,ecx ; EAX<--ECX<--37 ('7')
004964CF |. 8>mov edx,dword ptr ss:[ebp-8]
004964D2 |. 0>movzx edx,byte ptr ds:[edx+3] ; EDX<--38 ('8')
004964D6 |. 0>add eax,edx ; EAX=37+38=6F
004964D8 |. B>mov esi,5 ; ESI<--5
004964DD |. 9>cdq
004964DE |. F>idiv esi ; 除法 6F/5 =16 余1
004964E0 |. 8>add dl,61 ; DL<--1+61=62 为字母'b'
004964E3 |. 8>mov byte ptr ss:[ebp-B],dl
004964E6 |. 8>mov eax,dword ptr ss:[ebp-8] ; EAX<--"2578010"
004964E9 |. 0>movzx eax,byte ptr ds:[eax+4] ; EAX<--30 ('0')
004964ED |. 8>mov edx,dword ptr ss:[ebp-8]
004964F0 |. 0>movzx edx,byte ptr ds:[edx+5] ; EDX<--31 ('1')
004964F4 |. 0>add eax,edx ; EAX=30 + 31 =61
004964F6 |. B>mov esi,5
004964FB |. 9>cdq
004964FC |. F>idiv esi ; 61 除5=13 余 2-->EDX
004964FE |. 8>add dl,61 ; DL<--2+61=63 为字母'c'
00496501 |. 8>mov byte ptr ss:[ebp-A],dl
00496504 |. 8>mov eax,dword ptr ss:[ebp-8] ; EAX<--"2578010"
00496507 |. 0>movzx eax,byte ptr ds:[eax+6] ; EAX<--30 ('0') ,为"2578010"的最后一个字符
0049650B |. 0>add eax,ecx ; EAX=EAX+ECX("2578010"中的第3位)=30 + 37=67
0049650D |. 8>mov edx,dword ptr ss:[ebp-8]
00496510 |. 0>movzx edx,byte ptr ds:[edx+1] ; EDX<--35 ('5')
00496514 |. 0>add eax,edx ; EAX=EAX+EDX=67+35=9C
00496516 |. B>mov ecx,5
0049651B |. 9>cdq
0049651C |. F>idiv ecx ; 9C 除以5 =1F 余 1
0049651E |. 8>add dl,61 ; DL<--1+61=62 为字母'b',到此,又已计算得到中间数据"dbcb"
00496521 |. 8>mov byte ptr ss:[ebp-9],dl
00496524 |. 8>lea eax,dword ptr ss:[ebp-38]
00496527 |. 8>mov dl,byte ptr ss:[ebp-C]
0049652A |. E>call 局域网查.00404764
0049652F |. 8>mov eax,dword ptr ss:[ebp-38]
00496532 |. 8>lea edx,dword ptr ss:[ebp-8]
00496535 |. B>mov ecx,1
0049653A |. E>call 局域网查.00404B1C ; F8后,EDX<--"d2578010"
0049653F |. 8>lea eax,dword ptr ss:[ebp-3C]
00496542 |. 8>mov dl,byte ptr ss:[ebp-9]
00496545 |. E>call 局域网查.00404764
0049654A |. 8>mov eax,dword ptr ss:[ebp-3C]
0049654D |. 8>lea edx,dword ptr ss:[ebp-8]
00496550 |. B>mov ecx,3
00496555 |. E>call 局域网查.00404B1C ; F8后,EDX<--"b578010"
0049655A |. 8>mov eax,dword ptr ss:[ebp-4] ; EAX<--假码"1234567890"
0049655D |. 0>movzx eax,byte ptr ds:[eax] ; EAX<--31 (假码第一个字符'1')
00496560 |. B>mov ecx,3B ; ECX<--3B
00496565 |. 3>xor edx,edx
00496567 |. F>div ecx ; 31 除3B=0 余31-->EDX
00496569 |. 8>cmp edx,2E
0049656C |. 0>ja 局域网查.00496616 ; EDX > 2E ? 说明第1位应该在3B~3B+2E之间,不能为数字
00496572 |. 8>lea eax,dword ptr ss:[ebp-40]
00496575 |. 8>mov dl,byte ptr ss:[ebp-B]
00496578 |. E>call 局域网查.00404764
0049657D |. 8>mov eax,dword ptr ss:[ebp-40]
00496580 |. 8>lea edx,dword ptr ss:[ebp-8]
00496583 |. B>mov ecx,5
00496588 |. E>call 局域网查.00404B1C
0049658D |. 8>lea eax,dword ptr ss:[ebp-44]
00496590 |. 8>mov dl,byte ptr ss:[ebp-A]
00496593 |. E>call 局域网查.00404764
00496598 |. 8>mov eax,dword ptr ss:[ebp-44]
0049659B |. 8>lea edx,dword ptr ss:[ebp-8]
0049659E |. B>mov ecx,9
004965A3 |. E>call 局域网查.00404B1C
004965A8 |. 8>lea eax,dword ptr ss:[ebp-8]
004965AB |. B>mov ecx,1
004965B0 |. B>mov edx,9
004965B5 |. E>call 局域网查.00404AD4
004965BA |. 8>lea eax,dword ptr ss:[ebp-8]
004965BD |. B>mov ecx,1
004965C2 |. B>mov edx,7
004965C7 |. E>call 局域网查.00404AD4
004965CC |. 8>mov eax,dword ptr ss:[ebp-4]
004965CF |. 0>movzx eax,byte ptr ds:[eax+8] ; EAX<--39 ,假码第9位'9'
004965D3 |. B>mov ecx,3D ; ECX<--3D
004965D8 |. 3>xor edx,edx
004965DA |. F>div ecx
004965DC |. 8>cmp edx,2A ; 第9位应该在3D~3D+2A之间,同第1位类似,不能是数字
004965DF |. 7>ja short 局域网查.00496616
004965E1 |. 8>lea eax,dword ptr ss:[ebp-8]
004965E4 |. B>mov ecx,1
004965E9 |. B>mov edx,2
004965EE |. E>call 局域网查.00404AD4
004965F3 |. 8>lea eax,dword ptr ss:[ebp-8]
004965F6 |. B>mov ecx,1
004965FB |. B>mov edx,6
00496600 |. E>call 局域网查.00404AD4
00496605 |. 8>mov eax,dword ptr ss:[ebp-8] ; 最终计算字符串S="db5b7100",应与常数"be9c912"一致
00496608 |. B>mov edx,局域网查.00496664 ; ASCII "be9c912"
0049660D |. E>call 局域网查.00404980 ; 比较字符串是否相同,是则注册成功
00496612 |. 7>jnz short 局域网查.00496616
00496614 |. B>mov bl,1
00496616 |> 3>xor eax,eax
经过对比真假字符串,
注册算法:
注册码与用户名无关,是自校验类型,由注册码其中一部分来生成另一部分,
并与固定字符串常量"be9c912"比较。
注册码应满足10位以上,实际应该为12位。注册码如果是字母,输入文本框时自动变大写。
设注册码为r1r2r3r4r5r6r7r8r9r10r11r12,长度为c1c2="12":
第1位(r1)和第9位(r9)不能是数字
第5位(r5)和第7位(r7)必须为"9"
满足方程组:
(r2+r5) mod 5 ='b'-61=1
(r7+r8) mod 5 ='c'-61=2
(r10+c1)未参与最后比较字符串的计算
(c2+r5+r7) mod 5 ='e'-61=4
没有提到的位可以是任何字母数字。
即:
(r2+39) mod 5 =1 .................
(r8+39) mod 5 =2 .................
(32+39+39) mod 5 =4 本来就成立。
进一步:
r2 mod 5 =4
r8 mod 5 =0
例如:r2=45('E') r8=46('F') //注意r1,r9为大写字母,r5=r7='9'
注册码可以是:
AE34969FA000
BE34909FBXXX
破解LANSEE160 注册机 2005-06-02 |
|