由WKCTF引发的项目——ReDbg
项目地址
WKCTF的痛
当时我正在做WKCTF,其中quite_easy这道题,我简单的分析了一下,发现其TlsCallback_0_0函数中对调试器进行了检测同时strcmp下了hook
下图是我修了花指令之后的代码
调试器检测:
HOOK:
这题其实加密并不难,他是用了STL,当时脑抽并没有想到用BinDiff的方法来做
部分加密代码:
其中不难发现,这个函数其实是单字节加密的,也就是可以单字节爆破
动机
我当时就想用frida来搞,但是我不太会,越写血压越高,所以我就在想,搞个这种轻量化的、支持编程的调试器。
过程
我当时本来想图方便用python来写,结果聪明反被聪明误,python这边反而资料较少,我只找到了GitHub上有一个书配套的代码,不过由于年代问题,那个有很多问题。
Python写这种贴近底层的确实感觉不太好,我当时写的时候,一边查微软文档,一边开着C++比对,一边开ApiMonitor来看调用情况。不过最后写出来了,不过感觉稳定性一般。
为什么会选择用Python写呢,是因为前一阵子小学期一直在拿Python写东西,同时还因为前一段时间改项目上的东西也都是Python的,所以一直坐轮椅一直爽嘛。
在难受过后,我觉得还得是C++,于是我就用C++又写了一个,果然C++就是妙,又快又稳。不过这有一段时间没写C++感觉手感一般了,这也算是回回手吧。
所以提供了Python和C++两种接口
Python这边应该是暂时只能调试32位程序(必须使用64位Python)
C++ 32位 64位都可
结果
我使用如下代码来求解flag,并在1分钟内得到了答案
1 |
|
- 标题: 由WKCTF引发的项目——ReDbg
- 作者: moshui
- 创建于 : 2024-07-25 19:08:36
- 更新于 : 2024-07-26 00:38:33
- 链接: https://www.moshui.eu.org/2024/07/25/ReDbg/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论