摘要:
.上节说的是单步跟踪法,这节讲的是利用堆栈平衡(ESP定律)来进行脱壳!想必大家都听说过ESP定律这个大名吧!ESP定律运用的就是堆栈平衡原理!一般的加壳软件在执行时,首先要初始化,保存环境(保存各个寄存器的值),一般利用PUSHAD(相当于把eax,ecx,edx,ebx,esp,ebp,esi,edi都压栈),当加壳程序的外壳执行完毕以后,再来恢复各个寄存器的内容,通常会用POPAD(相当与把eax,ecx,edx,ebx,esp,ebp,esi,edi都出栈),通过跨区段的转移来跳到程序的OEP来执行原程序!在脱壳的时候,我们可以根据堆栈平衡来对ESP进行下断,进而快速到达OEP!我们用 阅读全文
摘要:
这节我们来讲讲如何寻找一个程序的OEP,即OriginalEntryPoint。一些PE加壳程序在被加密的程序上面加了一个区段(有的壳也会合并区段),当外壳代码执行完毕以后,会跳到程序的本身的代码来执行,所以我们可以依靠跨区段的转移指令来寻找程序的入口点。我们来看看加壳之前的Delphi7.0的程序,用LordPE来打开Delphi7.0程序,我们看到程序的入口点是004C498:看区段,没有任何的新加的区块:我们来看看加了壳的程序的入口点,加过壳的入口点为000629D0:区段变为三个了,很明显,壳将原程序的区段给合并了:加了壳后,首先,各个区段都要被系统映射到内存中,因为现在的入口点是00 阅读全文
摘要:
菜鸟脱壳之脱壳的基础知识(二)——DUMP的原理当外壳的执行完毕后,会跳到原来的程序的入口点,即EntryPoint,也可以称作OEP!当一般加密强度不是很大的壳,会在壳的末尾有一个大的跨段,跳向OEP,类似一个壳与程序入口点的“分界线!当我们到达了程序的OEP,我们就需要进行DUMP程序了,那么什么时候去DUMP一个程序呢?这里我引用了fly的一句话!“手动脱壳理想的最佳dump时机是指壳已经把程序代码包括资源等数据全部解密、输入表等数据还原但还未填充系统函数地址、DLL则还未重定位,此时dump出来的文件只需修正OEP、ImportTableRVA等信息即可正常运行完成脱壳。”并不是所有的 阅读全文
摘要:
脱壳技术一、基础知识壳的定义:在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了,无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP( 阅读全文
摘要:
【文章标题】: UPX脱壳全程分析
【保护方式】: 本地验证
【使用工具】: OllyDBG
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
-------------------------------------------------------------------------------- 阅读全文