[SWPU2019]easyRE.zip

拿到题先运行 然后 根据字符串找到 程序的主函数。

程序是输入后进行了一个 check。

check 函数

发现 check 函数里面 用到了 c++ 的虚表函数。为了找到对应的 函数。我们必须进行动调。

直接 ida 动态调试,发现程序直接关掉了。说明程序存在 反调试。

查看 main 函数的交叉引用。 在上一个函数 下断点看看是哪儿 判断跳出了 程序。

直接把 text 段的 跳转改为jnz 从来实现能够跳转。

然后开始 下断点开始调试。

func1

分析,发现是一个 正则匹配。 异或字符串得到 flag 的输入格式。

str1 = "Ncg`esdvLkLgk$mL=Lgk$mL=Lgk$mL=Lgk$mL=Lgk$mLm"
str2 = ""
for i in range(len(str1)):
    str2 += chr(ord(str1[i])^0x10)
print str2
swpuctf\\{\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\-\\w{4}\\}
swpuctf{1234-1234-1234-1234-1234}

func2