CTF逆向-Upx脱壳攻防世界simple unpack

文章目录

  • 前言
  • UPX
    • 技术原理
    • 应用范围
    • 软件使用
  • CTF实战
    • 程序查壳
    • UPX脱壳
  • 总结

前言

加壳软件分两类:

  1. 压缩壳:压缩的目的是减少程序体积,如 ASPack、UPX、PECompact 等;
  2. 加密壳:加密是为了防止程序被反编译(反汇编)、跟踪和调试,如 ASProtect、Armadillo、 EXECryptor、Themida、VMProtect。

壳的存在会让我们找不到程序的真实入口点,从而不能正确的分析反汇编程序,也就对程序起到了一定的保护作用。

加密壳的基本思路:

  1. 将原本程序的 PE 相关代码复制到补丁(壳)中;
  2. 加密程序;
  3. 修改程序入口点,使得程序启动后会先运行补丁程序;
  4. 补丁程序会根据先前复制的相关代码对程序进行解密和还原,使得程序能够正常运行;
  5. 还原后再返回执行原本的入口点。

本文不讨论加密壳,而是通过攻防世界一道 CTF 逆向题目 simple-unpack 来学习下基于 UPX 的压缩壳的特征和脱壳。

UPX

UPX (the Ultimate Packer for eXecutables) 是一款先进的可执行程序文件压缩器, 也是一个著名的压缩壳,主要功能是压缩 PE 文件(比如 exe、dll 等文件),有时候也可能被病毒用于免杀。

UPX 壳是一种保护程序(一般是 EXE 文件的一种外保护措施),其主要用途 :

  • 让正规文件被保护起来,不容易被修改和破解;
  • 使文件压缩变小;
  • 保护杀毒软件安装程序,使之不受病毒侵害;
  • 木马,病毒的保护外壳,使之难以为攻破。

技术原理

UPX 对于可执行程序资源压缩,是保护文件的常用手段。俗称加壳,加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。

UPX 加壳其实是利用特殊的算法,对 EXE、DLL文件里的资源进行压缩。类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉 CPU,怎么才能解压自己。当加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当执行这个程序的时候这个壳就会把原来的程序在内存中解开,解开后,以后的就交给真正的程序。

应用范围

压缩文件

用 UPX 压缩过的可执行文件体积缩小 50%-70% ,这样减少了磁盘占用空间、网络上传下载的时间和其它分布以及存储费用。 通过 UPX 压缩过的程序和程序库完全没有功能损失和压缩之前一样可正常地运行,支持的大多数格式程序,没有运行时间或内存的不利后果。

加壳脱壳

程序为了反跟踪、被人跟踪调试、防止算法程序被别人静态分析就需要加壳。使用加壳软件加密代码和数据,就可以保护你程序数据的完整性,防止被程序修改和被窥视内幕。

软件使用

UPX 软件的 Github下载地址,拿来即可食用:
在这里插入图片描述
在 cmder 中打开,使用 -h 参数可以查看使用方法:
在这里插入图片描述核心的用法如下:

upx sample.exeupx -d sample.exe
压缩可执行文件解压缩可执行文件

CTF实战

了解完关于 UPX 加壳的基础知识后,回归正题,返回到 simple-unpack 题目中来(附件下载地址),题目如下:
在这里插入图片描述

程序查壳

既然题目都已经提示是 “一个被加壳的二进制文件” 了,那么下载后当然是查看下加壳情况了,可以看到是 64 位的文件,做了 UPX 加壳保护:

在这里插入图片描述

直接尝试拖入 IDA Pro 64bit 查看程序结构,会看到压缩壳处理后的程序的函数极少:
在这里插入图片描述然而发现在 16 进制查看区域点击“Alt+T”快捷键进行 flag 关键词搜索,即可看到 flag(惊不惊喜,意不意外…):
在这里插入图片描述这大概就是压缩壳的弊端了,没有对源程序进行加密,压缩后还是可泄露源程序的数据。

UPX脱壳

虽然上面已经拿到了 flag 值,但是本文重点还是要学习下 UPX 的脱壳、以及对比 UPX 加壳、脱壳后的文件结构,所以下面继续对目标文件进行脱壳。

