v1.2》完全破解(2009-05-03 12:02:19)
《外挂制作学习系统v1.2》完全破解
说明一下:本人由于不能上网,因此也放弃了学习外挂的制作,呵呵~~ 这是帮人家找的软件(同时带破解补丁),带破解补丁?不用,为什么人家 可以破解咱不能呢?呼呼~~开工 献给她,祝她开心每一天~~~ HKEY_CURRENT_USER\Software\VB and VBA Program Settings\wgjx\wgjx ======================================= 软件加了壳tElock 0.98b1 -> tE!,至于脱壳过程,在我的脱壳笔记里已经 很清楚了,在此再演示一遍!嘿嘿,学习来不得半点马虎 入口特征: 使用最后一次异常法 0042EBD6 >^\E9 25E4FFFF jmp wgjc.0042D000 0042EBDB 0000 add byte ptr ds:[eax],al 0042EBDD 0090 542DD91E add byte ptr ds:[eax+1ED92D54],dl f8单步一下(不单步也行),OD调试选项(忽略kernel32内存访问),其他的 都去掉勾 shift+f9走一下,17次跑起来了,那么我们重新来过在16次: 0042E7FB 60 pushad 0042E7FC E8 06000000 call wgjc.0042E807 0042E801 8B6424 08 mov esp,dword ptr ss:[esp+8] 0042E805 EB 1A jmp short wgjc.0042E821 0042E807 64:67:FF36 0000 push dword ptr fs:[0] 0042E80D 64:67:8926 0000 mov dword ptr fs:[0],esp 0042E813 9C pushfd 0042E814 810C24 00010000 or dword ptr ss:[esp],100 0042E81B 9D popfd 0042E81C F8 clc 0042E81D ^ 73 DC jnb short wgjc.0042E7FB 【OD停在这】 0042E81F CD20 64678F06 vxdcall 68F6764 0042E825 0000 add byte ptr ds:[eax],al 0042E827 58 pop eax 观察堆栈窗口: 0012FF58 0012FFE0 指针到下一个 SEH 记录 0012FF5C 0042E801 SE 句柄 ctrl+G来到42E801 0042E7FB 60 pushad 0042E7FC E8 06000000 call wgjc.0042E807 0042E801 8B6424 08 mov esp,dword ptr ss:[esp+8] 【这个地方】 0042E805 EB 1A jmp short wgjc.0042E821 f2下断,shift+f9,然后f8单步走(较长的时间)在: 0042E7B5 61 popad 0042E7B6 - FF6424 D0 jmp dword ptr ss:[esp-30] ; wgjc.004021E0 0042E7BA 0200 add al,byte ptr ds:[eax] 到达oep: 004021E0 68 EC224000 push wgjc.004022EC ; ASCII "VB5!6&vb6chs.dll" 004021E5 E8 F0FFFFFF call wgjc.004021DA ; jmp 到 004021EA 0000 add byte ptr ds:[eax],al 004021EC 0000 add byte ptr ds:[eax],al 004021EE 0000 add byte ptr ds:[eax],al 直接dumped,然后修复 ----------------------------------------------------------- 接下来进行我们的破解工作 OD载入,f9运行,输入假的注册码例如:I LOVE YOU 提示“注册码错误,请与作者联系……” 我们暂停程序,f12暂停,然后alt+f9(执行到用户代码),这时在点击 提示错误的对话框的“确定”按钮来到: 6606F72A |. /74 07 je short msvbvm60.6606F733 6606F72C |. |C745 F8 98F60>mov dword ptr ss:[ebp-8],msvbvm60.6606F698 6606F733 |> \8B35 E8120066 mov esi,dword ptr ds:[<&USER32.MessageBoxIndirectA>; USER32.MessageBoxIndirectA 6606F739 |. 8D45 D8 lea eax,dword ptr ss:[ebp-28] 6606F73C |. 50 push eax ; /pMsgBoxParams 6606F73D |. FFD6 call esi ; \MessageBoxIndirectA 【很明显是这个函数提示错误的】 6606F73F |. 8BD8 mov ebx,eax 6606F741 |. 3BDF cmp ebx,edi 6606F743 |. 75 2F jnz short msvbvm60.6606F774 6606F745 |. 8B45 EC mov eax,dword ptr ss:[ebp-14] 我们观察一下OD的标题栏“CPU -主线程,模块—msvbvm60” 呵呵~~说明了什么?说明软件还在错误的提示所对应的函数中,我们f8一直单步 直到OD窗口标题栏返回到程序的领空来到: 00425FD5 51 push ecx 00425FD6 52 push edx 00425FD7 8D45 C8 lea eax,dword ptr ss:[ebp-38] 00425FDA 6A 40 push 40 00425FDC 50 push eax 00425FDD FF15 9C104000 call dword ptr ds:[<&msvbvm60.#595>] ; msvbvm60.rtcMsgBox【这个call提示错误的】 00425FE3 8D4D 98 lea ecx,dword ptr ss:[ebp-68] 00425FE6 8D55 A8 lea edx,dword ptr ss:[ebp-58] 00425FE9 51 push ecx 我们上翻代码,找到段首: 00425E0A 52 push edx 00425E0B 50 push eax 00425E0C FF15 E4104000 call dword ptr ds:[<&msvbvm60.#406>] ; msvbvm60.__vbaStrCmp 00425E14 /0F85 5F010000 jnz dumped_.00425F79【如果不相等跳到错误】 这个地方比较可疑,因为两个压栈一个比较,很明显是比较注册码额 在00425E0A 下断,同时在中间代码处你会发现下面的call,呵呵,是提示注册正确的 00425E9A FF15 9C104000 call dword ptr ds:[<&msvbvm60.#595>] ; msvbvm60.rtcMsgBox f9运行,点击注册,观察寄存器: EAX 00160C34 UNICODE "XHYL;^VFWJ9\TDUH7ZRBSF5XP@QD3VN>O" ECX 0014B6B8 EDX 0016094C UNICODE "I LOVE YOU" 看到没有,很明显,eax压真注册码,edx是我们的假注册码 破解完成------------------ 五一假期也结束了,这两天每天在电脑旁不下8个小时学习脱壳,真是头晕脑胀,心情不好,坐在电脑旁一句话不说,用努力学习,劳累去惩罚自己 的,O了,收工 |
|