文章目录1、手工脱UPX壳简介:脱壳:注:方法1 :单步跟踪(需要耐心)一、ODE插件二、使用工具按钮选择LordPE脱壳(提前添加到SETUP PATHS中) 手脱ASPACK外壳概述:使用工具:备注:方法1 :单步跟踪方法2:esp规律方法3 :单步直接方法4 :两次内存镜像方法5 :模拟跟踪方法SPX 3、手脱Nspack外壳脱1.3版本2.3和3.7版本4
1、手脱UPX外壳概述:
可执行文件压缩器(UPX )是一种高级可执行文件压缩器,压缩可执行文件的体积缩小50%-70%,主要功能是PE文件(例如exe、dll等文件)
脱壳:道具:
ExeinfoPE或PEid、OD、LordPE、导入reconstructor
脱壳文件:
01.rmvbfix.exe
注: 1、确定是否使用ExeinfoPE或PEid添加shell
2、脱壳。 这里用四种方法脱壳。 无论使用哪种方法,只要找到OEP的位置,然后脱壳就可以了。
方法1 )将单步跟踪(需要耐心)单步跟踪法要点)程序拖动到OD上,一步一步跟踪执行。 原则上跳跃不会让它实现。 可以实现向下跳跃。
操作
1 )加载程序时,如OD所示,将显示是否自动分析的对话框。 如果确定程序已外壳化,我们选择否,否则选择是。
2 )查找OEP使用的是单步跟踪,可以按F8键单步执行。
3 )当可以实现向下跳跃时,只需继续一步
跳跃无法实现
将代码运行到跳转中的下一行:选择一行,然后右键单击——并直接在选定位置或F4运行断点——
或设置断点—— 运行——以取消断点
注:如果jmp下为call,则在call下创建断点。 必须在papad位置创建断点,如下图所示
4 )当我们发现有堆栈popad,然后继续大跳的时候,调动的位置一般是OEP的位置
5 )我们进入OEP位置
6 )找到OEP后可以脱壳。
一.使用ODE插件
有两种方法。 然后点脱壳,保存
二、用tools按钮选择LordPE进行脱壳(事先添加到SETUP PATHS中) )。
然后右键单击镜像大小进行修复,并选择“完全导出”
使用ImportREConstructor修复,然后先选择需要脱壳的程序
根据OD中的地址,计算出OEP,根据OEP=va(0047738C )加载基址(00400000 )以及刚才通过插件显示的7738c
然后获取导入表,显示无效的内容,最后修复
7、检查脱壳是否成功
方法2:ESP定律ESP定律1,一步仅限ESP突变
2、右键在数据窗口关注
或输入DDxxxx/HRxxxx(esp值)
3、断点——右键单击硬件接入点——word/Dword进行设置(以前删除剩下的断点) )。
然后执行
然后,删除硬件断点,一步到达OEP
方法1重复步骤6
方法3 ) 2次内存镜像法2次内存镜像法1、第1次内存查找或上段m直达
2、找到程序段第一个. rsrc资源文件中的字,移动到下一层
3、第二次查找内存00401000下级执行
4、一步跳到达OEP
方法4 )一步直达法一步直达法1、右键或ctrl f查找popad,去除整块
2、如果不需要,可以用ctrl L继续搜索,运行到popad
3、一步跳OEP
2、ASPACK shell介绍: aspack是一种高效的Win32可执行程序压缩工具,可以压缩程序员开发的32位Windows可执行程序,使最终文件减少70%!
使用工具: PEid、OD
注:方法1 :单步跟踪1、单步到呼叫,然后执行F8检测程序
F7或按此键进入呼叫
跳跃。
继续一步,另一个呼叫继续F7
步进,跳到F4,继续步进
我来经合组织
2、脱壳,记住修改地址
3、检查是否成功
方法2 ) ESP规律法1、看关键句的下一句,一步、ESP突变
2、数据窗口跟随
3、下段
3、运行一下,删掉断点
4、继续单步到OEP
方法三:一步直达法
一步直达法
方法四:2次内存镜像法2次内存镜像法
方法五:模拟跟踪 模拟跟踪法1、进入内存m,找到包含SFX的
2、tc eip<地址 ,回车 ,OD左上角显示跟踪字样,会自动跳到OEP
1、选项——调试设置——SFX 选择第二个
重载一下
自动跳转到OEP
单步到call ,ESP突变也用ESP定律法
也可用单步跟踪法
或者 模拟跟踪法
tc eip<0043000
或者 2次内存镜像法
没有.rsrc的话,直接在内存00401000下段,运行
或者 at GetVersion (适用于3.0之前的版本)
然后在retn下断点F2——运行——取消断点F2——单步F8
无特别差异
4、手脱FSG壳 脱壳 方法1可用单步跟踪法
在jmp处下断点——单步 直接跳转OEP
使用LORDPE脱壳后发现无法运行
找个这种call
前面和脱壳步骤一样,找到425210-400000=25210位置
对应
命令行 输入 d425210
向上向下翻找到并记录边界值
上边界地址00425000
下边界地址00425280
RVA值为上边界:00425000-00400000=25000
大小为下边界-上边界 :25280-25000=280 为了方便可直接填写1000
单步到这发现ESP突变,可以ESP定律法
特殊ESP定律法,不遵循堆栈定义
单步到popad下面,看堆栈第四行
右键——反汇编窗口中跟随
下硬件断点
shift+F9跳转到OEP