不废话,直接上 upx 软件进行脱壳(解压缩):
在这里插入图片描述
随后将脱壳后的文件直接拖入 IDA Pro 进行反汇编,可以看到源程序的代码结构了,并在 main 函数中成功找到 flag,如下图所示:
在这里插入图片描述在这里插入图片描述最终 flag 值:flag{Upx_1s_n0t_a_d3liv3r_c0mp4ny},over!

总结

本文学习记录了 UPX 软件加壳、脱壳(压缩与解压缩)的方法,并直观比较了其加壳后、脱壳后的文件结构,总的来说压缩壳的作用有限,UPX 已经被应用很久了,脱壳技术成熟,使用于防止反编译、病毒免杀的作用十分有限,杀毒引擎基本能直接识别出做了 UPX 加壳的病毒程序。所以要想让加壳达到防止反编译、反调试跟踪的目的,还是得采用加密壳而非压缩壳。对于加密壳的破解分析练习,等待下一步的学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/352864.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

UPX脱壳逐一跟踪分析

UPX脱壳逐一跟踪分析 写在前面OD跟踪命令先结合PE知识分析分析“新年快乐.exe” 写在前面 之前看到的UPX脱壳文章都只是教了方法,对UPX的原理少有提及。看了《逆核》的UPX脱壳一章后,俺尝试把UPX脱壳与PE文件结构的知识结合起来整理了一些(也…

逆向:UPX脱壳

2020/05/18 - 引言 本身对加壳这种东西只是知道,只知道可以使用软件进行自动化脱壳,没有具体了解过原理。然后,最近部署的蜜罐经常下载UPX加壳的样本。这次就来分析一下。 学习到的东西 利用vim修改十六进制内容upx脱壳 样本 首先&#xff0c…

对于UPX脱壳的解决

(upx学习ing,不定期更新一些自己遇到的一些关于此的比较好的题目或者感悟) 对于手动脱壳,我们有两种常用的安全工具,一个是od,另一个是ida。两个方法略有不同。对于脱一般的程序壳的时候,我主要用的是ida来脱壳&#…

Linux4.9 Tomcat部署及优化

文章目录 计算机系统5G云计算第六章 LINUX Tomcat部署及优化一、Tomcat概述1.Tomcat核心组件2.什么是 servlet3.什么是 JSP4.Tomcat 功能组件结构5.Container 结构分析6.Tomcat 请求过程7. 配置文件 二、Tomcat 服务部署1.关闭防火墙,将安装 Tomcat 所需软件包传到/…

elf 变异upx 脱壳

题目 是某ctf题 首先使用IDA打开: 函数极少,有壳。 查看函数 这个跳转比较可疑 下面进行IDA动态调试 进入loc_52D516 再进入 直到找到jmp r13 运行到这里,F8跳转 直接retn下断点F9,直接retn下断点F9重复, 直到…

upx手动脱壳

工具 upx:upx是一个开源的压缩壳工具,可以到github下载upxStudy_PE工具,可以到看雪论坛下载 upx简单的用法 upx src.exe命令将src.exe加壳 upx src.exe -o dst.exe命令将src.exe加壳并另存为dst.exe upx手动脱壳 脱壳原理 平衡堆栈法(又…

upx脱壳教程(buuctf逆向题新年快乐)

upx脱壳 脱壳教程步骤:工具: 实际操作OEP导出内存文件(dump)修复 题目链接 脱壳教程 步骤: 1.找到OEP 2.导出内存文件(dump) 3.修复 工具: 吾爱破解OD x32dbg/x64dbg 实际操作 …

微信小程序开发之云函数本地调试

环境 微信开发者工具 Stable 1.06.2303220云开发控制台 v1.5.47 简介 微信云开发提供了云函数本地调试功能,在本地提供了一套与线上一致的 Node.js 云函数运行环境,让开发者可以在本地对云函数调试: 在本地调试时,可以设置断点…

全面的软件测试

1 全过程的软件测试图解 传统的软件测试,开发人员完成任务之后,最后交付给测试人员,这种模式下,测试人员不能及早发现需求阶段的缺陷,同时测试工作的开展也滞后了,产品质量得不到有效的过程控制和分析&…

List of USB ID's

为什么80%的码农都做不了架构师&#xff1f;>>> # # List of USB IDs # # Maintained by Stephen J. Gowdy <linux.usb.idsgmail.com> # If you have any new entries, please submit them via # http://www.linux-usb.org/usb-ids.html # or send entries a…

FastAPi上传文件报错,There was an error parsing the body

问题描述 通过postman调用fastapi编写的文件接口报错&#xff0c;如下图&#xff1a; {"detail": "There was an error parsing the body" } 问题的解决过程 postman本身的问题 postman有个work directory的概念&#xff0c;所以再使用postman上传的文…

Arm NN 成功适配 openEuler Embedded,提供高性能神经网络推理能力

近期&#xff0c;RISC-V SIG 完成了 Arm NN 在 openEuler Embedded 系统的适配&#xff0c;于 2023 年 1 月合入系统构建工程代码库&#xff0c;经测试验证可用&#xff0c;实现了神经网络加速库在 openEuler Embedded 嵌入式系统上的加速和优化。 系统构建工程下载地址&#x…

【数据结构】--单链表力扣面试题⑥链表的回文结构

题述&#xff1a;对于一个链表&#xff0c;请设计一个时间复杂度为o(n),额外空间复杂度为o(1)的算法&#xff0c;判断其是否为回文结构。给定一个链表的头指针A&#xff0c;请返回一个bool值&#xff0c;代表其是否为回文结构。保证链表长度<900 测试样例&#xff1a; 输入…

中医养生APP小程序开发 了解传统文化传承医学经典

中国文化博大精深&#xff0c;中国传统文化更是历史久远&#xff0c;一直到几千年后的今天很多传统文化依然对我们现在的生活有着重大的影响&#xff0c;比如中医。随着人们对健康关注度的提高&#xff0c;很多人把目光投向了追本溯源的中医上&#xff0c;企图通过中医养生达到…

还原SQL Server 2008备份到另一台设备上

打开”SQL Server Management Studio“菜单&#xff0c;右击数据库&#xff0c;选择“还原数据库”&#xff1a; 设置目标目标数据库的名称和选择数据库备份文件的位置&#xff1a; 在"选项"页中&#xff0c;更改数据文件的还原路径为新的位置 &#xff0c;这里…

墨天轮专访TDengine陶建辉:坚持做难而正确的事,三次创业成就不悔人生

导读&#xff1a; 时序数据库&#xff08;Time Series Database&#xff09;在最近几年被越来越多的用户接受并使用&#xff0c;并有广泛的应用场景。云原生时序数据库 TDengine 一直稳居墨天轮时序数据库榜首&#xff0c;其近期的海外发展也初见成效。本期&#xff0c;墨天轮技…

清除 挖矿脚本 攻击

清除 挖矿脚本 攻击 1.查看系统进程,是否有异常: top 发现CPU占用率200%&#xff0c;判定服务器已经被植入木马 2.查看异常进程是哪一个程序造成的 ls -al /proc/14618 发现恶意程序&#xff08;绿色的是可执行文件&#xff09;/etc/lafy 3.删除恶意程序 cd /etc rm -rf …

记一次挖矿病毒应急处置全过程挖矿处置基本操作

记一次挖矿病毒应急处置全过程&挖矿处置基本操作 一、处置过程1.查看第一位的pid号&#xff1a;325352.进入/tmp/.X11-unix目录&#xff0c;其中11文件中写的是32535,01文件中写的是守护进程pid号10092&#xff08;目录里的文件不一定相同&#xff09;。将整个目录删除3.cr…

操作系统复习2.3.2-临界区的软件硬件实现方法

软件实现方法 思想 在进入区设置并检查一些标志来得知是否有进程已经在临界区&#xff0c;有则循环检查等待&#xff0c;无则直接进入&#xff0c;进程进入/离开临界区时修改标志 单标志法 通过标记进程号来实现控制只有一个进程能够进行临界区&#xff0c;但会出现P0进程进…

挖矿木马分析之肉鸡竟是我自己

之前服务器总是有一些异地登陆的告警信息&#xff0c;用代理就会这样&#xff0c;自己也没太在意。今天偶然间打开一看&#xff0c;发现如下提示&#xff01; 接下来处理一下&#xff01; 收集信息 finalshell登陆发现CPU占用率为100%ps auxw|head -1;ps auxw|sort -rn -k3|h…