解题思路
将easyre.exe查壳,发现UPX壳。
用UPX , upx -d 文件名
之后再查看
拖入IDA(32),找到main函数,反编译。
代码分析
关键代码21行到25行,可以看出flag长度为12位,v4[i]!= data_start_[*((char *)v5 + i) - 1]的意思是在_data_start__字符串里面寻找一个字符然后 -1 与v4进行对比是否相等
所以 提取v4和data_start_的值进行比较,得到的下标+1就是flag。(提取data_start_时不要忘了7Eh)
脚本(python)
用c 没编出来 -_-
v4 = [42,70,39,34,78,44,34,40,73,63,43,64]
flag = ''
__data_start__ = '~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(\'&%$# !"'
for i in v4:
flag=flag+chr(__data_start__.find(chr(i))+1)
print(flag)
flag
flag{U9X_1S_W6@T?}
纯萌新求带!!!