实验四:使用UPX加壳与脱壳
一、实验目的
- 了解程序加壳、脱壳原理
- 掌握PE文件结构
- 学习利用UPX Shell、LoardPE、IDA等工具完成软件的加、脱壳操作
二、实验题目
- UPX加壳:对crackme加上UPX壳,用 LordPE 或 PEiD 工具查看加壳前后的变化
- UPX脱壳:用UPX Unpacker对已加壳的 crackme.exe 程序进行脱壳
- 手动脱壳:使用ESP定律和Ollydbg工具对crackme.exe进行手工脱壳
- IDA静态分析:用 IDA 的 F5 反汇编功能查看脱壳前后的程序伪代码,获取运行crackme后屏幕提示的输入口令
三、实验环境
- Windows 7系统或以上、连接Internet的主机
- 可能会用到的软件:upxshell、LordPE、PEiD、upx unpacker、IDA、OllyDBG
- 手动脱壳实例参考:https://www.52pojie.cn/thread-727090-1-1.html
- ESP定律学习参考:https://www.52pojie.cn/thread-394116-1-1.html
四、实验步骤及结果
4.1 UPX加壳
首先查看未加壳前的应用程序
现在使用UPX Shell对壳进行加载
检查发现已经加壳成功
4.2 UPX脱壳
用UPX Unpacker对已加壳的 crackme.exe 程序进行脱壳
4.3 手动脱壳
根据ESP定律先找到PUSHAD下使得ESP变红的内存地址
然后在数据窗口中追踪
然后使用断点 --> 硬件访问 --> Word
然后使用F9直接运行到
然后再F8运行到OEP
然后删除硬件断点
然后使用Ollydbg脱壳工具进行脱壳
可以发现dump出来的文件脱壳成功
4.4 IDA静态分析
使用IDA打开脱壳后的文件可以看到main函数源代码
// write access to const memory has been detected, the output may be wrong!
int main_0()
{int v0; // ST14_4int v1; // edxint result; // eaxint v3; // ST14_4int v4; // edxunsigned int i; // [esp+50h] [ebp-2Ch]char v6; // [esp+54h] [ebp-28h]char v7; // [esp+55h] [ebp-27h]char v8; // [esp+56h] [ebp-26h]char v9; // [esp+57h] [ebp-25h]char v10; // [esp+58h] [ebp-24h]char v11; // [esp+59h] [ebp-23h]char v12; // [esp+5Ah] [ebp-22h]char v13; // [esp+5Bh] [ebp-21h]char v14; // [esp+5Ch] [ebp-20h]char v15; // [esp+5Dh] [ebp-1Fh]char v16; // [esp+5Eh] [ebp-1Eh]char v17; // [esp+5Fh] [ebp-1Dh]int v18; // [esp+60h] [ebp-1Ch]int v19; // [esp+64h] [ebp-18h]char v20[20]; // [esp+68h] [ebp-14h]v6 = 'r';v7 = 'o';v8 = 'i';v9 = 's';v10 = '2';v11 = '0';v12 = '1';v13 = '4';v14 = 'r';v15 = 'o';v16 = 'i';v17 = 's';v18 = '\0';v19 = '\0';printf("password:");scanf("%s", v20);if ( strlen(v20) == 12 ){for ( i = 0; i < 0xC && *(&v6 + i) == v20[i]; ++i );if ( i == 12 )printf("good job!\nthe key is your input!\n");elseprintf("try again!\n");if ( --stru_437180._cnt < 0 ){_filbuf(&stru_437180);}else{v3 = (unsigned __int8)*stru_437180._ptr;++stru_437180._ptr;}if ( --stru_437180._cnt < 0 ){_filbuf(&stru_437180);}else{v4 = (unsigned __int8)*stru_437180._ptr;++stru_437180._ptr;}result = 0;}else{printf("try again!!\n");if ( --stru_437180._cnt < 0 ){_filbuf(&stru_437180);}else{v0 = (unsigned __int8)*stru_437180._ptr;++stru_437180._ptr;}if ( --stru_437180._cnt < 0 ){_filbuf(&stru_437180);}else{v1 = (unsigned __int8)*stru_437180._ptr;++stru_437180._ptr;}result = 0;}return result;
}
程序是在与字符串rois2014rois
进行比较,所以密码就是rois2014rois
,测试成功
实验四:使用UPX加壳与脱壳相关推荐
- 【原创】脱UPX加壳的notepad.exe
[文章标题]: 脱UPX加壳的notepad.exe [文章作者]: 微微虫[S.T.C][DCT] [作者邮箱]: ]nuxgod@163.com [作者主页]: http://wwcgodsoft ...
- Android UPX加壳源码解析
目录 一. UPX加壳的原理 1. UPX的工作原理 2. UPX实时解压的原理和流程 3. UPX加壳应用的场景 4. 修改UPX源码需要注意以下几点 二. UPX加壳Android so的方法和 ...
- 什么是加壳和脱壳技术?加壳和脱壳技术是什么意思?
什么是加壳和脱壳技术?加壳和脱壳技术是什么意思? 加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩.加密驱动程序),以达到缩小文件体积或加密 ...
- BUUCTF-Reverse:新年快乐 + 加壳与脱壳
题目地址:https://buuoj.cn/challenges#%E6%96%B0%E5%B9%B4%E5%BF%AB%E4%B9%90 用IDA打开文件: 怎么可能才两个函数,猜测加了壳,直接查: ...
- 软件的壳和壳的含义、概念以及加壳和脱壳方法
软件的壳和壳的含义.概念以及加壳和脱壳方法 PE(Portable Executable) 也就是EXE和DL)文件所具有的起压缩.加密.保护作用的东西.可以用PEiD等软件查壳. 加壳通过修改程序入 ...
- Android so文件保护——使用upx加壳
最近有人问我关于UPX加壳的问题,关于UPX如何加壳以及脱壳,网上说的很清楚了,这里不细说了,附件是很早之前我配置UPX加壳环境的一些资料和配置包以及成功的实例,有需要的小伙伴可以下下来玩. 附件:点 ...
- 用ollydbg手脱UPX加壳的DLL
用Ollydbg手脱UPX加壳的DLL 作者:fly [目标程序]:UPX加壳的EdrLib.dll.附件中还有输入表.重定位数据.UPXAngela以及UnPacked以供参考. [作 ...
- .NET程序的代码混淆、加壳与脱壳
通常我们通过代码混淆.加密的形式达到软件保护的目的.在Web开发里我们接触过的可能就是JS代码加密了,可以通过对JS代码进行混淆.加密从而实现对核心JS代码的保护.如果没有接触过的可以在这里简单了解一 ...
- Python pyc文件 bytecode的压缩, 加壳和脱壳解析
我们常常看到, 自己用PyInstaller等库打包的exe被别人反编译.而源代码在exe文件中是以字节码形式存储的.掌握了字节码的加密技巧, 就可以防止源代码的反编译. 目录 1.字节码是什么 2. ...
最新文章
- 基于深度学习方式的点云处理算法汇总
- Hello Blazor:(2)集成Tailwind CSS
- 发现 ASP.NET Core SignalR
- 大数据分析必须要会的python函数操作!!!
- 159.Oracle数据库SQL开发之 SQL优化——若干
- 在matlab中配置vlfeat,在MATLAB R2018b中配置VLFeat
- yolov5深度剖析+源码debug级讲解系列(二)backbone构建
- linux 编辑文件出现E45readonly option is set (add! to .....)
- 连续四天!2018杭州·云栖大会你可以...
- 杀戮空间2服务器协议,杀戮空间2 云服务器搭建
- 流利说英语level4_英语流利说懂你英语 Level4 Unit1 Part1 Vocabulary
- QT——移植官方MQTT库
- AWS OpenSearch 1.0 简单部署安装
- 程序员如何写出技术好文?
- Java企业应用系统——MES工厂智造系统 包含ERP WMS
- 《网络是怎么连接的》读书笔记
- 迅雷5.5.4.268去广告版
- cosmos源码分析之二整体流程
- 锌矿如何计算机每吨价格,锌精矿价格计算方法
- SpringBoot配置文件的修改