飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2298|回复: 1

再菜也要追出 LANSEE16 算法

[复制链接]

该用户从未签到

发表于 2005-6-4 22:33:05 | 显示全部楼层 |阅读模式
再菜也要追出 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 ]
PYG19周年生日快乐!

该用户从未签到

发表于 2005-6-26 16:48:36 | 显示全部楼层
支持你老大!
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表