经过分析判断,这款软件采用了程序启动时寻找读取加密狗、并判断注册码的方式。
以我这菜鸟的分析能力,要把加密狗部分搞掉可能很难,有乐于助人的高手,帮忙下{呵呵};
注册码的计算跟几个内容有关: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直播授课