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

CTF逆向-Upx脱壳攻防世界simple unpack文章目录前言UPX技术原理应用范围软件使用CTF实战程序查壳UPX脱壳总结前言加壳软件分两类:压缩壳:压缩的目的是减少程序体积,如ASPack、UPX、PECompact等;加密壳:加密是为了防止程序被反编译(反汇编)、跟踪和调试,如ASProtect、Armadillo、EXECryptor、Themida、VMProtect。壳的存在会让我们找不到程序的真实入口点,从而不能正确的分析反汇编程序,也就对程序起到了一定的保护作用。加密壳的基本思路:将原本程序的PE相关代码复制

大家好,又见面了,我是你们的朋友全栈君。

前言

加壳软件分两类:

  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.exe upx -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 加壳的病毒程序。所以要想让加壳达到防止反编译、反调试跟踪的目的,还是得采用加密壳而非压缩壳。对于加密壳的激活成功教程分析练习,等待下一步的学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161703.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 网络python培训班「建议收藏」

    网络python培训班「建议收藏」为进一步推动高等院校人工智能教学工作的开展,加强国内各高等院校同行间的交流,培养国内的师资力量,将人工智能最新实训内容带入课堂,特举办“人工智能系列课程理论与实践”高级培训班。该培训定于2021年7月20日开始,共包含七大专题,每个专题5天左右,共计30天,通过线上直播的方式进行集训。七大专题分别为Python机器学习,图像识别与深度学习,深度学习与NLP,知识图谱、图神经网络和强化学习,深度学习PyTorch理论与实战。本次培训由权威专家主讲,提供实验环境及实验数据,并提供配套资料,通过剖析工程案例展

    2022年7月19日
    17
  • 中国的程序员数量是否已经饱和或者过剩?「建议收藏」

    中国的程序员数量是否已经饱和或者过剩?「建议收藏」根据教育部数据显示:2020年本科毕业生人数874万人。《2020年中国大学生就业报告》显示:计算机类本科生在2020届毕业生数量中稳居前10。每年都有源源不断的新生力量加入程序员大军。另一方面,5G时代到来,对于互联网行业来说,未来将会有更多机会。各大互联网公司进入了新一轮技术资源抢占与加速发展;经过疫情的洗礼,各大传统企业也纷纷加入转型大军,重点发展线上业务;从国家“新基建”的行业分布来看,大多涉及互联网IT行业,预示了未来科学技术的发展走向……可以看到IT行业技术不断更新,专业IT人才随时都处

    2022年8月31日
    0
  • 手机JAVA编程技术[通俗易懂]

    JAVA手机编程技术林天峰(温州职业技术学院计算机系浙江

    2022年4月11日
    56
  • 树后台数据存储(採用webmethod)[通俗易懂]

    树后台数据存储(採用webmethod)

    2022年1月24日
    40
  • idea 2022.01.13激活码【中文破解版】2022.02.20

    (idea 2022.01.13激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlHCIQ56F36O-eyJsaWN…

    2022年4月1日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号