[2020meractf]Shit.zip

先运行程序 然后根据字符串在 ida 中找到对应的位置

输入 大小为 24 位 关键函数check 函数。

调试的坑

(如果是nop掉initterm 函数然后Ida运行程序调试,会有一组数据被修改了从而影响到我们最后的判断)

如果程序秩序直接 ida 动态调试

调试

先在ida中下好断点 打开后程序 attach 上 然后 F9 运行到输入 我们输入 24个字符

然后来到 IsDebuggerPresent() 函数 直接运行 会弹窗

所以 F7 跟进函数

发现 不是 IsDebuggerPresent() 而是进入了 一个 新的函数 里面就有一个 弹窗 所以我们要动态调试修改 标志寄存器,zf 从而绕过判断。

然后进入 check 函数 进入后 发现这个函数并不能正常反编译 且观察代码后发现 存在花指令 对于花指令 我们可以判断出来后直接 patch 掉,但是我们动态调试可以先不管。

首先 判断长度为 24

将我们的输入 4 个字符的 ascii 码为一组保存在寄存器中