CCF2016-reverse2

CCF2016 软件破解2

分析

此处代码段有无法解析的指令

程序在输入密码后,用输入的密码作为argv[1],以原程序的path作为argv[0]开启了新的子线程

此处向子线程写入了一些数据

观察其参数,写入子线程的目标目标地址为

直接手动patch

反编译后观察加密

wlcome to CFF te异或后加1

结果与之比对

Decode

1
2
3
4
5
6
7
8
9
10
11
12
xor_str="elcome to CFF te"
aim_str = "\x25\x5c\x5c\x2b\x2f\x5d\x19\x36\x2c\x64\x72\x76\x80\x66\x4e\x52"
flag = ""
print len(xor_str),len(aim_str)
for x in range(0,len(xor_str)):
flag += chr(ord(xor_str[x]) ^ ord(aim_str[x]) - 1)
print flag