- UID
- 22350
注册时间2006-10-1
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 奋斗 2017-6-11 12:16 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
|
【破文标题】创奇会计档案管理系统 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 |
评分
-
查看全部评分
|