简单脱壳教程笔记

article/2025/9/16 22:26:16

文章目录

    • 1、手脱UPX壳
      • 简介:
      • 脱壳:
      • 笔记:
        • 方法1:单步跟踪(需要有耐心)
          • 一、使用ODE插件
          • 二、tools按钮选择LordPE进行脱壳(提前在SETUP PATHS里添加好)
        • 方法2:ESP定律法
        • 方法3:2次内存镜像法
        • 方法4:一步直达法
    • 2、手脱ASPACK壳
      • 简介:
      • 使用工具:
      • 笔记:
        • 方法一:单步跟踪
        • 方法二:ESP定律法
        • 方法三:一步直达法
        • 方法四:2次内存镜像法
        • 方法五:模拟跟踪
        • 方法六:SPX
    • 3、手脱Nspack壳
        • 脱1.3版本
        • 版本2.3和3.7版本
    • 4、手脱FSG壳
      • 脱壳
        • 方法1
        • 修复
        • 方法2
        • 方法3:FSG2.0

1、手脱UPX壳

简介:

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)我们进入到OEP位置
在这里插入图片描述
6)找到OEP后 我们就可以进行脱壳,

一、使用ODE插件

在这里插入图片描述
有两种方式,然后点脱壳,保存
在这里插入图片描述

二、tools按钮选择LordPE进行脱壳(提前在SETUP PATHS里添加好)

在这里插入图片描述
在这里插入图片描述
然后右键修复镜像大小、选择完整转存
在这里插入图片描述
使用ImportREConstructor 进行修复,先选择需要脱壳的程序
根据OD中的地址,计算出OEP, OEP=VA(0047738C)-加载基址(00400000) 及刚才插件显示的7738C
然后获取导入表,显示无效的,最后进行修复
在这里插入图片描述
7、查看脱壳是否成功
在这里插入图片描述

方法2:ESP定律法

ESP定律法

1、单步 只有ESP突变
在这里插入图片描述

在这里插入图片描述2、右键 在数据窗口跟随

在这里插入图片描述

或者在输入dd xxxx / hr xxxx(ESP值)
在这里插入图片描述

3、右键设置断点——硬件访问断点——word/Dword ( 在之前把其余断点删除)
在这里插入图片描述
然后运行
在这里插入图片描述
在这里插入图片描述

然后再删除硬件断点,单步到达OEP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重复方法一步骤6

方法3:2次内存镜像法

2次内存镜像法

1、第一次查找内存或者上排的M直达
在这里插入图片描述2、找到程序段的第一个.rsrc资源文件字,下段,然后运行
在这里插入图片描述

3、第二次找内存00401000下段,运行
在这里插入图片描述
4、单步跳转,到达OEP

方法4:一步直达法

一步直达法

1、右键或ctrl+f查找popad ,去掉整个块的√
在这里插入图片描述
在这里插入图片描述
2、若不是需要的就ctrl+L继续查找,运行到popad 两种方法都可以
在这里插入图片描述
在这里插入图片描述
3、单步跳转到OEP

2、手脱ASPACK壳

简介:

AsPack是高效的Win32可执行程序压缩工具,能对程序员开发的32位Windows可执行程序进行压缩,使最终文件减小达70%!

使用工具:

PEid、OD

笔记:

方法一:单步跟踪

1、单步到call 再F8发现程序会运行
在这里插入图片描述

按F7或这个键进入call
在这里插入图片描述
跳转
在这里插入图片描述
继续单步 又有一个call会运行 继续F7
在这里插入图片描述
继续单步,向上跳转F4,再继续单步
在这里插入图片描述
在这里插入图片描述
来到OEP
在这里插入图片描述
2、脱壳,记住修正地址
在这里插入图片描述
3、查看是否成功

方法二:ESP定律法

1、看关键句的下一句,单步,ESP突变在这里插入图片描述
在这里插入图片描述
2、数据窗口跟随
在这里插入图片描述
3、下段
在这里插入图片描述
3、运行一下,删掉断点
在这里插入图片描述
4、继续单步到OEP
在这里插入图片描述

方法三:一步直达法

一步直达法

方法四:2次内存镜像法

2次内存镜像法

方法五:模拟跟踪

模拟跟踪法

1、进入内存m,找到包含SFX的
在这里插入图片描述
2、tc eip<地址 ,回车 ,OD左上角显示跟踪字样,会自动跳到OEP
在这里插入图片描述
在这里插入图片描述

方法六:SPX

