【BUUCTF】 reverse 新年快乐

您所在的位置:网站首页 春节推文标题怎么写 【BUUCTF】 reverse 新年快乐

【BUUCTF】 reverse 新年快乐

2023-06-02 04:15| 来源: 网络整理| 查看: 265

目录

一.题目准备

(1)IDA

(2)查壳工具(本文以Detect it Easy为例)

(3)手动脱壳软件(X32dbg或X64dbg为例)

(4)知晓ESP定律(手动脱壳原理)

(5)自动脱壳软件

二.解题

(1)IDA分析程序

 (2)upx壳

(3)如何脱下upx壳

(4)开始脱壳

1 寻找OEP

​编辑 2dump文件及重建导入表IAT( ImportAddress Table)

 (5)寻找flag

三.写在最后的话

一.题目准备 (1)IDA (2)查壳工具(本文以Detect it Easy为例) (3)手动脱壳软件(X32dbg或X64dbg为例) (4)知晓ESP定律(手动脱壳原理) (5)自动脱壳软件 二.解题 (1)IDA分析程序

 当然也可以在拖入IDA前使用查壳工具先检测一遍,可以看出是upx加壳

 (2)upx壳

那么问题来了什么是upx壳。

壳是另外在可执行文件中所包含的代码,且自身不影响文件的正常执行。

建立upx壳则是将原本的可执行文件的代码和数据压缩后加入解压代码,压缩后的文件变小且很难静态分析。我们将可执行文件的入口点成为OEP(original entry point),压缩后的文件入口称为EP。upx加壳的程序在网上是开源的,我们也可自己写脱壳加壳程序。其在执行时,可以实现对程序的同步解压缩,不会影响程序的执行效率。所以说壳这一比喻十分恰当,一段子程序包护主程序。

(3)如何脱下upx壳

首先我们要了解ESP定律:ESP(Extended Stack Pointer)栈顶指针,在硬件中存在一个寄存器专门存放此指针称为ESP寄存器

上文中我们提到了带有upx加密壳程序在执行时,会同步解压程序,在此过程中,壳会将当前寄存器的状态压栈(典型指令pushad),然后在解压结束后将之前的栈弹出以恢复程序原状态,(典型指令popad)。

在了解ESP定律后,个人认为可以形象的理解:一个人在打乱自己书桌之后,要在最后将书桌恢复为打乱前的样子。

理论:前文中我们知道了upx壳是依靠隐藏程序的OEP来达到反汇编的效果,那么,为了找到OEP我们可以去观察ESP的变化,当其变化时(有且仅有ESP寄存器变化时),表明此时有pushad指令将当前寄存器状态(指针)保存,此时我们可以通过对栈设置硬件断点,当对应栈中的值被弹出时,往往下一语句即为程序的OEP。

(4)开始脱壳 1 寻找OEP

本题中程序为32位故使用32位的dbg

最初的EIP并非程序所在的位置

从符号中找到程序的模块,下面几个是动态链接库,双击 0040e2f0对应的地址跳转至EP

 当然在本题中断点处也存在提示,可以看见pushad指令

 跳转后选择标红的当前地址,将其设置为新的EIP(为保存了程序执行下一地址的寄存器,即新的开始跳转点)

 设置成功后,我们观察到右侧寄存器区域大部分为黑(红说明即将压入新数值)

 按下f7步进,直到右边寄存器的值变红(本题中只向下执行了一条语句)

(数值每次不一样) 

右键选择ESP内的数据,选择跟踪其在内存内的位置

 此时左下窗口跳转为

为该数据设下硬件断点

 然后按下f4或调试中的运行,程序停在了popad下(由于本人疏忽将程序关闭,此后图片中的地址与前文中不同,但思路一致)

 

也就是说,程序在解压完成后,跳转至此并将之前保存的寄存器状态弹出,即此处即为我们所寻找的OEP

复制该地址,并打开Scylla插件

 2dump文件及重建导入表IAT( ImportAddress Table)

将文件dump导出

 

 首先自动生成IAT,然后将库导入,最后完成修复

 得到一个exe文件(带SCY)

 打开ida,将文件拖入ida中,可以看到此时程序已经脱壳

 (5)寻找flag

常规思路,先从字符串表中寻找,发现疑似flag(结合题目提示)

 (成功,界面就不放了)(记得加flag{})

三.写在最后的话

本题的主要考察了对于ESP定律的应用,如果闲手动脱壳找OEP麻烦,完全可以使用现有的脱壳工具,但是前文也提到了,upx壳的代码是开源的。也就是说,如果想稍微深刻的理解原理而不是当一名脚本小子,那么就要从写题的每一个为什么开始。每一个为什么都有它存在的意义。也是为了我们真正的去掌握一门技术,去保持自己对于技术的热爱。若是只是知道解决什么问题,只知其一,不能举一反三,那我们学习技术的意义在何处?现实不是做题,不是吗?

作者小小的表达了一下自己的观点

本文为作者自己结合网上文章与自己探索的产物,难免存在疏漏,恳请各位将其中的问题批评指正,为了大家的学习和进步

最后的最后,分享一句话

世界因知识的分享而变得平等和宽容

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3