【文章标题】: 简单SMC破解 【文章作者】: Smoke 【使用工具】: OllyDbg,peid 【操作平台】: WinXp sp3 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 【详细过程】 PEiD侦查为 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 我等新手看到UPX壳,就想到SMC有戏了,强壳不会啊 o(︶︿︶)o 载入OllyDbg 代码如下: 00ABDCC0 > 60 pushad //F8单步 00ABDCC1 BE 00604800 mov esi, 00486000 //单步到这,发现寄存器esp变红色 [使用esp定律,F9运行] 00ABDCC6 8DBE 00B0F7FF lea edi, dword ptr [esi+FFF7B000] 00ABDCCC 57 push edi 00ABDCCD EB 0B jmp short 00ABDCDA 运行后来到此处,代码如下: 00ABDE5F 8D4424 80 lea eax, dword ptr [esp-80] 00ABDE63 6A 00 push 0 00ABDE65 39C4 cmp esp, eax 00ABDE67 ^ 75 FA jnz short 00ABDE63 00ABDE69 83EC 80 sub esp, -80 00ABDE6C ^ E9 F8999DFF jmp 00497869 //F2下断 F9运行 o(∩_∩)o 跳向光明之巅了.OEP 来到00ABDE6C后,取消断点,删除硬件断点 F8单步 来到oep 来到此处,代码如下: 00497869 55 push ebp (记录下,一会要用到的.) 0049786A 8BEC mov ebp, esp 0049786C 6A FF push -1 0049786E 68 88DFA200 push 00A2DF88 00497873 68 64A14900 push 0049A164 00497878 64:A1 00000000 mov eax, dword ptr fs:[0] 0049787E 50 push eax 找到关键跳,代码如下:(记录下,一会要用到的.) 004255A4 /0F84 63000000 je 0042560D je改成jnz,代码如下: 004255A4 /0F85 63000000 jnz 0042560D 修改完毕后,我们运行试试,看是否能登录进去. 经测试,任意输入帐号密码可以登录 看来关键处是找对的o(∩_∩)o 接下来我们就来SMC o(∩_∩)o SMC实现过程如下: 原来:壳--->程序 现在:壳--->SMC--->程序 为了不破坏壳的代码,都在壳代码执行完后执行SMC。 SMC中修改的是程序中注册机制的关键点。 重新载入OllyDbg 代码如下: 00ABDCC0 > 60 pushad 00ABDCC1 BE 00604800 mov esi, 00486000 00ABDCC6 8DBE 00B0F7FF lea edi, dword ptr [esi+FFF7B000] 00ABDCCC 57 push edi 使用esp定律来到以下代码处: 00ABDE6C ^\E9 F8999DFF jmp 00497869 00ABDE71 0000 add byte ptr [eax], al 00ABDE73 0000 add byte ptr [eax], al 00ABDE75 0000 add byte ptr [eax], al 选个空白的代码处,作为我们SMC的地方. 我选择此处吧,代码如下: 00ABDE79 0000 add byte ptr [eax], al 00ABDE7B 0000 add byte ptr [eax], al 00ABDE7D 0000 add byte ptr [eax], al 00ABDE7F 0000 add byte ptr [eax], al 00ABDE81 0000 add byte ptr [eax], al 00ABDE83 0000 add byte ptr [eax], al 00ABDE6C ^\E9 F8999DFF jmp 00497869 改成 00ABDE6C /EB 0B jmp short 00ABDE79 00ABDE6E |90 nop 00ABDE6F |90 nop 00ABDE70 |90 nop 然后在00ABDE79处写代码 MOV BYTE PTR DS:[4255A5],85 jmp 00497869 保存出来. 经测试,能够登录!并未出错.(*^__^*) 此菜鸟文章就到此结束.o(∩_∩)o -------------------------------------------------------------------------------- 【版权声明】: 本文原创于Smoke, 转载请注明作者并保持文章的完整, 谢谢! 2011年10月01日 13:46:44