用OllyDbg脱ASPR 1.3x的壳
2007-01-13 20:12:43 来源:WEB开发网我们需要手工选择所有坏地址(不在压缩代码内),然后在它们上面右击鼠标,从菜单里选择 "Cut Thunk(s)"。
观察窗口在最下…那儿有好的Thunk(s)…
现在我们需要修正这些好字节…你可能从fraviamb.cjb.net下载过一些插件
或者看我其他关于如何重建的文章(New2Cracking.cjb.net或者Fraviamb.cjb.net)
这是我修正的:
0019E2AC-> 017E0F2C ->GetProcAddress
0019E2B0-> 017E139C ->GetModuleHandleA
0019E2C4-> 017E1408 ->GetCommandLineA
0019E35C-> 017E139C ->GetModuleHandleA
0019E428-> 017E1420 ->LockResource
0019E47C-> 017E13C4 ->GetVersion
0019E4AC-> 017E0F2C ->GetProcAddress
0019E4B8-> 017E139C ->GetModuleHandleA
0019E4FC-> 017E13F8 ->GetCurrentProcessId
0019E500-> 017E13F0 ->GetCurrentProcess
0019E50C-> 017E1430 ->FreeResource
9. 按"Fix Dump",选择我们抓取的文件…
imprec将会以在文件名前加"_"的方式保存抓取的文件。
=========================
第四步-修正OEP=
=========================
1.打开HVIEW /Hex编辑器,跳转到OEP的偏移地址:57ea5b处,
向后移6字节到57ea55处,用"00"替换写入 stolen bytes. 保存为新文件。
2. 打开ProcDump/Pe-Edit ,点击“Pe-Edit”按纽载入重建的新文件,修改入口点为:57ea55 (因为抽掉的字节)
3. 如果你现在试图运行程序,它会死掉的!!
4. 打开Olly并载入我们的修正文件。
5. 停在OEP: 57ea55处,EAX寄存器的值是什么?还记得我告诉过你在抓取之前保存的EAX的值吗?它是EAX=57E318,两个值的差别意味着有两
个以上的命令: that is stolen:
MOV EAX, 0157E318
这条指令占用5个字节(你可自己在 HVIEW里试一下)
B818E35700 MOV EAX, 0157E318
这意味着有6+5=11(十进制)个抽掉的字节
那么,真正的OEP是:
11=B(hex)
OLD_OEP-STOLEN_BYTES=57EA5B-B=57EA50
OEP = 57EA50
用HVIEW/Hex打开,跳转到新的OEP,写入:
55,8B,EC,83,EC,54,B8,18,E3,57,00
用ProcDumpPe-Edit修改入口点为:57EA50
哈哈,这下程序能运行了!!!
收工!!!
翻译后记:俺一直用Softice,没用过OllyDbg,所以有些内容不知道是否准确,再者水平有限,如有错误,请各位大虾指点!!
更多精彩
赞助商链接