- UID
 - 1874
 
 注册时间2005-6-3
阅读权限30
最后登录1970-1-1
龙战于野 
  
 
 
 
该用户从未签到  
 | 
 
再菜也要追出 LANSEE16 算法 
 
局域网查看工具(LanSee) V1.60 注册信息 
http://www.chinadfcg.com/viewthread.php?tid=145315 
局域网查看工具(LanSee) V1.60  
软件大小: 301 KB 
软件语言: 简体中文 
软件类别: 国产软件 / 共享版 / 网络辅助 
应用平台: Win9x/NT/2000/XP 
界面预览: 无 
加入时间: 2005-03-02 09:20:28 
下载次数: 131952 
软件介绍:  
局域网查看工具(LanSee)是一款主要用于对局域网(Internet上也适用)上的各种信息进行查看的工具。采用多线程技术,搜索速度很快。它将局域网上比较实用的功能完美地融合在一起,比如搜索计算机(包括计算机名,IP地址,MAC地址,所在工 作组,用户),搜索共享资源,搜索共享文件,多线程复制文件(支持断点传输),发短消息,高速端口扫描,捕获指定计算机上的数据包,查看本地计算机上活动的端口,远程重启/关闭计算机等,功能十分强大。该软件是一款绿色软件,解压后直接打开运行,无需安装。 
 
也许是该程序没什么难度,版主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 
 
[ Last edited by 快雪时晴 on 2005-6-8 at 01:56 PM ] |   
 
 
 
 |