创奇会计档案管理系统 2.0注册算法
【破文标题】创奇会计档案管理系统 2.0注册算法【破文作者】XXNB
【作者邮箱】支持PYG
【作者主页】http://free.ys168.com/?binbinbin7456
【破解工具】OD
【破解平台】xpsp2
【软件名称】创奇会计档案管理系统 2.0
【软件大小】2852KB
【原版下载】http://www.newhua.com/soft/49987.htm
【保护方式】名+码
【软件简介】 该系统根据国家会计档案整理标准设计通用性强、数据库灵活的备份与恢复使你的工作得到保证、数据EXCEL、WORD的导出使系
统具有更强扩展性。
【破解声明】向大侠们学习!!!只为学习!请尊重作者的劳动成功!
------------------------------------------------------------------------
【破解过程】
这两天学了下脱壳。
结果给我找到了个国产的用Aspr标准加壳的软件。verA0.15查到的是:Version: ASProtect 2.11 SKE build 03.13 Release
我照大侠们的补区段大法顺利脱壳成功,然后发现算法还是比较简单,所以。放出来了。
1、下断函数:bp MessageBoxA。然后查看堆栈信息。我们能够返回到下面的关键代码处!!
006259BC/.55 push ebp
006259BD|.8BEC mov ebp, esp
006259BF|.33C9 xor ecx, ecx
006259C1|.51 push ecx
006259C2|.51 push ecx
006259C3|.51 push ecx
006259C4|.51 push ecx
006259C5|.51 push ecx
006259C6|.51 push ecx
006259C7|.53 push ebx
006259C8|.56 push esi
006259C9|.8BD8 mov ebx, eax
006259CB|.33C0 xor eax, eax
006259CD|.55 push ebp
006259CE|.68 4B5B6200 push 00625B4B
006259D3|.64:FF30 push dword ptr fs:
006259D6|.64:8920 mov dword ptr fs:, esp
006259D9|.8D55 F4 lea edx, dword ptr
006259DC|.8B83 E0020000 mov eax, dword ptr
006259E2|.E8 B956E5FF call 0047B0A0
006259E7|.8B45 F4 mov eax, dword ptr ;用户名出现了
006259EA|.8D55 FC lea edx, dword ptr
006259ED|.E8 D643DEFF call 00409DC8
006259F2|.8D55 F0 lea edx, dword ptr
006259F5|.8B83 E4020000 mov eax, dword ptr
006259FB|.E8 A056E5FF call 0047B0A0
00625A00|.8B45 F0 mov eax, dword ptr ;假码出现了
00625A03|.8D55 F8 lea edx, dword ptr
00625A06|.E8 BD43DEFF call 00409DC8
00625A0B|.837D FC 00 cmp dword ptr , 0 ;用户名是否为空
00625A0F|.74 06 je short 00625A17
00625A11|.837D F8 00 cmp dword ptr , 0 ;注册码是否为空
00625A15|.75 16 jnz short 00625A2D
00625A17|>A1 60876400 mov eax, dword ptr
00625A1C|.8B00 mov eax, dword ptr
00625A1E|.BA 605B6200 mov edx, 00625B60
00625A23|.E8 E445FBFF call 005DA00C
00625A28|.E9 03010000 jmp 00625B30
00625A2D|>8B45 FC mov eax, dword ptr ;用户名到eax
00625A30|.E8 D3E6DDFF call 00404108 ;计算位数
00625A35|.83F8 0A cmp eax, 0A ;和0A(10)比较。要求用户名大于等于10位数
00625A38|.7D 16 jge short 00625A50
00625A3A|.A1 60876400 mov eax, dword ptr
00625A3F|.8B00 mov eax, dword ptr
00625A41|.BA 805B6200 mov edx, 00625B80
00625A46|.E8 C145FBFF call 005DA00C
00625A4B|.E9 E0000000 jmp 00625B30
00625A50|>8D55 EC lea edx, dword ptr
00625A53|.8B45 FC mov eax, dword ptr ;用户名到eax
00625A56|.E8 D9F8FFFF call 00625334 ;最重要的算法call。跟进《《《《《《《《《----------
00625A5B|.8B45 EC mov eax, dword ptr ;真正的注册码
00625A5E|.8B55 F8 mov edx, dword ptr ;假码
00625A61|.E8 B2E7DDFF call 00404218 ;想都不用想是比较函数了
00625A66|.74 16 je short 00625A7E ;关键跳。相等就注册成功。
00625A68|.A1 60876400 mov eax, dword ptr
00625A6D|.8B00 mov eax, dword ptr
00625A6F|.BA A45B6200 mov edx, 00625BA4
00625A74|.E8 9345FBFF call 005DA00C
00625A79|.E9 B2000000 jmp 00625B30
00625A7E|>8D55 E8 lea edx, dword ptr
00625A81|.8B45 FC mov eax, dword ptr
00625A84|.E8 ABF8FFFF call 00625334
00625A89|.8B45 E8 mov eax, dword ptr
00625A8C|.8B55 F8 mov edx, dword ptr
00625A8F|.E8 84E7DDFF call 00404218
00625A94|.0F85 96000000 jnz 00625B30
00625A9A|.B2 01 mov dl, 1
00625A9C|.A1 7C044D00 mov eax, dword ptr
00625AA1|.E8 42ABEAFF call 004D05E8
00625AA6|.8BF0 mov esi, eax
00625AA8|.BA 02000080 mov edx, 80000002
00625AAD|.8BC6 mov eax, esi
00625AAF|.E8 10ACEAFF call 004D06C4
00625AB4|.B1 01 mov cl, 1
00625AB6|.BA BC5B6200 mov edx, 00625BBC ;ASCII "Software\WonderSofteware\account2.0"
00625ABB|.8BC6 mov eax, esi
00625ABD|.E8 46ADEAFF call 004D0808
00625AC2|.84C0 test al, al
00625AC4|.74 6A je short 00625B30
00625AC6|.8B4D FC mov ecx, dword ptr
00625AC9|.BA E85B6200 mov edx, 00625BE8 ;ASCII "RegName"
00625ACE|.8BC6 mov eax, esi
00625AD0|.E8 77B1EAFF call 004D0C4C
00625AD5|.8B4D F8 mov ecx, dword ptr
00625AD8|.BA F85B6200 mov edx, 00625BF8 ;ASCII "RegValue"
00625ADD|.8BC6 mov eax, esi
00625ADF|.E8 68B1EAFF call 004D0C4C
2、跟进算法00625A56|.E8 D9F8FFFF call 00625334 。我们得到:
00625334/$55 push ebp
00625335|.8BEC mov ebp, esp
00625337|.81C4 ECFDFFFF add esp, -214
0062533D|.53 push ebx
0062533E|.56 push esi
0062533F|.57 push edi
00625340|.33C9 xor ecx, ecx
00625342|.898D ECFDFFFF mov dword ptr , ecx ;假码
00625348|.894D F0 mov dword ptr , ecx
0062534B|.894D F4 mov dword ptr , ecx
0062534E|.8955 F8 mov dword ptr , edx
00625351|.8945 FC mov dword ptr , eax ;用户名
00625354|.8B45 FC mov eax, dword ptr
00625357|.E8 60EFDDFF call 004042BC
0062535C|.33C0 xor eax, eax
0062535E|.55 push ebp
0062535F|.68 39546200 push 00625439
00625364|.64:FF30 push dword ptr fs:
00625367|.64:8920 mov dword ptr fs:, esp
0062536A|.8D45 F4 lea eax, dword ptr
0062536D|.E8 16EBDDFF call 00403E88
00625372|.8B45 FC mov eax, dword ptr ;用户名
00625375|.E8 8EEDDDFF call 00404108 ;计算位数
0062537A|.8BF8 mov edi, eax
0062537C|.85FF test edi, edi
0062537E|.7E 48 jle short 006253C8
00625380|.BB 01000000 mov ebx, 1 ;计数器,准备循环
00625385|>8B45 FC /mov eax, dword ptr ;用户名到eax
00625388|.0FB67418 FF |movzx esi, byte ptr ;逐个取用户名ascii码值
0062538D|.B8 50546200 |mov eax, 00625450 ;固定字符串 "df`af876sgbv82d2kgtyklj`yrte3\8o@wyt-
9olkh3k325js^i\o2ulj+ji56ase7dgl;5r4dfg443243yr657"
00625392|.0FB64418 FF |movzx eax, byte ptr ;逐个取固定字符串ascii码值
00625397|.33F0 |xor esi, eax ;两个值异或
00625399|.8D8D F0FEFFFF |lea ecx, dword ptr
0062539F|.BA 03000000 |mov edx, 3 ;常数3
006253A4|.8BC6 |mov eax, esi ;异或的结果放到eax
006253A6|.E8 01FFFFFF |call 006252AC
006253AB|.8D95 F0FEFFFF |lea edx, dword ptr ;结果变成“006”
006253B1|.8D45 F0 |lea eax, dword ptr
006253B4|.E8 F3ECDDFF |call 004040AC
006253B9|.8B55 F0 |mov edx, dword ptr ;结果转成10进制,并且取3位。不满3位用0补。如“006”
006253BC|.8D45 F4 |lea eax, dword ptr
006253BF|.E8 4CEDDDFF |call 00404110
006253C4|.43 |inc ebx
006253C5|.4F |dec edi
006253C6|.^ 75 BD \jnz short 00625385 ;循环结束
006253C8|>8D95 ECFDFFFF lea edx, dword ptr
006253CE|.8B45 F4 mov eax, dword ptr ;这里得到的就是上面循环结束后,得到的字符串。
006253D1|.E8 F249DEFF call 00409DC8
006253D6|.8B95 ECFDFFFF mov edx, dword ptr
006253DC|.8D85 F0FDFFFF lea eax, dword ptr
006253E2|.B9 FF000000 mov ecx, 0FF
006253E7|.E8 F8ECDDFF call 004040E4
006253EC|.8D85 F0FDFFFF lea eax, dword ptr
006253F2|.8D95 F0FEFFFF lea edx, dword ptr
006253F8|.E8 07FEFFFF call 00625204 ;字符串倒转函数
006253FD|.8D95 F0FEFFFF lea edx, dword ptr ;倒转后的字符串出现了
00625403|.8B45 F8 mov eax, dword ptr ;上面这个倒过来后的字符串,就是真正注册码了
00625406|.E8 A1ECDDFF call 004040AC
0062540B|.33C0 xor eax, eax
0062540D|.5A pop edx
0062540E|.59 pop ecx
0062540F|.59 pop ecx
00625410|.64:8910 mov dword ptr fs:, edx
00625413|.68 40546200 push 00625440
00625418|>8D85 ECFDFFFF lea eax, dword ptr
0062541E|.E8 65EADDFF call 00403E88
00625423|.8D45 F0 lea eax, dword ptr
00625426|.BA 02000000 mov edx, 2
0062542B|.E8 7CEADDFF call 00403EAC
00625430|.8D45 FC lea eax, dword ptr
00625433|.E8 50EADDFF call 00403E88
00625438\.C3 retn
注册机代码下午先。
------------------------------------------------------------------------
【破解总结】
------------------------------------------------------------------------
1、判断用户名位数一定要大于等于10位数。
2、逐个取用户名字符串的Ascii码值到esi,
相应的逐个取固定字符串“df`af876sgbv82d2kgtyklj`yrte3\8o@wyt-9olkh3k325js^i\o2ulj+ji56ase7dgl;5r4dfg443243yr657”到eax
然后esi 异或 eax。得到的值装成10进制。如果不足三位的用0填充。如:“6”->“006”。“15”->“015”
3、把得到的异或值填充后的字符串连接后,再倒过来,就是最后真正的注册码了。
如:用户名:binbinbinbin
注册码:420110500920590580680510300410510600 来学习一下。。。 00C00000-00400000=800000
01060000-00400000=C60000
010B0000-00400000=CB0000
01220000-00400000=E20000
01250000-00400000=E50000
012C0000-00400000=EC0000
012D0000-00400000=ED0000
012E0000-00400000=EE0000
012F0000-00400000=EF0000
01300000-00400000=F00000
这个软件的3.0已经出来。这个是它脱壳时候要补的区段。 “dd23439olklj+jik32fg443243\o2u8o@wgbv825ytryrl;5kgi\-klj`ashjs^df`afteyr65756tye7dg876s”
这个软件的2.0和3.0的算法差别就只是变换了下固定字符串。作者真是太忙了,看来。
页:
[1]