1、选项——调试设置——SFX 选择第二个
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重载一下
在这里插入图片描述
自动跳转到OEP
在这里插入图片描述

3、手脱Nspack壳

脱1.3版本

单步到call ,ESP突变也用ESP定律法

在这里插入图片描述
也可用单步跟踪法
或者 模拟跟踪法
tc eip<0043000
在这里插入图片描述

或者 2次内存镜像法
没有.rsrc的话,直接在内存00401000下段,运行
在这里插入图片描述
或者 at GetVersion (适用于3.0之前的版本)
在这里插入图片描述
在这里插入图片描述
然后在retn下断点F2——运行——取消断点F2——单步F8
在这里插入图片描述
在这里插入图片描述

版本2.3和3.7版本

无特别差异

4、手脱FSG壳

脱壳

方法1

可用单步跟踪法
在这里插入图片描述
在jmp处下断点——单步 直接跳转OEP
在这里插入图片描述
使用LORDPE脱壳后发现无法运行

修复

找个这种call
在这里插入图片描述
前面和脱壳步骤一样,找到425210-400000=25210位置
在这里插入图片描述
对应
在这里插入图片描述
命令行 输入 d425210
在这里插入图片描述
向上向下翻找到并记录边界值
上边界地址00425000
在这里插入图片描述
下边界地址00425280
在这里插入图片描述
RVA值为上边界:00425000-00400000=25000
大小为下边界-上边界 :25280-25000=280 为了方便可直接填写1000
在这里插入图片描述

方法2

单步到这发现ESP突变,可以ESP定律法
在这里插入图片描述

方法3:FSG2.0

特殊ESP定律法,不遵循堆栈定义
单步到popad下面,看堆栈第四行
在这里插入图片描述
右键——反汇编窗口中跟随
在这里插入图片描述
下硬件断点
在这里插入图片描述
shift+F9跳转到OEP
在这里插入图片描述


http://chatgpt.dhexx.cn/article/TMMNUjQK.shtml

相关文章

常用编程语言开发工具

编程语言开发工具可分为文本开发工具 和 集成开发工具。 文本开发工具的特点是 体积小&#xff0c;功能也不弱。 集成开发工具的特点是 体积大&#xff0c;功能强大。 1.文本编辑器 widows 下的 notepad&#xff08;记事本&#xff09; Unix下的 vim &#xff0c;这两个工具系…

开发工具:2022个人开发工具清单

目录 ​编辑 1、谷歌浏览器 2、腾讯文档 3、Notepad 4、IntelliJ IDEA 5、VisualStudio 6、VSCode 7、微信开发者工具 8、Navicat 9、PDManer 10、Git/Tortoise Git 11、Axure 12、NxShell 13、ApiPost 14、Xmind 15、Everything 16、WizTree 17、猿如意 …

开发工具推荐

1.前言 俗话说&#xff1a;“工欲善其事&#xff0c;必先利其器”。 为了助力大家的学习和进阶&#xff0c;本小节介绍几个对 Java 学习非常有帮助的 IDEA 插件&#xff0c;代码反编译和反汇编工具&#xff0c;以及非常不错的网站等。 2. IDEA 插件 首先不必多说&#xff0c…

【高效开发工具系列】开发工具

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

Linux--开发工具

前言&#xff1a; 是不是看见10月24日有种莫名的亲戚&#xff0c;在信息技术行业&#xff0c;由于2101024&#xff0c;所以1GB 1024MB&#xff0c;1MB 1024KB&#xff0c;1KB 1024B。于是1024是程序员们最为敏感的数字&#xff0c;那么今天祝所有铁子们节日快乐&#xff01;…

开发工具入门

配置SublimeText的编译 工具->编译系统->新建编译系统 修改如下代码到新建文件内&#xff0c;CtrlS保存内容到 “SublimeText安装目录下的\Data\Packages\User” # 配置文档 { "cmd": ["软件名如&#xff1a;php", "$file"], &qu…

开发工具的使用

git git管理你的项目 进入项目----》右键----》git bash here--->输入git init---->该文件夹和子文件夹都会被git管理 写项目.,...... 头部完成 头部完成想形成一个版本号(形成一个版本号目的是后期可以切换回来)&#xff0c; 有以下几个步骤 git add . git commit -m …

【开发工具系列】猿创征文|有了这8个开发工具,程序员可以早点下班了

&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3;&#x1f4e3; &#x1f38d;大家好&#xff0c;我是慕枫 &#x1f38d;前阿里巴巴高级工程师&#xff0c;InfoQ签约作者、阿里云专家博主&#xff0c;一直致力于用大白话讲解技术知识 &#x…

