第四节 手动脱壳
手动脱壳就是不借助自动脱壳工具,而是用动态调试工具softice或trw2000来脱壳。这课谈谈一些入门方面的知识,如要了解更深的脱壳知识,请参考«脱壳高级篇»这课。 【相关文章:微软称Vista能给企业计算环境提速】
1、基本知识 【扩展阅读:微软联手英特尔 在美23个城市为Vist】
*调试器:softice 、trw2000 【扩展信息:微软加大反盗版力度 非正版Vista无法】
工具
*内存抓取工具:procdump等; *十六进制工具:hiew、ultraedit、hex workshop等; *pe编辑工具: procdump、peditor等;名词概念
★pe文件:microsoft设计了一种新的文件格式portable executable file format(即pe格式),该格式应用于所有基于win32的系统:windows nt、windows 2000、win32s及windows 95/98。
★基址(imagebase ):是指装入到内存中的exe或dll程序的开始地址,它是win32中的一个重要概念。 在windows nt中,缺省的值是10000h;对于dlls,缺省值为400000h。在windows 95中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区域,因此microsoft将win32可执行文件的缺省基地址改变为400000h。
★rva:相对虚拟地址(relative virual address),是某个项相对于文件映象地址的偏移。例如:装载程序将一个pe文件装入到虚拟地址空间中,从10000h开始的内存中,如果pe中某个表在映像中的起始地址是10464h,那么该表的rva就是464h。虚拟地址(rva)=偏移地址+基址(imagebase )
★entry point:入口点,就是程序在完成了对原程序的还原后,开始跳转到刚还原的程序执行,此时的地址就是入口点的值。
步骤
★确定壳的种类
一般拿到软件后,可用工具fileinfo、gtw、typ32等侦测文件类型的工具来看看是何种壳,然后再采取措施。
★入口点(entry point)确定
对初学者来说定位程序解壳后的入口点确定较难,但熟练后,入口点查找是很方便的。 决大多数 pe 加壳程序在被加密的程序中加上一个或多个段。 所以看到一个跨段的 jmp 就有可能是了。如:upx 用了一次跨段的 jmp , aspack 用了两次跨段的 jmp 。 这种判断一般是跟踪分析程序而找到入口点,如是用trw2000也可试试命令:pnewsec,它可让trw2000中断到入口点上。
pnewsec:运行直到进入一个 pe 程序内存的新的 section时产生断点。(如不懂,以后到脱壳高级篇自会明白)另外也可用d.boy的冲击波2000,它能轻易的找到任何加密壳的入口点,
★dump取内存己还原文件
找到入口点后,在此处可以用 procdump的full dump功能来抓取内存中整个文件,
如是用trw2000也可用命令: makepe命令含义:从内存中整理出一个指令名称的pe格式的exe文件, 当前的 eip 将成为新的程序入口,生成文件的 import table 已经重新生成过了。生成的pe文件可运行任何平台与微机上。 ... 下一页