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

admin 2022年3月21日02:24:28评论638 views字数 1035阅读3分27秒阅读模式

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

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

BUUCTF新年快乐:

1.下载附件将exe文件拖入查壳软件进行分析,发现加了upx壳:

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


在不脱壳的情况下拖入ida进行分析的结果如图:

函数明显有点少


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



3.开始脱壳:
esp定律脱壳(个人理解):
在外壳代码中有一个pushad的指令,该指令会将所有的寄存器的值都压入栈中也就是说在pushad指令之后esp的值就是指向外壳的代码段了,等之后运行完外壳程序,我们只要找到OEP就可以了

开始操作

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

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


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



单步运行程序,在pushad之后esp发生变化之后设置硬件断点



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



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




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



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



dump操作


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



对文件进行修复,理论可以看文末小甲鱼的视频。
操作如下:


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



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



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



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



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



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



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


仅个人理解,如有错误欢迎指正



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

欢迎大家加群一起讨论学习和交流
(此群已满200人,需要添加群主邀请)

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

从业精于勤而荒于嬉,

行成于思而毁于随。

原文始发于微信公众号(衡阳信安):BUUCTF 新年快乐(xdbg手动脱壳)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月21日02:24:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   BUUCTF 新年快乐(xdbg手动脱壳)http://cn-sec.com/archives/834735.html

发表评论

匿名网友 填写信息