首页
社区
课程
招聘
[旧帖] [原创]某商业软件注册码计算分析 0.00雪花
发表于: 2009-1-10 03:18 3708

[旧帖] [原创]某商业软件注册码计算分析 0.00雪花

2009-1-10 03:18
3708
经过分析判断,这款软件采用了程序启动时寻找读取加密狗、并判断注册码的方式。
以我这菜鸟的分析能力,要把加密狗部分搞掉可能很难,有乐于助人的高手,帮忙下{呵呵};
注册码的计算跟几个内容有关:1.场所名称;2.场所地址;3.场所电话;4.加密狗的硬件代码【域天专业型】
程序根据用户输入的相关信息以及注册码来判断程序是否注册.也就是说,如果你购买的标准版的,是用不了高级版和灯控版的功能的(因为3个版本的价钱不一样).
今天这篇文章,就是把3个版本的注册码都跟踪出来.让标准版用户也用上灯控版的功能{给点掌声啊}
--------  以下为程序启动时注册码的比较部分  --------
00648776   > \68 40946400   push    00649440                         ;  ASCII "hello"
0064877B   .  FF75 F0       push    dword ptr [ebp-10]
0064877E   .  8D55 B8       lea     edx, dword ptr [ebp-48]
00648781   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648786   .  8B00          mov     eax, dword ptr [eax]
00648788   .  8B80 98010000 mov     eax, dword ptr [eax+198]
0064878E   .  E8 590FDCFF   call    004096EC
00648793   .  FF75 B8       push    dword ptr [ebp-48]
00648796   .  8D55 B4       lea     edx, dword ptr [ebp-4C]
00648799   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
0064879E   .  8B00          mov     eax, dword ptr [eax]
006487A0   .  8B80 9C010000 mov     eax, dword ptr [eax+19C]
006487A6   .  E8 410FDCFF   call    004096EC
006487AB   .  FF75 B4       push    dword ptr [ebp-4C]
006487AE   .  8D55 B0       lea     edx, dword ptr [ebp-50]
006487B1   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
006487B6   .  8B00          mov     eax, dword ptr [eax]
006487B8   .  8B80 A0010000 mov     eax, dword ptr [eax+1A0]
006487BE   .  E8 290FDCFF   call    004096EC;//获得输入的电话
006487C3   .  FF75 B0       push    dword ptr [ebp-50]
006487C6   .  8D45 BC       lea     eax, dword ptr [ebp-44]
006487C9   .  BA 05000000   mov     edx, 5
006487CE   .  E8 41C5DBFF   call    00404D14
006487D3   .  8B55 BC       mov     edx, dword ptr [ebp-44]
006487D6   .  8D4D C0       lea     ecx, dword ptr [ebp-40]
006487D9   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
006487DE   .  8B00          mov     eax, dword ptr [eax]
006487E0   .  8B80 A8010000 mov     eax, dword ptr [eax+1A8]
006487E6   .  E8 E18DFAFF   call    005F15CC
006487EB   .  8B55 C0       mov     edx, dword ptr [ebp-40]
006487EE   .  A1 5CA26500   mov     eax, dword ptr [65A25C];//标准版的注册码EDX [明码存放]
006487F3   .  8B00          mov     eax, dword ptr [eax]
006487F5   .  8D8498 BC0100>lea     eax, dword ptr [eax+ebx*4+1BC]
006487FC   .  E8 DFC1DBFF   call    004049E0
00648801   .  68 50946400   push    00649450                         ;  ASCII "helloadvanced"
00648806   .  FF75 F0       push    dword ptr [ebp-10]
00648809   .  8D55 A4       lea     edx, dword ptr [ebp-5C]
0064880C   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648811   .  8B00          mov     eax, dword ptr [eax]
00648813   .  8B80 98010000 mov     eax, dword ptr [eax+198]
00648819   .  E8 CE0EDCFF   call    004096EC
0064881E   .  FF75 A4       push    dword ptr [ebp-5C]
00648821   .  8D55 A0       lea     edx, dword ptr [ebp-60]
00648824   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648829   .  8B00          mov     eax, dword ptr [eax]
0064882B   .  8B80 9C010000 mov     eax, dword ptr [eax+19C]
00648831   .  E8 B60EDCFF   call    004096EC
00648836   .  FF75 A0       push    dword ptr [ebp-60]
00648839   .  8D55 9C       lea     edx, dword ptr [ebp-64]
0064883C   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648841   .  8B00          mov     eax, dword ptr [eax]
00648843   .  8B80 A0010000 mov     eax, dword ptr [eax+1A0]
00648849   .  E8 9E0EDCFF   call    004096EC;  //获得输入的电话EAX
0064884E   .  FF75 9C       push    dword ptr [ebp-64]
00648851   .  8D45 A8       lea     eax, dword ptr [ebp-58]
00648854   .  BA 05000000   mov     edx, 5
00648859   .  E8 B6C4DBFF   call    00404D14
0064885E   .  8B55 A8       mov     edx, dword ptr [ebp-58]
00648861   .  8D4D AC       lea     ecx, dword ptr [ebp-54]
00648864   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648869   .  8B00          mov     eax, dword ptr [eax]
0064886B   .  8B80 A8010000 mov     eax, dword ptr [eax+1A8]
00648871   .  E8 568DFAFF   call    005F15CC
00648876   .  8B55 AC       mov     edx, dword ptr [ebp-54]
00648879   .  A1 5CA26500   mov     eax, dword ptr [65A25C];//高级版的注册码EDX [明码存放]
0064887E   .  8B00          mov     eax, dword ptr [eax]
00648880   .  8D8498 D00100>lea     eax, dword ptr [eax+ebx*4+1D0]
00648887   .  E8 54C1DBFF   call    004049E0
0064888C   .  FF75 F0       push    dword ptr [ebp-10]
0064888F   .  8D55 90       lea     edx, dword ptr [ebp-70]
00648892   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648897   .  8B00          mov     eax, dword ptr [eax]
00648899   .  8B80 98010000 mov     eax, dword ptr [eax+198]
0064889F   .  E8 480EDCFF   call    004096EC
006488A4   .  FF75 90       push    dword ptr [ebp-70]
006488A7   .  8D55 8C       lea     edx, dword ptr [ebp-74]
006488AA   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
006488AF   .  8B00          mov     eax, dword ptr [eax]
006488B1   .  8B80 9C010000 mov     eax, dword ptr [eax+19C]
006488B7   .  E8 300EDCFF   call    004096EC
006488BC   .  FF75 8C       push    dword ptr [ebp-74]
006488BF   .  8D55 88       lea     edx, dword ptr [ebp-78]
006488C2   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
006488C7   .  8B00          mov     eax, dword ptr [eax]
006488C9   .  8B80 A0010000 mov     eax, dword ptr [eax+1A0]
006488CF   .  E8 180EDCFF   call    004096EC;  //获得输入的电话EAX
006488D4   .  FF75 88       push    dword ptr [ebp-78]
006488D7   .  8D45 94       lea     eax, dword ptr [ebp-6C]
006488DA   .  BA 04000000   mov     edx, 4
006488DF   .  E8 30C4DBFF   call    00404D14
006488E4   .  8B55 94       mov     edx, dword ptr [ebp-6C]
006488E7   .  8D4D 98       lea     ecx, dword ptr [ebp-68]
006488EA   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
006488EF   .  8B00          mov     eax, dword ptr [eax]
006488F1   .  8B80 A8010000 mov     eax, dword ptr [eax+1A8]
006488F7   .  E8 D08CFAFF   call    005F15CC//此Call有多处调用,此处跟进
006488FC   .  8B55 98       mov     edx, dword ptr [ebp-68]
006488FF   .  A1 5CA26500   mov     eax, dword ptr [65A25C];//灯控版的注册码EDX [明码存放]
00648904   .  8B00          mov     eax, dword ptr [eax]
00648906   .  8D8498 E40100>lea     eax, dword ptr [eax+ebx*4+1E4]
0064890D   .  E8 CEC0DBFF   call    004049E0
00648912   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648917   .  8B00          mov     eax, dword ptr [eax]
00648919   .  8B8498 BC0100>mov     eax, dword ptr [eax+ebx*4+1BC]
00648920   .  8B15 5CA26500 mov     edx, dword ptr [65A25C]          ;  Snooker.00658EAC
00648926   .  8B12          mov     edx, dword ptr [edx]
00648928   .  8B92 A4010000 mov     edx, dword ptr [edx+1A4]
0064892E   .  E8 4973FAFF   call    005EFC7C;  ?有可能是关键的比较
00648933   .  84C0          test    al, al
00648935   .  75 4E         jnz     short 00648985
00648937   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
0064893C   .  8B00          mov     eax, dword ptr [eax]
0064893E   .  8B8498 D00100>mov     eax, dword ptr [eax+ebx*4+1D0]
00648945   .  8B15 5CA26500 mov     edx, dword ptr [65A25C]          ;  Snooker.00658EAC
0064894B   .  8B12          mov     edx, dword ptr [edx]
0064894D   .  8B92 A4010000 mov     edx, dword ptr [edx+1A4]
00648953   .  E8 2473FAFF   call    005EFC7C;  ?有可能是关键的比较
00648958   .  84C0          test    al, al
0064895A   .  75 29         jnz     short 00648985
0064895C   .  A1 5CA26500   mov     eax, dword ptr [65A25C]
00648961   .  8B00          mov     eax, dword ptr [eax]
00648963   .  8B8498 E40100>mov     eax, dword ptr [eax+ebx*4+1E4]
0064896A   .  8B15 5CA26500 mov     edx, dword ptr [65A25C]          ;  Snooker.00658EAC
00648970   .  8B12          mov     edx, dword ptr [edx]
00648972   .  8B92 A4010000 mov     edx, dword ptr [edx+1A4]
00648978   .  E8 FF72FAFF   call    005EFC7C
0064897D   .  84C0          test    al, al
0064897F   .  75 04         jnz     short 00648985
00648981   .  33C0          xor     eax, eax
00648983   .  EB 02         jmp     short 00648987
00648985   >  B0 01         mov     al, 1
00648987   >  8B15 5CA46500 mov     edx, dword ptr [65A45C]          ;  Snooker.00674148
0064898D   .  8802          mov     byte ptr [edx], al
0064898F   .  A1 5CA46500   mov     eax, dword ptr [65A45C]
00648994   .  8A00          mov     al, byte ptr [eax]
00648996   .  8B15 6C9D6500 mov     edx, dword ptr [659D6C]          ;  Snooker.00674149
0064899C   .  8802          mov     byte ptr [edx], al
0064899E   .  A1 6C9D6500   mov     eax, dword ptr [659D6C]
006489A3   .  8038 00       cmp     byte ptr [eax], 0
006489A6   .  0F84 87000000 je      00648A33
写到这里,如果想做个3合1的内存注册机,相信有点基础知识的朋友就能够搞定了.结论如下:
Snooker_V519H内存注册机参数
主程序大小:4038656字节   CRC32:02BCE319
以下为补丁工具keymake1.73的参数
参数    标准版    高级版    灯控版
中断地址    6487EE    648879    6488FF
中断次数    1    1    1
第一字节    A1    A1    A1
指令长度    5    5    5
注册码保存方式    内存EDX    内存EDX    内存EDX
分析:三个版本注册码出来之前,我们看到都调用call    005F15CC; (006487E6、00648871、006488F7)调用,很可能就是注册码的计算部分。我们跟进call    005F15CC:
--------  跟进call    005F15CC  --------
入口参数:EDX中为输入的:场所名称;场所地址;场所电话;
005F15CC/$55 push    ebp
005F15CD.8BEC mov     ebp, esp
005F15CF.push    0
005F15D1.push    0
005F15D3.push    0
005F15D5.push    0
005F15D7.push    0
005F15D9.push    0
005F15DB.push    0
005F15DD.push    ebx
005F15DE.push    esi
005F15DF.mov     esi, ecx
005F15E1.mov     dword ptr [ebp-4], edx //名称、地址、电话装入dword ptr [ebp-4]中
005F15E4.mov     ebx, eax
005F15E6.mov     eax, dword ptr [ebp-4] //EAX内为 名称、地址、电话
005F15E9.call    00404E3C
005F15EE.xor     eax, eax
005F15F0.push    ebp
005F15F1.push    005F1960
005F15F6.push    dword ptr fs:[eax]
005F15F9.mov     dword ptr fs:[eax], esp
005F15FC.mov     edx, 005F1978                    ;  ASCII "helloadvanced"
005F1601.mov     eax, dword ptr [ebp-4]
005F1604.call    005A0AA8
005F1609.test    al, al
005F160B.je      short 005F163A
005F160D.lea     ecx, dword ptr [ebp-C]
005F1610.mov     edx, 0E
005F1615.mov     eax, dword ptr [ebp-4]
005F1618.call    005A03A0
005F161D.mov     eax, dword ptr [ebp-C]
005F1620.lea     edx, dword ptr [ebp-8]
005F1623.call    0040947C
005F1628.mov     ecx, dword ptr [ebp-8]
005F162B.lea     eax, dword ptr [ebp-4]
005F162E.mov     edx, 005F1978                    ;  ASCII "helloadvanced"
005F1633.call    00404CA0
005F1638.jmp     short 005F168E
005F163A|mov     edx, 005F1990                    ;  ASCII "hello"
005F163F.mov     eax, dword ptr [ebp-4]
005F1642.call    005A0AA8
005F1647.test    al, al
005F1649.je      short 005F1678
005F164B.lea     ecx, dword ptr [ebp-14]
005F164E.mov     edx, 6
005F1653.mov     eax, dword ptr [ebp-4]
005F1656.call    005A03A0
005F165B.mov     eax, dword ptr [ebp-14]
005F165E.lea     edx, dword ptr [ebp-10]
005F1661.call    0040947C
005F1666.mov     ecx, dword ptr [ebp-10]
005F1669.lea     eax, dword ptr [ebp-4]
005F166C.mov     edx, 005F1990                    ;  ASCII "hello"
005F1671.call    00404CA0
005F1676.jmp     short 005F168E
005F1678|lea     edx, dword ptr [ebp-18]
005F167B.mov     eax, dword ptr [ebp-4]
005F167E.call    0040947C
005F1683.mov     edx, dword ptr [ebp-18]
005F1686.lea     eax, dword ptr [ebp-4]
005F1689.call    00404A24
005F168E|push    1
005F1690.lea     eax, dword ptr [ebp-4]
005F1693.xor     ecx, ecx
005F1695.mov     edx, 005F19A0
005F169A.call    005A07B8
005F169F.push    1
005F16A1.lea     eax, dword ptr [ebp-4]
005F16A4.xor     ecx, ecx
005F16A6.mov     edx, 005F19AC
005F16AB.call    005A07B8
005F16B0.push    1
005F16B2.lea     eax, dword ptr [ebp-4]
005F16B5.xor     ecx, ecx
005F16B7.mov     edx, 005F19B8
005F16BC.call    005A07B8
005F16C1.push    1
005F16C3.lea     eax, dword ptr [ebp-4]
005F16C6.xor     ecx, ecx
005F16C8.mov     edx, 005F19C4
005F16CD.call    005A07B8
005F16D2.push    1
005F16D4.lea     eax, dword ptr [ebp-4]
005F16D7.xor     ecx, ecx
005F16D9.mov     edx, 005F19D0
005F16DE.call    005A07B8
005F16E3.push    1
005F16E5.lea     eax, dword ptr [ebp-4]
005F16E8.mov     ecx, 005F19DC
005F16ED.mov     edx, 005F19E8
005F16F2.call    005A07B8
005F16F7.push    1
005F16F9.lea     eax, dword ptr [ebp-4]
005F16FC.mov     ecx, 005F19F4
005F1701.mov     edx, 005F1A00
005F1706.call    005A07B8
005F170B.push    1
005F170D.lea     eax, dword ptr [ebp-4]
005F1710.mov     ecx, 005F1A0C
005F1715.mov     edx, 005F1A18
005F171A.call    005A07B8
005F171F.push    1
005F1721.lea     eax, dword ptr [ebp-4]
005F1724.mov     ecx, 005F1A24
005F1729.mov     edx, 005F1A30
005F172E.call    005A07B8
005F1733.push    1
005F1735.lea     eax, dword ptr [ebp-4]
005F1738.mov     ecx, 005F1A3C
005F173D.mov     edx, 005F1A48
005F1742.call    005A07B8
005F1747.push    1
005F1749.lea     eax, dword ptr [ebp-4]
005F174C.mov     ecx, 005F1A54
005F1751.mov     edx, 005F1A60
005F1756.call    005A07B8
005F175B.push    1
005F175D.8lea     eax, dword ptr [ebp-4]
005F1760.mov     ecx, 005F1A6C
005F1765.mov     edx, 005F1A78
005F176A.call    005A07B8
005F176F.push    1
005F1771.lea     eax, dword ptr [ebp-4]
005F1774.mov     ecx, 005F1A84
005F1779.mov     edx, 005F1A90
005F177E.call    005A07B8
005F1783.push    1
005F1785.lea     eax, dword ptr [ebp-4]
005F1788.mov     ecx, 005F1A9C
005F178D.mov     edx, 005F1AA8
005F1792.call    005A07B8
005F1797.push    1
005F1799.lea     eax, dword ptr [ebp-4]
005F179C.mov     ecx, 005F1AB4
005F17A1.mov     edx, 005F1AC0
005F17A6.call    005A07B8
005F17AB.push    1
005F17AD.lea     eax, dword ptr [ebp-4]
005F17B0.mov     ecx, 005F19DC
005F17B5.mov     edx, 005F1ACC
005F17BA.call    005A07B8
005F17BF.push    1
005F17C1.lea     eax, dword ptr [ebp-4]
005F17C4.mov     ecx, 005F19F4
005F17C9.mov     edx, 005F1AD8
005F17CE.call    005A07B8
005F17D3.push    1
005F17D5.lea     eax, dword ptr [ebp-4]
005F17D8.mov     ecx, 005F1A0C
005F17DD.mov     edx, 005F1AE4
005F17E2.call    005A07B8
005F17E7.push    1
005F17E9.lea     eax, dword ptr [ebp-4]
005F17EC.mov     ecx, 005F1A24
005F17F1.mov     edx, 005F1AF0
005F17F6.call    005A07B8
005F17FB.push    1
005F17FD.lea     eax, dword ptr [ebp-4]
005F1800.mov     ecx, 005F1A3C
005F1805.mov     edx, 005F1AFC
005F180A.call    005A07B8
005F180F.push    1
005F1811.lea     eax, dword ptr [ebp-4]
005F1814.mov     ecx, 005F1A54
005F1819.mov     edx, 005F1B08
005F181E.call    005A07B8
005F1823.Push    1
005F1825.lea     eax, dword ptr [ebp-4]
005F1828.mov     ecx, 005F1A6C
005F182D.mov     edx, 005F1B14
005F1832.call    005A07B8
005F1837.push    1
005F1839.lea     eax, dword ptr [ebp-4]
005F183C.mov     ecx, 005F1A84
005F1841.mov     edx, 005F1B20
005F1846.call    005A07B8
005F184B.push    1
005F184D.lea     eax, dword ptr [ebp-4]
005F1850.mov     ecx, 005F1A9C
005F1855.mov     edx, 005F1B2C
005F185A.call    005A07B8
005F185Fpush    1
005F1861.lea     eax, dword ptr [ebp-4]
005F1864.mov     ecx, 005F1B38                    ;  ASCII "10"
005F1869.mov     edx, 005F1B44
005F186E.call    005A07B8
005F1873.push    1
005F1875.lea     eax, dword ptr [ebp-4]
005F1878.xor     ecx, ecx
005F187A.mov     edx, 005F1B50
005F187F.call    005A07B8
005F1884.push    1
005F1886.lea     eax, dword ptr [ebp-4]
005F1889.xor     ecx, ecx
005F188B.mov     edx, 005F1B5C
005F1890.call    005A07B8
005F1895.push    1
005F1897.lea     eax, dword ptr [ebp-4]
005F189A.xor     ecx, ecx
005F189C.mov     edx, 005F1B68
005F18A1.call    005A07B8
005F18A6.push    1
005F18A8.lea     eax, dword ptr [ebp-4]
005F18AB.xor     ecx, ecx
005F18AD.mov     edx, 005F1B74
005F18B2.call    005A07B8
005F18B7.push    1
005F18B9.lea     eax, dword ptr [ebp-4]
005F18BC.xor     ecx, ecx
005F18BE.mov     edx, 005F1B80
005F18C3.call    005A07B8
005F18C8.push    1
005F18CA.lea     eax, dword ptr [ebp-4]
005F18CD.xor     ecx, ecx
005F18CF.mov     edx, 005F1B8C
005F18D4.Ecall    005A07B8
005F18D9.push    1
005F18DB.lea     eax, dword ptr [ebp-4]
005F18DE.33xor     ecx, ecx
005F18E0.mov     edx, 005F1B98
005F18E5.call    005A07B8
005F18EA.push    1
005F18EC.lea     eax, dword ptr [ebp-4]
005F18EF.xor     ecx, ecx
005F18F1.mov     edx, 005F1BA4
005F18F6.call    005A07B8
005F18FB.push    1
005F18FD.lea     eax, dword ptr [ebp-4]
005F1900.xor     ecx, ecx
005F1902.mov     edx, 005F1B74
005F1907.call    005A07B8
005F190C.mov     eax, esi
005F190E.call    0040498C
005F1913.xor     ebx, 1F2B
005F1919.imul    eax, ebx, 917F7
005F191F.mov     ebx, eax
005F1921.lea     edx, dword ptr [ebp-1C]
005F1924.mov     eax, ebx
005F1926.call    00409BDC
005F192B.mov     edx, dword ptr [ebp-1C]
005F192E.lea     eax, dword ptr [ebp-4]
005F1931.mov     ecx, dword ptr [ebp-4]
005F1934.call    00404CA0
005F1939.mov     ecx, esi
005F193B.mov     edx, dword ptr [ebp-4]
005F193E.mov     eax, ebx
005F1940.call    005F1208
005F1945.xor     eax, eax
005F1947.pop     edx
005F1948.pop     ecx
005F1949.pop     ecx
005F194A.mov     dword ptr fs:[eax], edx
005F194D.push    005F1967
005F1952|lea     eax, dword ptr [ebp-1C]
005F1955.mov     edx, 7
005F195A.call    004049B0
005F195F\retn
本人没搞清算法。有那位朋友 可以提示一二。谢谢{最好是加密狗部分}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
等着不懂算法来回帖 他是算法大牛
2009-1-10 05:39
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先我应该是第一次在看雪上发言的,如有错误之出,请高手莫笑.
我认为上面代码应该是Delphi写的,所以破解应该用DEDE方便很多.
至于这个算法,我记得call    00404A24,好像是system单元里的LStrcmp函数
下面的call    005A07B8感觉应该是一个迭代计算的函数,你不防跟踪下eax的变化.
2009-1-10 09:05
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶楼上的处女贴!潜水好厉害啊!
2009-1-11 00:37
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢3楼的兄弟。今天,我再跟踪下。这款软件 厂家卖4000多元人民币呢。有点黑了。
2009-1-11 10:47
0
游客
登录 | 注册 方可回帖
返回
//