计算机知识网
首页 | TAGS | 关于我们 | 广告联系
  • 明码与暴破中华压缩 10.8 SMC去除NAG

  •   学习一下SMC补丁手动如何实现。可以用来对付有自校验的程序。有不对的地方请指正

      破解过程

      一、用peid探壳,是aspack加的壳。是个非常简单的压缩壳,脱壳就不说了,我们要打SMC补丁也不用脱壳。

      二、OD载入跟踪分析。

      1、去壳

      Ollydbg载入主程序

      007CF001 C> 60 pushad;停在这里,F8一次

      007CF002 E8 72050000 call ChinaZip.007CF579;来到这里,这时查看寄存器窗口

      007CF007 EB 4C jmp short ChinaZip.007CF055

      007CF009 0000 add byte ptr ds:[eax],al

      007CF00B 0000 add byte ptr ds:[eax],al

      寄存器 EAX 00000000 ECX 0012FFB0 EDX7C92EB94ntdll.KiFastSystemCallRet EBX 7FFD4000 ESP 0012FFA4//esp=0012ffa4EBP 0012FFF0 ESI FFFFFFFF EDI 7C930738 ntdll.7C930738EIP 007CF002ChinaZip.007CF002 根据ESP定律,在在命令栏中下 0012ffa4命令,回车,F9运行

      007CF4F4 75 08 jnz short ChinaZip.007CF4FE 中断在这里按F7 007CF4F6B801000000 mov eax,1 007CF4FB C2 0C00 retn 0C 007CF4FE 683C655100push ChinaZip.0051653C这是OEP地址 007CF503 C3 retn 飞到入口处 按F7007CF5048B85 E4374400 mov eax,dword ptr ss:[ebp+4437E4] 程序的入口0051653C 55push ebp 0051653D 8BEC mov ebp,esp 0051653F B9 0A000000mov ecx,0A00516544 6A 00 push 0 00516546 6A 00 push 0 00516548 49dec ecx00516549 ^ 75 F9 jnz short ChinaZip.00516544 向下运行到 0051658DE812AFFEFF call ChinaZip.005014A4 00516592 84C0 test al,al005165940F85 9F050000 jnz ChinaZip.00516B39爆破点,跳走可去除NAG0051659A A184BA5100mov eax,dword ptr ds:[51BA84] 0051659F 8B00 mov eax,dwordptrds:[eax] 005165A1 8B10 mov edx,dword ptr ds:[eax] 005165A3FF92E8000000 call dword ptr ds:[edx+E8]这个CALL是NAG 005165A9 A184BA5100mov eax,dword ptr ds:[51BA84] 005165AE 8B00 mov eax,dwordptrds:[eax] 005165B0 83B8 4C020000 0>cmp dwordptrds:[eax+24C],1

      破解如下 原程序 00516594 0F85 9F050000 jnz ChinaZip.00516B39

      爆破点,跳走可去除NAG0051659A A1 84BA5100 mov eax,dword ptrds:[51BA84]

      破解后的 00516594 90 nop 00516595 E9 9F050000 jmpChinaZip.00516B390051659A A1 84BA5100 mov eax,dword ptrds:[51BA84]

      三、补丁如下我们要利用壳自身解压原理,填充补丁数据,这就是通常所说的SMC技术原理。所以我们要修改程序。我们要等到壳解压完毕后返回程序OEP的那一瞬间作为跳板,修改数据007CF4F4 75 08 jnz shortChinaZip.007CF4FE *跳到补丁地址* 007CF4F6 B801000000 mov eax,1 007CF4FBC2 0C00 retn 0C 007CF4FE 68 3C655100pushChinaZip.0051653COEP地址是0051653C, 007CF503 C3 retn飞到入口处007CF5048B85E4374400 mov eax,dword ptr ss:[ebp+4437E4]

      修改为 007CF4F4 - E9 970BC3FF jmpChinaZip.00400090强制跳到补丁数据00400090处007CF4F9 90 nop 007CF4FA 90 nop007CF4FB C2 0C00 retn 0C 007CF4FE68 3C655100 push ChinaZip.0051653C007CF503 C3 retn007CF504 8B85E4374400 mov eax,dword ptrss:[ebp+4437E4]

      地址00400090是怎样来的呢? 我们用winhex打来内存来看看什么地方是空白的,一般在区段间有,而且是可读写的。

      我选择的是00400090

      在00400090处修改为如下代码 00400090 66:C705 94655100 9000 mov wordptrds:[516594],90 00400099 66:C705 95655100 E99F mov wordptrds:[516595],9FE9 去除NAG 004000A2 - E9 95641100jmpChinaZip.0051653C 返回OEP处 004000A7 90 nop 004000A8 0000 add byteptrds:[eax],al 004000AA 0000 add byte ptr ds:[eax],al

      保存下来就行了

      破解总结

      只是简单的谈谈SMC补丁的手动实现,和怎样找可用来写入数据的地址的一些基本方法。

  • TAGS:
  • 作者:管理员 时间:2009-6-21 来源:网络 人气:

热门TAGS


相关推荐

热门新闻

版权所有:计算机知识网 www.409h.cn 2004-2009 All Rights Reserved.
站长QQ: 951969697 粤ICP备05096685号