【破文标题】全国企业名录天王--名片天王 1.60(08.22)注册算法
【破文作者】XXNB
【作者邮箱】
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】全国企业名录天王--名片天王 1.60(08.22)
【软件大小】3978KB
【原版下载】http://www.newhua.com/soft/5256.htm
【保护方式】VB程序
【软件简介】全国企业名录天王----名片天王数据来源于全国企业数据大全,主要为2002年、2003、2004、2005年工商年检及注册数据,作者对相关数据进行了优
化整理,入选近70万家企业为具有一定规模的工商企业,可以保证本软件的数据准确率在95%以上。
【破解声明】向大侠们学习!!!只为学习!
------------------------------------------------------------------------
【破解过程】
------------------------------------------------------------------------
一个VB程序。简单的注册算法。献给喜欢的朋友!
1、下端__vbaVarMove。(可以Ctrl+N,找到然后F2下断)。按两次F9跳出注册窗口,随意输入假码(123456)。按确定中断在下面:
00470DAC . 8B35 18104000 mov esi, [<&MSVBVM60.__vbaVarMove>] ; MSVBVM60.__vbaVarMove 断在这句
00470DB2 . 8BD0 mov edx, eax
00470DB4 . 8D8D FCFEFFFF lea ecx, [ebp-104]
00470DBA . FFD6 call esi ; <&MSVBVM60.__vbaVarMove>
00470DBC . 8B3D 84104000 mov edi, [<&MSVBVM60.#632>] ; MSVBVM60.rtcMidCharVar
00470DC2 . 8D85 FCFEFFFF lea eax, [ebp-104]
00470DC8 . 50 push eax
00470DC9 . 8D8D 4CFFFFFF lea ecx, [ebp-B4]
00470DCF . 6A 02 push 2
00470DD1 . 8D95 ECFEFFFF lea edx, [ebp-114]
00470DD7 . 51 push ecx
00470DD8 . 52 push edx
00470DD9 . FFD7 call edi ; <&MSVBVM60.#632>
............中间代码省略..............
00470F32 . 8D8D 4CFFFFFF lea ecx, [ebp-B4] ; 机器码又出现
00470F38 . FF15 1C104000 call [<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00470F3E . 8D4D DC lea ecx, [ebp-24]
00470F41 . 8D95 5CFFFFFF lea edx, [ebp-A4]
00470F47 . 51 push ecx
00470F48 . 52 push edx
00470F49 . C785 E4FEFFFF>mov dword ptr [ebp-11C], 3
00470F53 . C785 DCFEFFFF>mov dword ptr [ebp-124], 2
00470F5D . FF15 50104000 call [<&MSVBVM60.__vbaLenVar>] ; MSVBVM60.__vbaLenVar
00470F63 . 50 push eax
00470F64 . 8D85 DCFEFFFF lea eax, [ebp-124]
00470F6A . 8D8D 4CFFFFFF lea ecx, [ebp-B4]
00470F70 . 50 push eax
00470F71 . 51 push ecx
00470F72 . FF15 04104000 call [<&MSVBVM60.__vbaVarSub>] ; MSVBVM60.__vbaVarSub
00470F78 . 8BD0 mov edx, eax
00470F7A . 8D8D 3CFFFFFF lea ecx, [ebp-C4]
00470F80 . FFD6 call esi
00470F82 . 8D95 3CFFFFFF lea edx, [ebp-C4]
00470F88 . 8D45 DC lea eax, [ebp-24]
00470F8B . 52 push edx
00470F8C . 6A 02 push 2
00470F8E . 8D8D 2CFFFFFF lea ecx, [ebp-D4]
00470F94 . 50 push eax
00470F95 . 51 push ecx
00470F96 . FFD7 call edi ; 这里得到“563025”
00470F98 . 8D95 2CFFFFFF lea edx, [ebp-D4]
00470F9E . 8D4D CC lea ecx, [ebp-34]
00470FA1 . FFD6 call esi
00470FA3 . 8D8D 3CFFFFFF lea ecx, [ebp-C4]
00470FA9 . FF15 1C104000 call [<&MSVBVM60.__vbaFreeVar>] ; MSVBVM60.__vbaFreeVar
00470FAF . B9 F4684000 mov ecx, 004068F4 ; “m” ecx
00470FB4 . B8 08000000 mov eax, 8 ; “8” eax
00470FB9 . 898D E4FEFFFF mov [ebp-11C], ecx ; 变量赋值“m”
00470FBF . 8985 DCFEFFFF mov [ebp-124], eax ; 变量赋值“8”
00470FC5 . 898D D4FEFFFF mov [ebp-12C], ecx ; 变量赋值“m”
00470FCB . 8985 CCFEFFFF mov [ebp-134], eax ; 变量赋值“8”
00470FD1 . C785 C4FEFFFF>mov dword ptr [ebp-13C], 004068FC ; 变量赋值“b”
00470FDB . 8B3D F4104000 mov edi, [<&MSVBVM60.__vbaVarCat>] ; MSVBVM60.__vbaVarCat 这个mov把这个函数付给edi。方便下面调用。就是连接
函数
00470FE1 . 8985 BCFEFFFF mov [ebp-144], eax ; 变量赋值“8”
00470FE7 . 8D55 AC lea edx, [ebp-54]
00470FEA . 8D85 DCFEFFFF lea eax, [ebp-124] ; 8到eax
00470FF0 . 52 push edx
00470FF1 . 8D8D 5CFFFFFF lea ecx, [ebp-A4]
00470FF7 . 50 push eax
00470FF8 . 51 push ecx
00470FF9 . FFD7 call edi ; <&MSVBVM60.__vbaVarCat>
00470FFB . 50 push eax
00470FFC . 8D55 CC lea edx, [ebp-34]
00470FFF . 8D85 4CFFFFFF lea eax, [ebp-B4]
00471005 . 52 push edx
00471006 . 50 push eax
00471007 . FFD7 call edi ; 这里得到的是“3m563025” 《《《《----(连接函数)
00471009 . 8D8D CCFEFFFF lea ecx, [ebp-134] ; 这个【ebp-134】装的是上面的“8”
0047100F . 50 push eax
00471010 . 8D95 3CFFFFFF lea edx, [ebp-C4]
00471016 . 51 push ecx
00471017 . 52 push edx
00471018 . FFD7 call edi ; 《《《《----(连接函数)
0047101A . 50 push eax
0047101B . 8D45 9C lea eax, [ebp-64]
0047101E . 8D8D 2CFFFFFF lea ecx, [ebp-D4]
00471024 . 50 push eax
00471025 . 51 push ecx
00471026 . FFD7 call edi ; 多了个m了 《《《《----(连接函数)
00471028 . 50 push eax
00471029 . 8D55 8C lea edx, [ebp-74]
0047102C . 8D85 1CFFFFFF lea eax, [ebp-E4]
00471032 . 52 push edx
00471033 . 50 push eax
00471034 . FFD7 call edi ; 多个8 《《《《----(连接函数)
00471036 . 8D8D BCFEFFFF lea ecx, [ebp-144] ; m
0047103C . 50 push eax
0047103D . 8D95 0CFFFFFF lea edx, [ebp-F4]
00471043 . 51 push ecx
00471044 . 52 push edx
00471045 . FFD7 call edi ; 《《《《----(连接函数)
00471047 . 8BD0 mov edx, eax
00471049 . 8D4D BC lea ecx, [ebp-44]
0047104C . FFD6 call esi
0047104E . 8D85 1CFFFFFF lea eax, [ebp-E4]
00471054 . 8D8D 2CFFFFFF lea ecx, [ebp-D4]
0047105A . 50 push eax
0047105B . 8D95 3CFFFFFF lea edx, [ebp-C4]
00471061 . 51 push ecx
00471062 . 8D85 4CFFFFFF lea eax, [ebp-B4]
00471068 . 52 push edx
00471069 . 8D8D 5CFFFFFF lea ecx, [ebp-A4]
0047106F . 50 push eax
00471070 . 51 push ecx
00471071 . 6A 05 push 5
00471073 . FF15 28104000 call [<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
00471079 . 8B13 mov edx, [ebx]
0047107B . 83C4 18 add esp, 18
0047107E . 53 push ebx
0047107F . FF92 00030000 call [edx+300]
00471085 . 50 push eax
00471086 . 8D85 70FFFFFF lea eax, [ebp-90]
0047108C . 50 push eax
0047108D . FF15 5C104000 call [<&MSVBVM60.__vbaObjSet>] ; MSVBVM60.__vbaObjSet
00471093 . 8BF8 mov edi, eax
00471095 . 8D95 78FFFFFF lea edx, [ebp-88]
0047109B . 52 push edx
0047109C . 57 push edi
0047109D . 8B0F mov ecx, [edi]
0047109F . FF91 A0000000 call [ecx+A0]
004710A5 . 85C0 test eax, eax
004710A7 . DBE2 fclex
004710A9 . 7D 12 jge short 004710BD
004710AB . 68 A0000000 push 0A0
004710B0 . 68 98604000 push 00406098
004710B5 . 57 push edi
004710B6 . 50 push eax
004710B7 . FF15 4C104000 call [<&MSVBVM60.__vbaHresultCheckObj>; MSVBVM60.__vbaHresultCheckObj
004710BD > 8B85 78FFFFFF mov eax, [ebp-88] ; 假码终于出现
004710C3 . 8D8D 4CFFFFFF lea ecx, [ebp-B4]
004710C9 . 8985 64FFFFFF mov [ebp-9C], eax
004710CF . 8D85 5CFFFFFF lea eax, [ebp-A4]
004710D5 . 50 push eax
004710D6 . 51 push ecx
004710D7 . C785 78FFFFFF>mov dword ptr [ebp-88], 0
004710E1 . C785 5CFFFFFF>mov dword ptr [ebp-A4], 8
004710EB . FF15 74104000 call [<&MSVBVM60.#520>] ; MSVBVM60.rtcTrimVar
004710F1 . 8D95 4CFFFFFF lea edx, [ebp-B4]
004710F7 . 8D45 BC lea eax, [ebp-44]
004710FA . 52 push edx
004710FB . 50 push eax
004710FC . FF15 9C104000 call [<&MSVBVM60.__vbaVarTstEq>] ; MSVBVM60.__vbaVarTstEq
00471102 . 8D8D 70FFFFFF lea ecx, [ebp-90]
00471108 . 8BF8 mov edi, eax
0047110A . FF15 70114000 call [<&MSVBVM60.__vbaFreeObj>] ; MSVBVM60.__vbaFreeObj
00471110 . 8D8D 4CFFFFFF lea ecx, [ebp-B4]
00471116 . 8D95 5CFFFFFF lea edx, [ebp-A4]
0047111C . 51 push ecx
0047111D . 52 push edx
0047111E . 6A 02 push 2
00471120 . FF15 28104000 call [<&MSVBVM60.__vbaFreeVarList>] ; MSVBVM60.__vbaFreeVarList
00471126 . 83C4 0C add esp, 0C
00471129 . 66:85FF test di, di
0047112C 0F84 C0010000 je 004712F2 ; 关键跳转!爆破点!
2、上面的代码中有一句是00470FDB mov edi, [<&MSVBVM60.__vbaVarCat>]。所以下面调用的call edi就是调用变量连接函数
跟进这个call edi可以找到如下关键代码:
660E5EC7 E8 DBAAFFFF call 660E09A7 ; 执行完这个call可以在堆栈看到上次连接变量后的结果
660E5ECC 8D75 F0 lea esi, [ebp-10]
660E5ECF 0FB707 movzx eax, word ptr [edi]
660E5ED2 23C3 and eax, ebx
660E5ED4 83F8 0B cmp eax, 0B
660E5ED7 75 14 jnz short 660E5EED
660E5ED9 66:8365 E0 00 and word ptr [ebp-20], 0
660E5EDE 6A 08 push 8
660E5EE0 8D45 E0 lea eax, [ebp-20]
660E5EE3 57 push edi
660E5EE4 50 push eax
660E5EE5 E8 BDAAFFFF call 660E09A7
660E5EEA 8D7D E0 lea edi, [ebp-20]
660E5EED FF75 08 push dword ptr [ebp+8]
660E5EF0 56 push esi
660E5EF1 57 push edi
660E5EF2 FF15 C8ED1066 call [6610EDC8] ; (OLEAUT32.VarCat)用这个call来连接变量。F7跟进
660E5EF8 8B1D E0190066 mov ebx, [<&OLEAUT32.#9>] ; OLEAUT32.VariantClear
660E5EFE 8945 10 mov [ebp+10], eax
3、跟进call [6610EDC8] ; (OLEAUT32.VarCat)这里我们可以看到Unicode在寄存器出现了。
7711BC4C > 8BFF mov edi, edi
7711BC4E 55 push ebp
7711BC4F 8BEC mov ebp, esp
7711BC51 51 push ecx
7711BC52 51 push ecx
7711BC53 56 push esi
7711BC54 57 push edi
7711BC55 FF75 08 push dword ptr [ebp+8]
7711BC58 8D45 FC lea eax, [ebp-4]
7711BC5B 50 push eax
7711BC5C 8D45 08 lea eax, [ebp+8]
7711BC5F 50 push eax
7711BC60 E8 73000000 call 7711BCD8 ; 这句执行后将得到上次连接变量后的结果,注意看堆栈
7711BC65 8B7D 10 mov edi, [ebp+10]
7711BC68 8BF0 mov esi, eax
7711BC6A 85F6 test esi, esi
7711BC6C 7C 60 jl short 7711BCCE
7711BC6E FF75 0C push dword ptr [ebp+C]
7711BC71 8D45 F8 lea eax, [ebp-8]
7711BC74 50 push eax
7711BC75 8D45 0C lea eax, [ebp+C]
7711BC78 50 push eax
7711BC79 E8 5A000000 call 7711BCD8
7711BC7E 8BF0 mov esi, eax
7711BC80 85F6 test esi, esi
7711BC82 0F8C C20A0100 jl 7712C74A
7711BC88 837D 0C FF cmp dword ptr [ebp+C], -1 ; 出现了“563025”
7711BC8C 0F84 C50A0100 je 7712C757
7711BC92 837D 08 FF cmp dword ptr [ebp+8], -1 ; 出现了“3m”
7711BC96 0F84 D90A0100 je 7712C775
7711BC9C 8D47 08 lea eax, [edi+8]
7711BC9F 50 push eax
7711BCA0 FF75 0C push dword ptr [ebp+C] ; “563025”入栈
7711BCA3 FF75 08 push dword ptr [ebp+8] ; “3m”入栈
7711BCA6 E8 7648FEFF call VarBstrCat ; 连接函数!!
7711BCAB FF75 F8 push dword ptr [ebp-8]
4、下面的call edi。依此类推!
【破解总结】
------------------------------------------------------------------------
如果你的
机器码为:"-856302534"
那么注册码为:3m563025m84b
或者:
比如机器码为:"-2142841837"
那么注册码为:3m1428418m27b
都是非常对称的,没有对机器码做任何运算,只是调整了下位置。还有增加了两个字符“m”和“b”。
软件一开始会读取C盘根目录下的名为qsystem的文件。
软件如果注册成功就会在C:\windows\system\目录下生成一个名为:lyodsq的文件,用记事本打开我们可以看到我们的真码。所以,我们只要爆破成功,它就会生成这个文件。
.版本 2
.子程序 _按钮1_被单击
.局部变量 sn1, 文本型
.局部变量 jiqima, 文本型
.局部变量 sn2, 文本型
.局部变量 sn3, 文本型
.局部变量 code, 文本型
jiqima = 编辑框1.内容
sn1 = 取文本中间 (jiqima, 3, 7)
sn2 = 取文本中间 (jiqima, 2, 1)
sn3 = 取文本中间 (jiqima, 11, 1)
code = “3m” + sn1 + “m” + sn2 + sn3 + “b”
编辑框2.内容 = code
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课