半仙算命主程序脱壳全记录图文.docx
《半仙算命主程序脱壳全记录图文.docx》由会员分享,可在线阅读,更多相关《半仙算命主程序脱壳全记录图文.docx(17页珍藏版)》请在冰豆网上搜索。
半仙算命主程序脱壳全记录图文
半仙算命主程序脱壳全记录(图文)
第一种方法:
“ESP定律”和“M”内存查找“CODE”
一、查壳:
是―――“PECompact2.x-JeremyCollake”
二、启动“OD”载入主程序
―――F8下,发现“寄存器(FPU)”中突显“ESP0012FFC0”,可进行“ESP定律”
―――点选“跟随到数据窗口”-“断点”-“硬件访问”-“Word”,F9运行
―――到达下图地址,进入“调试”菜单,删除硬件访问断点,点“M”进入“Memorymap”找到“CODE”下断
―――到达下图地址,F8下,到达“C3RETN”自动跳转
―――发现“寄存器(FPU)”中突显“ESP0012FBF0”,可再进行一次“ESP定律”(同上)
―――到达下图地址,取消ESP断点,F8下
―――到达“-FFE0JMPEAX”跳转出口
―――跳转后到达OEP真正入口
―――可以进行DUMP存盘操作
―――入口地址自动修正为“0017407C”
―――下图是已脱壳的主程序源码
三、启动已脱壳的主程序,不能启动,那么要修复输入表(略)
四、检验
五、优化减肥,在检验。
OK
第二种方法:
连续多次“ESP定律”直接到达“OEP”真正入口
―――记住:
1、要在“调试选项”中忽略所以异常;2、“ESP”设置“硬件访问-WORD”,F9运行到达新的地址后,
首先必须“删除”ESP所设置的断点。
―――第一次使用“ESP定律”的地址-“0012FFC0”
―――到达新地址后,首先“删除”上一次的断点,接着第二次使用“ESP定律”,地址-“0012FC4C”
―――到达新地址后,首先“删除”上一次的断点,接着第三次使用“ESP定律”,地址-“0012FC50”
―――到达新地址后,首先“删除”上一次的断点,接着第四次使用“ESP定律”,地址-“0012FFC0”
―――F9运行后,看到如下代码段时,说明已经到达OEP入口跳转
――――――――――――――――――――――――――――――――――――――――――――――――――
006D8AA2-FFE0JMPEAX;到达OEP入口跳转F8下
006D8AA47C40JLSHORTssbx.006D8AE6
006D8AA657PUSHEDI
006D8AA700C8ADDAL,CL
―――其余操作同前所叙
学习随笔:
“PECompact2.x-JeremyCollake”这种壳有点古怪,手动单步跟踪还没有一次成功,经常是跟着跟着就晕菜了,或者是跟飞了。
还是源码的阅读水平问题、基本功的问题。
脱壳基础知识(节选)
PC软件脱壳经常用到的工具有OllyDBG、lordpe、CHimpREC、PEiD、ImportREC、WINHEX等等(这些软件网上到处都能下载,这里就不提供下载地址了,需要的到网上搜一下就可以了)。
OllyDBG软件与IDA的功能几乎差不多,但OllyDBG软件是免费的。
正因为免费,所以作者现在已不再对该软件进行升级了,PC软件脱壳的工具很多,所有对PC软件脱壳相对容易,PPC软件脱壳的工具非常少,PPC软件能够用到的工具只有IDA、lordpe和WINHEX这三种。
1、既然要脱壳就要了解加壳的原理。
加壳:
其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。
类似WINZIP的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。
解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。
现在的CPU都很快,所以这个解压过程你看不出什么东西。
软件一下子就打开了,只有你机器配置非常差,才会感觉到不加壳和加壳后的软件运行速度的差别。
当你加壳时,其实就是给可执行的文件加上个外衣。
用户执行的只是这个外壳程序。
当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。
所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。
通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。
因为有的时候程序会过大,需要压缩。
但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。
加密代码和数据,保护你的程序数据的完整性。
不被修改或者窥视你程序的内幕。
加“壳”虽然增加了CPU附带但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快(当然有的加“壳”以后会变慢,那是选择的加“壳”工具问题)。
一般软件都加“壳”这样不但可以保护自己的软件不被破解、修改还可以增加运行时启动速度。
我们平时的绝大多数软件都加了自己的专用“壳”。
RAR和ZIP都是压缩软件不是加“壳”工具,他们解压时是需要进行磁盘读写,“壳”的解压缩是直接在内存中进行的,用RAR或者ZIP压缩一个病毒你试试解压缩时杀毒软件肯定会发现,而用加“壳”手段封装老安全,能发现的杀毒软件就剩不下几个。
安全和病毒通常也会加壳,安全加壳的原理很简单,在黑客营中提供的多数安全中,很多都是经过处理的,而这些处理就是所谓的加壳。
当一个EXE的程序生成好后,很轻松的就可以利用诸如资源工具和反汇编工具对它进行修改,但如果程序员给EXE程序加一个壳的话,那么至少这个加了壳的EXE程序就不是那么好修改了,如果想修改就必须先脱壳。
2、为了脱壳,需要了解文件PE的相关知识。
PE的意思就是PortableExecutable(可移植的执行体)。
它是Win32环境自身所带的执行体文件格式。
它的一些特性继承自Unix的Coff(commonobjectfileformat)文件格式。
"portableexecutable"(可移植的执行体)意味着此文件格式是跨win32平台的:
即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。
当然,移植到不同的CPU上PE执行体必然得有一些改变。
所有win32执行体(除了VxD和16位的Dll)都使用PE文件格式,包括NT的内核模式驱动程序(kernelmodedrivers)。
3、还有一个脱壳必须了解的知识是程序入口点地址(OriginalEntryPoint英文简写OEP).
OEP就是程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP)
UPX(UltimatePackerforeXecutables的英文简称UPX)。
目前发现大多数PPC软件都是用UPX变种技术加的壳,UPX加壳引擎是开源的,支持PC和PPC软件加壳,所以有很多PPC软件都用UPX加壳。
加壳后的软件如下,下面所有的例子都是用这个加壳文件来脱壳。
加壳前文件148K,加壳后61K,文件被UPX压缩了一半多。
4、加壳技术有几十种,目前网上有不少自动脱壳软件,自动脱壳软件和杀毒程序原理差不多,先扫描加壳软件的特征码,对标准的壳可以自动脱壳。
现在很多软件即使使用相同的加壳技术也会稍加改变,就是防止脱壳机自动脱壳,所以大部分加壳软件需要手工脱壳。
PC软件脱壳技术已经比较成熟,工具软件也很多,所以只要找到软件的OEP地址,下面的很多工作就可以用各种工具自动完成了。
PPC软件的脱壳要比PC软件困难,就是因为PPC软件的脱壳工具非常少,网上也很少有这方面的教程可用,整个过程几乎都是手工完成,需要比较丰富的脱壳经验。
加壳就是对原程序搞破坏,加壳的一个目的就是隐藏原程序的真正输入函数,只显示壳使用的函数。
学习随笔一:
“PECompact2.x-JeremyCollake”这种壳有点古怪,手动单步跟踪还没有一次成功,经常是跟着跟着就晕菜了,或者是跟飞了。
还是源码的阅读水平问题、基本功的问题。
学习随笔二:
认真查找了一下原因,原来是“选项”中的“异常”设置问题,手动单步跟踪已搞定。
原文链接: