【文章标题】: PDF Split-Merge V3.1 算法简单分析
【文章作者】: qifeon
【软件名称】: PDF Split-Merge
【下载地址】: http://tele.skycn.com/soft/28472.html
【加壳方式】: ASProtect 2.1x SKE
【保护方式】: 壳+注册码
【编写语言】: Borland C++ 1999
【使用工具】: OD,PEID
【操作平台】: WINXP SP2
【软件介绍】: 一个用来分解/合并PDF文件的工具。支持拖拽功能,
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
一、PEID查壳,为 ASProtect 2.1x SKE -> Alexey Solodovnikov,猛壳。我用脚本来脱掉,也可以直接带壳调试。
脱壳后显示为Borland C++ 1999。
二、试运行软件。有试用版显示,输入试炼码“123456”,有错误提示框出现。
三、好了,了解这么多我们可以下手了。用DEDE找按钮事件;0040E5D8
OD载入程序,F9运行,有异常,俩次“SHIFT+F9”,出现注册对话框。“CTRL+G”输入0040E5D8,来到反汇编后此处下断。
输入试炼码“123456”点注册按钮,断下,OK。
0040E5D8 /. 55 push ebp 按钮事件
0040E5D9 |. 8BEC mov ebp, esp
0040E5DB |. 83C4 BC add esp, -44
0040E5DE |. 53 push ebx
0040E5DF |. 56 push esi
0040E5E0 |. 8BD8 mov ebx, eax
0040E5E2 |. BE D3EE6600 mov esi, 0066EED3
0040E5E7 |. B8 E0F06600 mov eax, 0066F0E0
0040E5EC |. E8 CF5D2300 call 006443C0
0040E5F1 |. 66:C745 E0 14>mov word ptr [ebp-20], 14
0040E5F7 |. 33D2 xor edx, edx
0040E5F9 |. 8955 FC mov dword ptr [ebp-4], edx
0040E5FC |. 8D55 FC lea edx, dword ptr [ebp-4]
0040E5FF |. FF45 EC inc dword ptr [ebp-14]
0040E602 |. 8B83 18030000 mov eax, dword ptr [ebx+318]
0040E608 |. E8 B7D21D00 call 005EB8C4 ; 取注册码长度
0040E60D |. 66:C745 E0 08>mov word ptr [ebp-20], 8
0040E613 |. 837D FC 00 cmp dword ptr [ebp-4], 0 ; 注册码是否为空?
0040E617 |. 74 05 je short 0040E61E
0040E619 |. 8B55 FC mov edx, dword ptr [ebp-4] ; EDX指向注册码
0040E61C |. EB 03 jmp short 0040E621
0040E61E |> 8D56 1D lea edx, dword ptr [esi+1D]
0040E621 |> 8BC3 mov eax, ebx
0040E623 |. E8 40040000 call 0040EA68 关键call,跟进
0040E628 |. 84C0 test al, al ; 标志位
0040E62A |. 75 67 jnz short 0040E693 ; 关键跳转
0040E62C |. 66:C745 E0 20>mov word ptr [ebp-20], 20
0040E632 |. 8D56 1E lea edx, dword ptr [esi+1E]
0040E635 |. 8D45 F8 lea eax, dword ptr [ebp-8]
0040E638 |. E8 07562400 call 00653C44
0040E63D |. FF45 EC inc dword ptr [ebp-14]
0040E640 |. 8B10 mov edx, dword ptr [eax]
0040E642 |. 8B83 20030000 mov eax, dword ptr [ebx+320]
0040E648 |. E8 A7D21D00 call 005EB8F4
0040E64D |. FF4D EC dec dword ptr [ebp-14]
0040E650 |. 8D45 F8 lea eax, dword ptr [ebp-8]
0040E653 |. BA 02000000 mov edx, 2
0040E658 |. E8 47572400 call 00653DA4
0040E65D |. 6A 10 push 10
0040E65F |. 8D4E 5F lea ecx, dword ptr [esi+5F]
0040E662 |. 51 push ecx
0040E663 |. 8D46 2C lea eax, dword ptr [esi+2C]
0040E666 |. 50 push eax
0040E667 |. 8BC3 mov eax, ebx
0040E669 |. E8 6A391E00 call 005F1FD8
0040E66E |. 50 push eax ; |hOwner
0040E66F |. E8 78962500 call <jmp.&user32.MessageBoxA> ; \错误对话框
0040E674 |. FF4D EC dec dword ptr [ebp-14]
0040E677 |. 8D45 FC lea eax, dword ptr [ebp-4]
0040E67A |. BA 02000000 mov edx, 2
0040E67F |. E8 20572400 call 00653DA4
0040E684 |. 8B4D D0 mov ecx, dword ptr [ebp-30]
0040E687 |. 64:890D 00000>mov dword ptr fs:[0], ecx
0040E68E |. E9 9F000000 jmp 0040E732
0040E693 |> 837D FC 00 cmp dword ptr [ebp-4], 0
0040E697 |. 74 05 je short 0040E69E
0040E699 |. 8B4D FC mov ecx, dword ptr [ebp-4]
0040E69C |. EB 03 jmp short 0040E6A1
0040E69E |> 8D4E 65 lea ecx, dword ptr [esi+65]
0040E6A1 |> 33D2 xor edx, edx
0040E6A3 |. 8BC3 mov eax, ebx
0040E6A5 |. E8 5E020000 call 0040E908
0040E6AA |. 66:C745 E0 2C>mov word ptr [ebp-20], 2C
0040E6B0 |. 8D56 66 lea edx, dword ptr [esi+66]
0040E6B3 |. 8D45 F4 lea eax, dword ptr [ebp-C]
0040E6B6 |. E8 89552400 call 00653C44
0040E6BB |. FF45 EC inc dword ptr [ebp-14]
0040E6BE |. 8B10 mov edx, dword ptr [eax]
0040E6C0 |. 8B83 20030000 mov eax, dword ptr [ebx+320]
0040E6C6 |. E8 29D21D00 call 005EB8F4
0040E6CB |. FF4D EC dec dword ptr [ebp-14]
0040E6CE |. 8D45 F4 lea eax, dword ptr [ebp-C]
0040E6D1 |. BA 02000000 mov edx, 2
0040E6D6 |. E8 C9562400 call 00653DA4
0040E6DB |. 8D8E B7000000 lea ecx, dword ptr [esi+B7]
0040E6E1 |. 6A 40 push 40
0040E6E3 |. 51 push ecx
0040E6E4 |. 8D46 79 lea eax, dword ptr [esi+79]
0040E6E7 |. 50 push eax
0040E6E8 |. 8BC3 mov eax, ebx
0040E6EA |. C705 40816600>mov dword ptr [668140], 2710
0040E6F4 |. E8 DF381E00 call 005F1FD8
0040E6F9 |. 50 push eax ; |hOwner
0040E6FA |. E8 ED952500 call <jmp.&user32.MessageBoxA> ; \成功对话框
0040E6FF |. 6A 00 push 0
0040E701 |. 68 60F00000 push 0F060
0040E706 |. 68 12010000 push 112
0040E70B |. 8BC3 mov eax, ebx
0040E70D |. E8 C6381E00 call 005F1FD8
0040E712 |. 50 push eax ; |hWnd
0040E713 |. E8 52962500 call <jmp.&user32.SendMessageA> ; \SendMessageA
0040E718 |. FF4D EC dec dword ptr [ebp-14]
0040E71B |. 8D45 FC lea eax, dword ptr [ebp-4]
0040E71E |. BA 02000000 mov edx, 2
0040E723 |. E8 7C562400 call 00653DA4
0040E728 |. 8B4D D0 mov ecx, dword ptr [ebp-30]
0040E72B |. 64:890D 00000>mov dword ptr fs:[0], ecx
0040E732 |> 5E pop esi
0040E733 |. 5B pop ebx
0040E734 |. 8BE5 mov esp, ebp
0040E736 |. 5D pop ebp
0040E737 \. C3 retn
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)