binbinbin 发表于 2006-11-23 14:52:54

创奇会计档案管理系统 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

a9509311 发表于 2006-11-23 16:32:07

来学习一下。。。

binbinbin 发表于 2006-11-25 14:36:03

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已经出来。这个是它脱壳时候要补的区段。

binbinbin 发表于 2006-11-25 14:36:55

“dd23439olklj+jik32fg443243\o2u8o@wgbv825ytryrl;5kgi\-klj`ashjs^df`afteyr65756tye7dg876s”


这个软件的2.0和3.0的算法差别就只是变换了下固定字符串。作者真是太忙了,看来。
页: [1]
查看完整版本: 创奇会计档案管理系统 2.0注册算法