EasiertRe原文件.zip

[SWPU2019]EasiestRe.zip

IDA 分析,根据字符串搜索找到对应的地址。

发现有一个 _debugbreak 函数 防调试,因为动态调试端点会用道 int 3 0xcc 如果动态调试 我们就不能在这些地方 填写 自己需要的 代码了。程序就不能正常使用。

汇编代码发现 全被 nop 掉了 利用 交叉引用 找到。

根据 0x80000003 找到对应的 要写入的地方 也就是_debugbreak 的地址

更具 lpBaseAddress 一次写入 7 次 和30 次 对应的 字符。填充代码,所以我们可以 patch 这几个方向 利于分析

脚本一

arr1 = [0x90, 0x83, 0x7D, 0xF8, 0x18, 0x7D, 0x11]
addr1 = 0x408AF8
for i in range(7):
    PatchByte(addr1 + i, arr1[i]) 

Patch 后的伪代码。

发现在Encrypt 函数中 func1 也有一个 __debugbreak() 函数

长度为 30 利用之前的 buf 填充这30 个。