热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

手动脱ORiEN壳实战

作者:Fly2015ORiEN这种壳之前没有接触,到底是压缩壳还是加密壳也不知道,只能试一试喽。需要脱壳的程序是吾爱破解脱壳练习第7期的题目。首先对加壳程序进行查壳,这一步也是程序脱壳的必要的一步。

作者:Fly2015

ORiEN这种壳之前没有接触,到底是压缩壳还是加密壳也不知道,只能试一试喽。需要脱壳的程序是吾爱破解脱壳练习第7期的题目。

 

首先对加壳程序进行查壳,这一步也是程序脱壳的必要的一步。

使用DIE工具对加壳程序进行查壳,发现被加壳程序原来是用Delphi语言编写的,这个信息对于找原程序的OEP是很有帮助的。



下面OD载入程序进行分析,被加壳程序入口点汇编代码:

对被加壳的程序进行脱壳的时候,先不慌着脱壳,最好先看下程序的汇编代码,F7/F8单步走几步看看,没准你会有新发现。


F8单步跟踪几步,发现了PUSHAD指令,继续F8单步到PUSHAD的下一条指令。那就使用ESP定律进行程序的脱壳,在ESP寄存器上下硬件写入断点HW Break


F9运行程序,程序会在刚才下的HW硬件断点地址处断下来。注意观察EAX寄存器的值0045159C,通过对地址0045159C的反汇编发现了比较熟悉的Delphi反汇编入口点代码,很显然地址0045159C就是被加壳原程序的真实OEPVA。其实,F7单步几步走到地址004A1AF4处,跟进JMP到地址004A1AF1处就会发现原程序的真实OEP


跟进JMP到地址004A1AF1处,JMP EAX指令中的EAX = 0045159C保存的就是被加壳程序的真实的OEPVA地址。


F7单步跟进到地址0045159C处,果然找到了Delphi的反汇编的入口点。


OK,被加壳程序的真实的OEP找到了,就可以对加壳程序进行内存的DumpIAT表的修复。不过对于加壳程序找到OEP以后,建议使用Load PERECImport 工具或者Scylla来进行程序的内存DumpIAT表的修复,比ODOllyDump插件更灵活。先用Load PE对该程序进行 完全脱壳 的内存Dump,在RECImport 中填入被加壳程序的真实OEPRVA地址0005159C,自动获取IAT表并剪切掉无效函数指针,修复抓取的内存Dump文件即可实现脱壳。


OK,运行一下脱壳完成的程序,证明自己脱壳成功。


ORiEN脱壳分析文档和脱壳以后的程序的下载地址:http://download.csdn.net/detail/qq1084283172/8898321


推荐阅读
author-avatar
sysv
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有