开发工具使用

一、markdown 1、MarkDown语法 Markdown 语法手册 &#xff08;完整整理版&#xff09;【Markdown语法】字体颜色大小及文字底色设置 二、IDEA工具 1.1 IDEA相关插件 idea插件下载地址&#xff1a;https://plugins.jetbrains.com/ 开发必装插件&#xff1a; &#xff08;1…

程序员常用开发工具盘点

优秀的程序员优秀的原因不一定是他敲代码比别人快&#xff0c;但他解决事情的效率一定比别人都要高&#xff0c;往往都会利用工具提升自己的效率&#xff0c;下面给大家分享几个程序员常用的开发工具。 1.浏览器插件FeHelper FeHelper插件支持Chrome、Firefox、MS-Edge浏览器…

15个程序员实用的开发工具,你有用过几个呢?

分享一些日常工作中比较实用的软件和网站&#xff0c;这些网站你平时工作中大概率是会用到的&#xff0c;感觉不错的话可以点赞收藏 1. GitHub Desktop 对于新手来说&#xff0c;要记住那么多git命令可能有点困难&#xff0c;建议新手使用git可视化工具&#xff0c;会方便很多…

13个程序员常用开发工具用途推荐整理

作为一名刚入门的程序员&#xff0c;选择合适的开发工具可以提高工作效率&#xff0c;加快学习进度。在本文中&#xff0c;我将向您推荐10个常用的开发工具&#xff0c;并通过简单的例子和代码来介绍它们的主要用途。 1. Visual Studio Code Visual Studio Code&#xff08;V…

我常用的15 款开发工具!

上一篇&#xff1a;从零开始搭建公司后台技术栈&#xff0c;这套架构绝了... 作者&#xff1a;爱马仕_人员链接&#xff1a;https://www.jianshu.com/p/4d1a4606ef61 从人工到自动化&#xff0c;从重复到创新&#xff0c;技术演进的历程中&#xff0c;伴随着开发者工具类产品的…

在 Windows 下关闭135/139/445端口的图文方法

135端口主要用于使用RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;协议并提供DCOM&#xff08;分布式组件对象模型&#xff09;服务。 端口说明&#xff1a;135端口主要用于使用RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&…

如何关闭135、137、138、139、445端口

昨天好像有比特币勒索病毒爆发。。。将135、137、138、139、445这些不常用的端口禁用能够预防病毒。。。貌似大多数高校的网络中心会在校园网及数据中心禁止外网访问这几个端口&#xff0c;运营商也将445端口暂时禁用。 我还是写一下这篇教大家如何关闭135、137等等共享端口的…

如何关闭135端口、139端口、445端口

都知道135端口,139端口以及445端口.这三个端口容易被黑客或者病毒利用.所以我们今天就来教下大家如何关闭它. 太难的方法就不教给大家了.什么实用策略组之类的.新手感觉很麻烦.所以下面给大家来简单的教程 方法一:直接用软件关闭它. 工具下载 点击Close,Disable 就可以了 方…

WIN10系统如何关闭139 135 445端口

扫描自己的主机&#xff0c;发现自己的某些端口开启着的 139端口 这个端口比较危险 139端口是NetBIOS Session端口&#xff0c;用来文件和打印共享 如果你是单机&#xff0c;不是企业内部网里的成员&#xff0c;为了保护计算机的安全关闭这个端口比较好。 135 137 139 445 3389…

139端口的攻与防

通过139端口入侵是网络攻击中常见的一种攻击手段&#xff0c;一般情况下139端口开启是由于NetBIOS网络协议的使用。NetBIOS即网络基本输入输出系统&#xff0c;系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址&#xff0c;从而实现信息通讯。在局…

R语言热门应用领域

R的概述&#xff1a; R语言是用于统计分析&#xff0c;图形表示和报告的编程语言和软件环境。 R语言的核心是解释计算机语言&#xff0c;其允许分支和循环以及使用函数的模块化编程。 R语言允许与以C&#xff0c;C &#xff0c;.Net&#xff0c;Python或FORTRAN语言编写的过程…

R语言 | 关联规则

1.概念 1.1 引论 关联规则(AssociationRules)是无监督的机器学习方法,用于知识发现,而非预测。 关联规则的学习器(learner)无需事先对训练数据进行打标签,因为无监督学习没有训练这个步骤。缺点是很难对关联规则学习器进行模型评估,一般都可以通过肉眼观测结果是否合…