简单脱壳教程笔记

简介:

UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70%,主要功能是压缩PE文件(比如exe,dll等文件),有时候也可能被病毒用于免杀.壳upx是一种保护程序。

脱壳:

工具:
ExeinfoPE或PEid、OD、LordPE、ImportREConstructor
脱壳文件:
01.rmvbfix.exe

笔记:

1、使用ExeinfoPE或PEid确定是否加壳

简单脱壳教程笔记
简单脱壳教程笔记
2、脱壳,们这里使用四种方法来进行脱壳,无论使用哪种,我们都需要找到OEP位置,然后进行脱壳即可。

方法1:单步跟踪(需要有耐心)

要点:将程序拖入到OD中,一步一步单步跟踪执行,原则向上跳转不能让其实现,向下跳转可以实现。
操作
1)将程序加载如OD中,会弹出是否自动分析的对话框。当我们确定程序是被加壳的情况下,我们选择否,否则我们选择是。
简单脱壳教程笔记

2) 找OEP 由于我们使用的是单步跟踪,我们可以按F8进行单步执行。
简单脱壳教程笔记
3)当向下跳转可以实现,继续单步即可
简单脱壳教程笔记
向上跳转不能让其实现
简单脱壳教程笔记
将代码运行到跳转的下一行:选中该行,右键–断点–运行到选中位置 或直接F4即可
简单脱壳教程笔记
或者设置断点 然后再取消
简单脱壳教程笔记
注意:当jmp下面是call的情况,我们要在call的下面下断点,如下图,我们就需要在papad的位置下断点
简单脱壳教程笔记
4) 当我们发现有出栈popad的时候,并且紧跟着一个大的跳转的时候,那么要调到的位置一般就是OEP的位置
简单脱壳教程笔记
5)我们进入到OED位置
简单脱壳教程笔记
6)找到OEP后 我们就可以进行脱壳,tools按钮选择LordPE进行脱壳(提前在SETUP PATHS里添加好)
简单脱壳教程笔记
简单脱壳教程笔记
然后右键修复镜像大小、选择完整转存
简单脱壳教程笔记
7)使用ImportREConstructor 进行修复
根据OD中的地址,计算出OEP, OEP=VA(0047738C)-加载基址(00400000)
然后获取导入表,显示无效的,最后进行修复
简单脱壳教程笔记
8、查看脱壳是否成功
简单脱壳教程笔记

方法2:ESP定律法

1、单步 只有ESP突变
简单脱壳教程笔记/2、右键 在数据窗口跟随
简单脱壳教程笔记
或者在输入dd xxxx / hr xxxx(ESP值)
简单脱壳教程笔记
3、右键设置断点——硬件访问断点——word/Dword
简单脱壳教程笔记
之前把硬件断点删除干净
简单脱壳教程笔记
简单脱壳教程笔记

然后运行
简单脱壳教程笔记
然后再删除硬件断点,单步到达OED
简单脱壳教程笔记
重复方法一后续步骤

方法3:2次内存镜像法

1、第一次查找内存或者M直达
简单脱壳教程笔记2、找到程序段的第一个.rsrc资源文件字,下段,然后运行
简单脱壳教程笔记

3、第二次找内存下段,运行
简单脱壳教程笔记
4、单步跳转,到达OED

方法4:一步直达法

1、右键或ctrl+f查找popad ,去掉整个块的√
简单脱壳教程笔记
简单脱壳教程笔记
2、运行到popad 两种方法都可以
简单脱壳教程笔记
简单脱壳教程笔记
3、单步跳转到oed