好友
阅读权限25
听众
最后登录1970-1-1
|
Ruin
发表于 2012-6-23 07:34
本帖最后由 Ruin 于 2012-6-23 08:59 编辑
【文章标题】: 寻找被加密的EXE真实密码
【文章作者】: Ruin
【软件名称】: akalaexelock3.20
【软件大小】: 506 KB
【下载地址】: 自己搜索下载
【加壳方式】: aspack2.12
【编写语言】: Borland Delphi
【使用工具】: OD PEID ASPack脱壳机
【操作平台】: XP
【软件介绍】: 一款国外的加密程序 样子还不错
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------------------
【详细过程】
这款国外加密EXE的样子 以前很喜欢 后来没能力破解 密码只能6位
进了吾爱也有一段时间了 学习的东西 也挺多.......
感谢诸位师傅的教导:邦牛,K大,酱油牛,海贼牛,qaz大大,zhi大大,qzy大大,还有咪咪爷,膜拜P叔把我带上这个舞台,
--------------------------------------------------------------------------------
首先PEID查壳
ASPack 2.12 -> Alexey Solodovnikov [Overlay]
ASPack这款壳在各位同学的工具包里都有 直接拿来使用一下 当然希望手动的东西直接ESP定律到OEP OD自带插件脱壳
取消重建输入表 就不需要修复了
现在我们载入OD
脱壳后的入口点 004644E0 > $ 55 push ebp
004644E1 . 8BEC mov ebp,esp
004644E3 . 83C4 F0 add esp,-0x10
004644E6 . B8 D8414600 mov eax,1ZPFixer.004641D8 ; UNICODE "`"
004644EB . E8 B01CFAFF call 1ZPFixer.004061A0
004644F0 . A1 28634600 mov eax,dword ptr ds:[0x466328]
004644F5 . 8B00 mov eax,dword ptr ds:[eax]
004644F7 . E8 B01AFFFF call 1ZPFixer.00455FAC
004644FC . A1 28634600 mov eax,dword ptr ds:[0x466328]
00464501 . 8B00 mov eax,dword ptr ds:[eax]
00464503 . BA 40454600 mov edx,1ZPFixer.00464540 ; ASCII "Akala EXE Lock"
00464508 . E8 9716FFFF call 1ZPFixer.00455BA4
0046450D . 8B0D 2C644600 mov ecx,dword ptr ds:[0x46642C] ; 1ZPFixer.004690C4
00464513 . A1 28634600 mov eax,dword ptr ds:[0x466328]
00464518 . 8B00 mov eax,dword ptr ds:[eax]
0046451A . 8B15 B8374600 mov edx,dword ptr ds:[0x4637B8] ; 1ZPFixer.00463804
00464520 . E8 9F1AFFFF call 1ZPFixer.00455FC4
00464525 . A1 28634600 mov eax,dword ptr ds:[0x466328]
0046452A . 8B00 mov eax,dword ptr ds:[eax]
0046452C . E8 131BFFFF call 1ZPFixer.00456044
00464531 . E8 F6F9F9FF call 1ZPFixer.00403F2C
从OEP看 就知道是Delphi的特征
接下来用上大家都知道的Point-H破解法 俗称:万能断点
首先启动程序F9运行
任意输入假码 点ok (我就输入123456)
好 成功断下
在次F9运行让寄存器显示我们的假码
接下来在 堆栈 寻找 返回到
0012FC10 |00463EC4 返回到 1ZPFixer.00463EC4 来自 1ZPFixer.004366C0
这些我相信同学们都学过了 接下来右键这里反汇编窗口数据跟随
00463DE8 /. 55 push ebp
00463DE9 |. 8BEC mov ebp,esp
00463DEB |. 33C9 xor ecx,ecx
00463DED |. 51 push ecx
00463DEE |. 51 push ecx
00463DEF |. 51 push ecx
00463DF0 |. 51 push ecx
00463DF1 |. 51 push ecx
00463DF2 |. 51 push ecx
00463DF3 |. 53 push ebx
00463DF4 |. 56 push esi
00463DF5 |. 8BF0 mov esi,eax
00463DF7 |. 33C0 xor eax,eax
00463DF9 |. 55 push ebp
00463DFA |. 68 4D3F4600 push 1ZPFixer.00463F4D
00463DFF |. 64:FF30 push dword ptr fs:[eax]
00463E02 |. 64:8920 mov dword ptr fs:[eax],esp
00463E05 |. 8D86 48030000 lea eax,dword ptr ds:[esi+0x348]
00463E0B |. BA 5C3F4600 mov edx,1ZPFixer.00463F5C
00463E10 |. 33C9 xor ecx,ecx
00463E12 |. 8A08 mov cl,byte ptr ds:[eax]
00463E14 |. 41 inc ecx
00463E15 |. E8 56EEF9FF call 1ZPFixer.00402C70
00463E1A |. 74 15 je short 1ZPFixer.00463E31
00463E1C |. BA 783F4600 mov edx,1ZPFixer.00463F78 ; ASCII "Encryption Flag Error!"
00463E21 |. 8B86 28030000 mov eax,dword ptr ds:[esi+0x328]
00463E27 |. E8 9428FDFF call 1ZPFixer.004366C0
00463E2C |. E9 F1000000 jmp 1ZPFixer.00463F22
00463E31 |> 8D45 F8 lea eax,[local.2]
在push ebp处F2下断
取消万能断点
F9运行程序
好了 成功断在了push ebp
F8单步往下走 这时候请注意 寄存器
在push ebp处F2下断
取消万能断点
F9运行程序
好了 成功断在了push ebp
F8单步往下走 这时候请注意 寄存器 00463DE8 /. 55 push ebp
00463DE9 |. 8BEC mov ebp,esp
00463DEB |. 33C9 xor ecx,ecx
00463DED |. 51 push ecx
00463DEE |. 51 push ecx
00463DEF |. 51 push ecx
00463DF0 |. 51 push ecx
00463DF1 |. 51 push ecx
00463DF2 |. 51 push ecx
00463DF3 |. 53 push ebx
00463DF4 |. 56 push esi
00463DF5 |. 8BF0 mov esi,eax
00463DF7 |. 33C0 xor eax,eax
00463DF9 |. 55 push ebp
00463DFA |. 68 4D3F4600 push 1ZPFixer.00463F4D
00463DFF |. 64:FF30 push dword ptr fs:[eax]
00463E02 |. 64:8920 mov dword ptr fs:[eax],esp
00463E05 |. 8D86 48030000 lea eax,dword ptr ds:[esi+0x348]
00463E0B |. BA 5C3F4600 mov edx,1ZPFixer.00463F5C
00463E10 |. 33C9 xor ecx,ecx
00463E12 |. 8A08 mov cl,byte ptr ds:[eax]
00463E14 |. 41 inc ecx
00463E15 |. E8 56EEF9FF call 1ZPFixer.00402C70
00463E1A |. 74 15 je short 1ZPFixer.00463E31 ; 这里跳过了一个提示 不知道什么提示 不管他
00463E1C |. BA 783F4600 mov edx,1ZPFixer.00463F78 ; ASCII "Encryption Flag Error!"
00463E21 |. 8B86 28030000 mov eax,dword ptr ds:[esi+0x328]
00463E27 |. E8 9428FDFF call 1ZPFixer.004366C0
00463E2C |. E9 F1000000 jmp 1ZPFixer.00463F22
00463E31 |> 8D45 F8 lea eax,[local.2]
00463E34 |. 8D96 59030000 lea edx,dword ptr ds:[esi+0x359]
00463E3A |. E8 6104FAFF call 1ZPFixer.004042A0
00463E3F |. 8B45 F8 mov eax,[local.2] ; 开始出现类似与密码的数字和字符了
00463E42 |. 8D55 FC lea edx,[local.1]
00463E45 |. E8 0E9DFFFF call 1ZPFixer.0045DB58
00463E4A |. 8B45 FC mov eax,[local.1] ; 成功出现真实密码52pojie
00463E4D |. 50 push eax
00463E4E |. 8D55 F4 lea edx,[local.3]
00463E51 |. 8B86 2C030000 mov eax,dword ptr ds:[esi+0x32C]
00463E57 |. E8 3428FDFF call 1ZPFixer.00436690
00463E5C >|. 8B55 F4 mov edx,[local.3] ; 出现我们的假码
00463E5F |. 58 pop eax
00463E60 |. E8 E305FAFF call 1ZPFixer.00404448
00463E65 >|. 74 6D je short 1ZPFixer.00463ED4 ; 假码与真码比较 真跳 假不跳 不跳就提示错误
00463E67 |. FE86 40030000 inc byte ptr ds:[esi+0x340]
00463E6D |. 8A9E 40030000 mov bl,byte ptr ds:[esi+0x340]
00463E73 |. 80FB 03 cmp bl,0x3
00463E76 |. 76 0C jbe short 1ZPFixer.00463E84
00463E78 |. 8BC6 mov eax,esi
00463E7A |. E8 85EAFEFF call 1ZPFixer.00452904
00463E7F |. E9 9E000000 jmp 1ZPFixer.00463F22
00463E84 |> 8D45 F0 lea eax,[local.4]
00463E87 |. 50 push eax
00463E88 |. 33C0 xor eax,eax
00463E8A |. 8AC3 mov al,bl
00463E8C |. BA 04000000 mov edx,0x4
00463E91 |. 2BD0 sub edx,eax
00463E93 |. 8955 E8 mov [local.6],edx
00463E96 |. C645 EC 00 mov byte ptr ss:[ebp-0x14],0x0
00463E9A |. 8D55 E8 lea edx,[local.6]
00463E9D |. 33C9 xor ecx,ecx
00463E9F |. B8 983F4600 mov eax,1ZPFixer.00463F98 ; ASCII "Password Error! %d tries left."
00463EA4 |. E8 3753FAFF call 1ZPFixer.004091E0
00463EA9 |. 8B55 F0 mov edx,[local.4]
00463EAC |. 8B86 28030000 mov eax,dword ptr ds:[esi+0x328]
00463EB2 |. E8 0928FDFF call 1ZPFixer.004366C0
00463EB7 |. 33D2 xor edx,edx
00463EB9 |. 8B86 2C030000 mov eax,dword ptr ds:[esi+0x32C]
00463EBF |. E8 FC27FDFF call 1ZPFixer.004366C0
00463EC4 |. 8B86 2C030000 mov eax,dword ptr ds:[esi+0x32C]
00463ECA |. 8B10 mov edx,dword ptr ds:[eax]
00463ECC |. FF92 C4000000 call dword ptr ds:[edx+0xC4]
00463ED2 |. EB 4E jmp short 1ZPFixer.00463F22
00463ED4 |> 8B86 38030000 mov eax,dword ptr ds:[esi+0x338]
--------------------------------------------------------------------------------
【经验总结】
只要多去尝试 就会学到自己想学的东西 玩破解这几个月里 多谢邦邦 有机会 我们要吃十斤牛腰子 四十斤蚕卵
第一次写破文 如果有什么不足的地方 希望各位同学和大牛指点一下 在次祝大家端午节快乐!
--------------------------------------------------------------------------------
【版权声明】: 本文原创于 吾爱破解Ruin, 转载请注明作者并保持文章的完整, 谢谢!
2012年06月23日 07:28:25
|
免费评分
-
查看全部评分
|