飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3692|回复: 3

[原创] 创奇会计档案管理系统 2.0注册算法

[复制链接]
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-11-23 14:52:54 | 显示全部楼层 |阅读模式
    【破文标题】创奇会计档案管理系统 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]

    我照大侠们的补区段大法顺利脱壳成功,然后发现算法还是比较简单,所以。放出来了。

    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:[eax]
    006259D6  |.  64:8920       mov     dword ptr fs:[eax], esp
    006259D9  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
    006259DC  |.  8B83 E0020000 mov     eax, dword ptr [ebx+2E0]
    006259E2  |.  E8 B956E5FF   call    0047B0A0
    006259E7  |.  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  用户名出现了
    006259EA  |.  8D55 FC       lea     edx, dword ptr [ebp-4]
    006259ED  |.  E8 D643DEFF   call    00409DC8
    006259F2  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
    006259F5  |.  8B83 E4020000 mov     eax, dword ptr [ebx+2E4]
    006259FB  |.  E8 A056E5FF   call    0047B0A0
    00625A00  |.  8B45 F0       mov     eax, dword ptr [ebp-10]          ;  假码出现了
    00625A03  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
    00625A06  |.  E8 BD43DEFF   call    00409DC8
    00625A0B  |.  837D FC 00    cmp     dword ptr [ebp-4], 0             ;  用户名是否为空
    00625A0F  |.  74 06         je      short 00625A17
    00625A11  |.  837D F8 00    cmp     dword ptr [ebp-8], 0             ;  注册码是否为空
    00625A15  |.  75 16         jnz     short 00625A2D
    00625A17  |>  A1 60876400   mov     eax, dword ptr [648760]
    00625A1C  |.  8B00          mov     eax, dword ptr [eax]
    00625A1E  |.  BA 605B6200   mov     edx, 00625B60
    00625A23  |.  E8 E445FBFF   call    005DA00C
    00625A28  |.  E9 03010000   jmp     00625B30
    00625A2D  |>  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  用户名到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 [648760]
    00625A3F  |.  8B00          mov     eax, dword ptr [eax]
    00625A41  |.  BA 805B6200   mov     edx, 00625B80
    00625A46  |.  E8 C145FBFF   call    005DA00C
    00625A4B  |.  E9 E0000000   jmp     00625B30
    00625A50  |>  8D55 EC       lea     edx, dword ptr [ebp-14]
    00625A53  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  用户名到eax
    00625A56  |.  E8 D9F8FFFF   call    00625334                         ;  最重要的算法call。跟进《《《《《《《《《----------
    00625A5B  |.  8B45 EC       mov     eax, dword ptr [ebp-14]          ;  真正的注册码
    00625A5E  |.  8B55 F8       mov     edx, dword ptr [ebp-8]           ;  假码
    00625A61  |.  E8 B2E7DDFF   call    00404218                         ;  想都不用想是比较函数了
    00625A66  |.  74 16         je      short 00625A7E                   ;  关键跳。相等就注册成功。
    00625A68  |.  A1 60876400   mov     eax, dword ptr [648760]
    00625A6D  |.  8B00          mov     eax, dword ptr [eax]
    00625A6F  |.  BA A45B6200   mov     edx, 00625BA4
    00625A74  |.  E8 9345FBFF   call    005DA00C
    00625A79  |.  E9 B2000000   jmp     00625B30
    00625A7E  |>  8D55 E8       lea     edx, dword ptr [ebp-18]
    00625A81  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    00625A84  |.  E8 ABF8FFFF   call    00625334
    00625A89  |.  8B45 E8       mov     eax, dword ptr [ebp-18]
    00625A8C  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
    00625A8F  |.  E8 84E7DDFF   call    00404218
    00625A94  |.  0F85 96000000 jnz     00625B30
    00625A9A  |.  B2 01         mov     dl, 1
    00625A9C  |.  A1 7C044D00   mov     eax, dword ptr [4D047C]
    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 [ebp-4]
    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 [ebp-8]
    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 [ebp-214], ecx         ;  假码
    00625348  |.  894D F0       mov     dword ptr [ebp-10], ecx
    0062534B  |.  894D F4       mov     dword ptr [ebp-C], ecx
    0062534E  |.  8955 F8       mov     dword ptr [ebp-8], edx
    00625351  |.  8945 FC       mov     dword ptr [ebp-4], eax           ;  用户名
    00625354  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
    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:[eax]
    00625367  |.  64:8920       mov     dword ptr fs:[eax], esp
    0062536A  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
    0062536D  |.  E8 16EBDDFF   call    00403E88
    00625372  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  用户名
    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 [ebp-4]          ;  用户名到eax
    00625388  |.  0FB67418 FF   |movzx   esi, byte ptr [eax+ebx-1]       ;  逐个取用户名ascii码值
    0062538D  |.  B8 50546200   |mov     eax, 00625450                   ;  固定字符串 "df`af876sgbv82d2kgtyklj`yrte3\8o@wyt-

    9olkh3k325js^i\o2ulj+ji56ase7dgl;5r4dfg443243yr657"
    00625392  |.  0FB64418 FF   |movzx   eax, byte ptr [eax+ebx-1]       ;  逐个取固定字符串ascii码值
    00625397  |.  33F0          |xor     esi, eax                        ;  两个值异或
    00625399  |.  8D8D F0FEFFFF |lea     ecx, dword ptr [ebp-110]
    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 [ebp-110]        ;  结果变成“006”
    006253B1  |.  8D45 F0       |lea     eax, dword ptr [ebp-10]
    006253B4  |.  E8 F3ECDDFF   |call    004040AC
    006253B9  |.  8B55 F0       |mov     edx, dword ptr [ebp-10]         ;  结果转成10进制,并且取3位。不满3位用0补。如“006”
    006253BC  |.  8D45 F4       |lea     eax, dword ptr [ebp-C]
    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 [ebp-214]
    006253CE  |.  8B45 F4       mov     eax, dword ptr [ebp-C]           ;  这里得到的就是上面循环结束后,得到的字符串。
    006253D1  |.  E8 F249DEFF   call    00409DC8
    006253D6  |.  8B95 ECFDFFFF mov     edx, dword ptr [ebp-214]
    006253DC  |.  8D85 F0FDFFFF lea     eax, dword ptr [ebp-210]
    006253E2  |.  B9 FF000000   mov     ecx, 0FF
    006253E7  |.  E8 F8ECDDFF   call    004040E4
    006253EC  |.  8D85 F0FDFFFF lea     eax, dword ptr [ebp-210]
    006253F2  |.  8D95 F0FEFFFF lea     edx, dword ptr [ebp-110]
    006253F8  |.  E8 07FEFFFF   call    00625204                         ;  字符串倒转函数
    006253FD  |.  8D95 F0FEFFFF lea     edx, dword ptr [ebp-110]         ;  倒转后的字符串出现了
    00625403  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  上面这个倒过来后的字符串,就是真正注册码了
    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:[eax], edx
    00625413  |.  68 40546200   push    00625440
    00625418  |>  8D85 ECFDFFFF lea     eax, dword ptr [ebp-214]
    0062541E  |.  E8 65EADDFF   call    00403E88
    00625423  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
    00625426  |.  BA 02000000   mov     edx, 2
    0062542B  |.  E8 7CEADDFF   call    00403EAC
    00625430  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
    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

    评分

    参与人数 1威望 +40 飘云币 +12 收起 理由
    易难为易 + 40 + 12

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-11-23 16:32:07 | 显示全部楼层
    来学习一下。。。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 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已经出来。这个是它脱壳时候要补的区段。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-6-11 12:16
  • 签到天数: 10 天

    [LV.3]偶尔看看II

     楼主| 发表于 2006-11-25 14:36:55 | 显示全部楼层
    “dd23439olklj+jik32fg443243\o2u8o@wgbv825ytryrl;5kgi\-klj`ashjs^df`afteyr65756tye7dg876s”


    这个软件的2.0和3.0的算法差别就只是变换了下固定字符串。作者真是太忙了,看来。
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表