示例程序演示

样例程序选择win7自带的notepad.exe,该程序原本是没有加壳的:

拷贝notepad.exe文件一个副本,重命名为notepad - upx.exe,我们对notepad - upx.exe进行加upx壳:

压缩之后查壳:

脱upx壳

od调试小技巧:

F8 步过/向下的循环直接跳过

F7 步入

F4 遇到向上的循环,光标选中循环体的下一句汇编指令(非调用指令,即call指令),然后按f4,可直接跳到此处;若下一句汇编指令是call指令,则选call后边的非call指令,然后按f4,可直接跳到此处。

注意:如果碰到nop的指令,F4定到下一条语句,否则程序会跑飞

F8 跳转到地址 0x004e53c2 :

F7 步入到 0x004ec969 :

我们将程序notepad - upx.exe调试到地址 0x004e53c2 。打开LordPE,选中该应用进程,右键->修正镜像大小,右键->完整转存:

此时转储下来的dumped.exe程序无法运行,因为导入表还没有进行修复:

接下来我们进行导入表的修复。

使用ImpREC进行对导入表的修复:

OEP框输入 000e53c2(此处纠正为 000ec969。更新于2018.11.29) 点击“自动搜索IAT”,此时RVA字段会自动调整为 00131ffc 。再点击“获取导入表”,最后点击“修复转储”。

修正后的可执行文件dumped_.exe :

dumped_.exe就是可以正常运行的程序了,我们最后再来查壳看看该程序,此时没有壳:

我们再贴一张加壳的程序信息:

Preference

脱壳笔记-手工脱UPX压缩壳注:主要参考和实现的就是这个链接。本帖子的目的就是自己走一遍手动脱upx壳过程,争取好的理解。

以下还有两篇比较详细的关于壳的帖子:

脱壳入门初级教学

【干货分享】恶意样本分析手册——常用方法篇

手动脱UPX压缩壳的更多相关文章

  1. 脱壳第三讲,UPX压缩壳,以及补充壳知识

    脱壳第三讲,UPX压缩壳,以及补充壳知识 一丶什么是压缩壳.以及壳的原理 在理解什么是压缩壳的时候,我们先了解一下什么是壳 1.什么是壳 壳可以简单理解为就是在自己的PE文件中包含了代码.而有不影响我 ...

  2. 手动脱Mole Box壳实战总结

    作者:Fly2015 这个程序是吾爱破解脱壳练习第8期的加壳程序,该程序的壳是MoleBox V2.6.5壳,这些都是广告,能够直接无视了.前面的博客手动脱Mole Box V2.6.5壳实战中已经给 ...

  3. <逆向学习第二天>如何手动脱UPX、Aspack壳

    UPS.AsPack压缩壳介绍: UPX .AsPack是一款先进的可执行程序文件压缩器.压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间.网络上传下载的时间和其它分布以及存储费用. ...

  4. 手动脱UPX 壳实战

    作者:Fly2015 Windows平台的加壳软件还是比較多的,因此有非常多人对于PC软件的脱壳乐此不彼,本人菜鸟一枚,也学习一下PC的脱壳.要对软件进行脱壳.首先第一步就是 查壳.然后才是 脱壳. ...

  5. UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06

    UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06 让编程改变世界 Change the world by program 今天小甲鱼给大家介绍两款压缩壳:UPX和WinUpack. UPX是 ...

  6. UPX压缩

    什么是UPX UPX (the Ultimate Packer for eXecutables)是一款先进的可执行程序文件压缩器,压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间.网 ...

  7. 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)

    系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...

  8. 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳

    [个人笔记]ximo早期发的脱壳教程--手脱UPX壳   壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳.   手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...

  9. 简单脱壳教程笔记(2)---手脱UPX壳(1)

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...

随机推荐

  1. linux shell的for循环语法是怎样的?

    答:如下: ;i<100;i++)) do echo "i=${i}" done

  2. P4568 [JLOI2011]飞行路线

    思路 套路题 建出k+1分层图,从上一层走到下一层代表坐了一次免费航线,跑最短路即可 注意可能有情况不需要耗完所有k次机会,所以应从每层的终点向下一层终点连一条边权为0的边 代码 #include & ...

  3. 教你用ActiveReports分析京东双十一数据的价值

    随着双十一购物盛会落下帷幕,各大电商平台纷纷公布出自己今年的成绩.与其它同行不同的是,京东除了公布1598亿的线上下单金额,还公布了线上线下融合的战果. 面对京东线上.线下海量数据源,我们该如何进行整 ...

  4. SAP 财务模块 FI-TV 差旅管理

    SAP 财务模块 FI-TV 差旅管理 Travel Management差旅管理事务码              描述PRT3      Trip Costs: Maintain Postings ...

  5. appium长按按钮

    public static AndroidDriver driver; /长按操作:waitAction的参数单位是ms/ public static void longClick(String id ...

  6. SMTP发送邮件

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件. Python对SMTP支持有smtplib和email两个模块,email负责构造邮件, ...

  7. tornado tcp 框架 demo

    server #!/usr/bin/env python import logging from tornado.ioloop import IOLoop from tornado import ge ...

  8. Selenium IDE使用

    基于版本Selenium IDE 3.2.2(注:该工具不常用,可以使用定位元素是否存在) Selenium IDE可以录制也很方便,当然录下来的经常回放不成功,需要自己调试就是了.它是只针对Web页 ...

  9. JavaSE习题 第七章 常用实用类

    问答题 1.怎样实例化一个Calendar对象? Calendar ca=Calendar.getInstance(); 2.Calendar对象调用set(1949,9,1)设置的年月日分别是多少? ...

  10. 使用ajax判断登录用户名

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Register.aspx. ...