BUUCTF 新年快乐(xdbg手动脱壳)

(博客仅个人理解,如有错误欢迎指正)

-------壳的概述:

壳主要有压缩壳和加密壳两种:加壳软件在运行时运行外壳代码,对程序进行解压操作或解密操作,所以对于比较简单的壳,一般思路就是在运行完外壳操作后,找到源程序入口(即OEP–original entry pointer)将源程序通过工具dump出来为一个exe文件,然后再进行一些修复操作,比如说重建输入表。

BUUCTF新年快乐:

1.下载附件将exe文件拖入查壳软件进行分析,发现加了upx壳:
查壳
在不脱壳的情况下拖入ida进行分析的结果如图:函数明显有点少没脱壳拖入ida
3.开始脱壳:
esp定律脱壳(个人理解):
在外壳代码中有一个pushad的指令,该指令会将所有的寄存器的值都压入栈中也就是说在pushad指令之后esp的值就是指向外壳的代码段了,等之后运行完外壳程序,我们只要找到OEP就可以了

开始操作

将程序拖入x32dbg进行分析(查壳的时候可以看到程序为32位):
由于一开始x32dbg断在的位置不是pushad所以我从断点处找到pushad处重新在此处开始运行程序(pushad指令可以在x32dbg打开exe文件之后在菜单栏中的断点那一栏找到,因为是一次性断点所以可能运行过了那个断点之后就找不到了,但是还是会停在那,不过可能会被忽略)
在这里插入图片描述
在这里插入图片描述
单步运行程序,在pushad之后esp发生变化之后设置硬件断点
在这里插入图片描述

在这里插入图片描述
点击运行,之后会自动停下来, 往上可以看到一个popad的指令,该指令将寄存器的值进行还原。找到下面一个jmp指令所要跳转的位置,就是程序的OEP
请添加图片描述

dump操作在这里插入图片描述
对文件进行修复,理论可以看文末小甲鱼的视频。
操作如下:在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

BUUCTF前几题感想:

有时候将程序拖进ida之后会发现有好多函数,为了更快的找到要开始分析的程序片段,个人觉得从shift+F12查看字符串比较快,关键词一般是flag,或者乱码(大多数情况下是中文)然后一步一步分析需要哪些条件

推荐阅读: 使用x64dbg脱壳之开源壳upx
http://www.kanhaige.com/post-67.html

B站有关知识点讲解 小甲鱼解密系列脱壳篇https://www.bilibili.com/video/BV1us411P7yo?from=search&seid=1267368212914346292

第一篇博客,如有不足,希望大家指正

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值