将文件拖入ida shift+F12查看可疑字符串
看到flag双击跟进 main函数 但是发现main函数不能F5编译 提示401095 于是先找到401095
双击点进函数
发现main函数可以查看伪c代码了
这段代码的核心在于找到一个长度为27个字符的字符串,使得该字符串的每个字符与其索引的异或结果等于byte_41EA08
数组中相应位置的字符。
对于每个字符,程序将其索引(作为无符号8位整数)与用户输入的相应字符进行异或操作,并将结果与byte_41EA08
数组中相应位置的字符进行比较。如果所有字符都满足这个条件(即异或结果与byte_41EA08
中的值相等),则继续执行;否则,跳转到LABEL_6
执行错误处理。
直接编写反脚本
byte_41EA08 = [
0X4D,0X53,0X41,0X57,0X42,0X7E,0X46,0X58,0X5A,0X3A,0X4A,0X3A,0X60,0X74,0X51,0X4A,0X22,0X4E,0X40,0X20,0X62,0X70,0X64,0X64,0X7D,0X38,0X67
]
# 初始化一个空字符串来存储结果
flag = ""
# 遍历索引0到26
for i in range(27):
xor_result = chr(byte_41EA08[i] ^ i) # 将异或结果转换为字符
flag += xor_result # 将结果添加到flag字符串中
print(flag)
得到flag
flag{@_R3@1ly_E2_R3verse!}