【软件逆向】带壳带反调试找flag教程(VMProtect3.0+X64dbg+ScyllaHide)

本教程是博主解答特定题目的一次特殊经历,但是解答问题的方法和思路是共通的,希望能帮到做逆向的朋友。

一、答案

jZiBUViF0WUYwISp4qjx5YwucMNGpb4g

二、解题步骤

  1. 查壳。
  2. 尝试去壳。
  3. 反反调试。
  4. 动态调试,输入字符串。
  5. 找寄存器附近是否有具有flag特征的字符串。(特别是具有循环比较特征的汇编代码)
  6. 找到后重新运行crackme2.exe,验证字符串是否是flag,若是,结束;若不是,重复第5步。

三、解题工具

查壳工具:ExeInfoPE、Detect It Easy。
脱壳工具:Scylla。
调试工具:IDA Pro、X64dbg。
反反调试插件:ScyllaHide。

四、解题过程

  1. 使用Exeinfo PE查壳,显示“VMProtect v.3.0x - ver.3.0.0 - 3.5.0”表示有壳,类型为VMP3.0~3.5,但是同时显示“not packed”表示无壳,比较奇怪,用其他工具再验证一下。
    在这里插入图片描述
  2. 使用Detect It Easy再次查壳,查明确实有VMProtect加壳,版本在3.2.0~3.5.0之间。
    在这里插入图片描述
  3. 尝试使用Scylla去壳,点击dump保存crackme2.exe的dump文件。
    在这里插入图片描述
  4. 使用X64dbg动态调试,找到程序的真实OEP。加壳前后RSP寄存器的值应该保持一致,所以程序的入口处的RSP应该与运行到地址0x140340CD3处的RSP保持一致,为0x14FF28。
    在这里插入图片描述
  5. 对0x14FF28处地址下4字节的硬件写入断点。
    在这里插入图片描述
  6. 重新开始动态调试,每次RSP==0x14FF28时都使用IAT Autosearch,并且Get Imports,如果全部为绿色的对勾,则说明找到了入口,点击Fix Dump使用第3步保存的dump文件修复。
    在这里插入图片描述
  7. 由于有9个红叉,没能完全脱壳,程序不能正常运行,但是可以使用IDA Pro查看静态反汇编代码。可以看到代码中的花指令基本消失了。
    在这里插入图片描述
  8. 使用ScyllaHide反反调试,将以下文件放入“./Xdbg/ release/x64/plugins/”路径下。
    在这里插入图片描述
  9. 重启x64dbg后动态调试crackme2.exe,打开ScyllaHide Options把“kill反附加”和“禁止创建线程”勾上。
    在这里插入图片描述
  10. 动态运行到0x140349714处,程序会阻塞,等待控制台输入。
    在这里插入图片描述
  11. 输入任意字符串回车,立刻回x64dbg按F7继续调试。(按晚了程序会退出,暂时未找到原因)
    在这里插入图片描述
  12. 按F7调试执行到0x4A3813处,此时rbx地址为0x14FDE0。
    在这里插入图片描述
  13. 在内存窗口中查看rbx指向的数据,一串字符‘4’后面跟着的字符串具有flag特征。
    在这里插入图片描述
  14. 重新运行crackme2.exe,输入第13步中的字符串
    jZiBUViF0WUYwISp4qjx5YwucMNGpb4g
    在这里插入图片描述

五、参考文献

[1] ScyllaHide教程:https://blog.csdn.net/kinghzking/article/details/122070991
[2] 反反调试理论教程:https://bbs.kanxue.com/thread-226455.htm
[3] 反反调试实践教程:https://www.52pojie.cn/thread-1432590-1-1.html
[4] Scylla脱壳实践教程:https://blog.iamli.cc/archives/20

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ninding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值