<逆向学习第二天>如何手动脱UPX、Aspack壳
UPS、AsPack压缩壳介绍:
UPX 、AsPack是一款先进的可执行程序文件压缩器。压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过压缩过的程序和程序库完全没有功能损失,和压缩之前一样可正常地运行。对于支持的大多数格式没有运行时间或内存的不利后果。
压缩的原理是什么呢?
压缩就好像把 可执行文件中的 123456 用字母%A代替,789ABC用字母%C代替,这样程序代码的体积不久变小了很多。(要是可以这样压缩,这不都只有三分之一了,好机智)。
实际上现在网络有很多UPX、Aspack脱壳器,但是入门学习一定要从头学习手动脱壳,学习原理,我会将我近期学习到的4种方法总结于本文。
首先使用PEiD或者EXEInfoPE查壳,这里我使用PEiD。

可见此程序加的是UPX壳,接下来我们手动将它脱掉。
1、单步跟踪法
此方法是将向上跳转设置断点让它不能实现,向下跳转不执行动作让它实现。

将程序拖入OP,可以看到Pushad是这个程序的入口点。接下来按F8(单步步过)或者点击此按钮即可。
单步跟踪法是将向上跳转设置断点,所以我们就用F8逐一的找向上跳转。

红色椭圆框住的就是向上跳转,每当遇见的时候通常我们都在下一句设置断点,所以我们可以直接在下一句(即红色矩形框框住部分)按F4,逐步向下寻找。

这个跳转因为下一句是一个“CALL”所以我们在CALL下面的一句设置断点。这里注意一下popad。这个是“出站口”,注意到前面pushad是“入站口”,有入站口就会有出站口即popad。再看popad下面的语句,98E1EFFF,0047738C,这个跨度比较大,典型的Delphi程序,一般再单步步进一次就可以进入到程序的真正程序段。
接下来我们进行脱壳,可以直接用OD脱壳插件脱壳,右键用OllyDump脱壳调试进程。


可以用方式1,也可以用方式2,都可以进行脱壳。
2、ESP大法
ESP大法相比于单步跟踪法来说简便,利用寄存器ESP的值来进行脱壳。
首先来看程序入口点,关键语句Pushad。

ESP大法是在关键语句的下一句如果ESP颜色突变进行操作,我们来看一下下一语句的ESP。

这里我们看到寄存器里只有ESP是红色的,那我们就可以操作了。右键数据窗口中跟随。

在数据窗口中进行如下操作,word Dword都可以。

然后我们F9运行,来到了我们刚才熟悉的界面,单步步进,来到了主程序程序段,脱壳即可。

3、内存2次镜像法

点击m进入内存界面,接下来我们找在内存中的本程序段的.rsrc,F2设置断点,运行。


所谓2次镜像法就是要进行2次内存操作,接下来我们再点m进入内存信息界面,找到地址00401000,F2设置断点,运行。又来到了我们熟悉的语句popad,设置断点,单步步进,脱壳。

4、一步直达法
此方法适用于UPX,Aspack壳,前面说过pushad为入口点,那么它必定有一个出口点popad,所以我们只需要Ctrl+f查找popad即可。
<逆向学习第二天>如何手动脱UPX、Aspack壳的更多相关文章
- 手动脱UPX压缩壳
示例程序演示 样例程序选择win7自带的notepad.exe,该程序原本是没有加壳的: 拷贝notepad.exe文件一个副本,重命名为notepad - upx.exe,我们对notepad - ...
- <逆向学习第三天>手动脱FSG壳,修复IAT。
其实对于简单的壳来说,脱壳常用的方法也无非是那几种,但是每种有每种的好处,具体使用那种方法视情况而定,我今天学习的这个壳很简单,但是重点在于修复IAT. 一.查壳: FSG 2.0的壳. 二.脱壳: ...
- 手动脱Mole Box壳实战总结
作者:Fly2015 这个程序是吾爱破解脱壳练习第8期的加壳程序,该程序的壳是MoleBox V2.6.5壳,这些都是广告,能够直接无视了.前面的博客手动脱Mole Box V2.6.5壳实战中已经给 ...
- 手动脱UPX 壳实战
作者:Fly2015 Windows平台的加壳软件还是比較多的,因此有非常多人对于PC软件的脱壳乐此不彼,本人菜鸟一枚,也学习一下PC的脱壳.要对软件进行脱壳.首先第一步就是 查壳.然后才是 脱壳. ...
- Anroid逆向学习从编写so到静动态调试分析arm的一次总结
Anroid逆向学习从编写so到静动态调试分析arm的一次总结 一.前言 最近跟着教我兄弟学逆向这篇教程学习Android逆向,在第七课后作业反复折腾了好几天,正好在折腾的时候对前面的学习总结一波,动 ...
- 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳
[个人笔记]ximo早期发的脱壳教程--手脱UPX壳 壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳. 手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- 二、Android学习第二天——初识Activity(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以 ...
- 逆向课程第二讲,寻找main入口点
逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6. ...
随机推荐
- SQL Server2008宝典 全书代码
-- ============================================= -- Create database template -- ==================== ...
- matlab矩阵
矩阵的转置用',比如: a = [1,2,3]; b = a'; %b 转置成一个列向量,可以用于矩阵 linspace是Matlab中的一个指令,用于产生指定范围内的指定数量点数,相邻数据跨度相同, ...
- SharePoint Config database Log file too big – reduce it!
SharePoint Config database logs are one thing to keep an eye on since they do have a tendency to gro ...
- 【Leetcode】【Easy】Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- 1.appium介绍
appium介绍 官方网站 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 An ...
- ubuntu 可以加速播放的播放器SMPlayer 16.4安装
直接贴命令 sudo apt-add-repository ppa:rvm/smplayer sudo apt-get update sudo apt-get install smplayer smp ...
- Android(java)学习笔记31:泛型高级之通配符
1. 泛型高级之通配符: package cn.itcast_07; import java.util.ArrayList; import java.util.Collection; /* * 泛型高 ...
- oc 无中生有添加协议(使已有函数符合协议)
class_addProtocol([UIButton class],@protocol(UIButtonExport)); @protocol UIButtonExport <JSExport ...
- 2018.10.3 MianShiBaoDian JavaWeb后端部分
MSBD 四.JavaWeb后端部分 1.Tomcat的优化经验 去掉对web.xml的监控,吧jsp提前编写成servlet,由于物理内存的情况,加大Tomcat使用的jvm的内存 2.HTTP请求 ...
- ASP.NET Web API 自定义MediaType实现jsonp跨域调用
代码来自<ASP.NET Web API 2 框架揭秘>一书. 直接上代码: /// <summary> /// 自定义jsonp MediaType /// </sum ...