lucky_guy
首先查壳,64位无壳,然后打开
进入patch_me
进入get_flag
f2是空的,而且又给出了case4,5,所以应该是先4对f2赋值,然后5给f2加密
但是考虑到f1和f2拼接,所以f2应该是一串字母之类的。整数和字节数组之间的转化。(这里我是向AI请教了几次)
在计算机编程中,整数和字节数组之间的转换非常常见,其主要目的是将整数数据存储为字节数组或从字节数组中读取整数数据。
这种转换的主要用途之一是网络通信。在网络通信中,数据以二进制形式传输,因此需要将整数转换为字节数组,以便它可以在网络上传输。同样地,从网络中接收到的字节数组需要转换回整数形式,以便它可以在计算机程序中使用。
此外,整数和字节数组之间的转换也在加密和安全领域中发挥着重要的作用。例如,在密码学中,常常需要将整数数据转换为字节数组形式,以便它们可以进行加密或签名。同样地,从加密消息中读取整数数据时,需要将字节数组转换为整数形式,以便它们可以被计算机程序解密或验证签名。
总之,整数和字节数组之间的转换是计算机编程中非常重要的一部分,它们被广泛应用于网络通信、加密、安全和其他许多领域。
然后写一个python代码,来将整数转换为字节数组,需要注意的是,x86、AMD和绝大多数处理器架构都是采用小端序来处理多字节数据类型,因此下面脚本是'little'
# 输入整数
num = int(input("请输入一个整数:"))
# 将整数转换为字节数组
byte_array = num.to_bytes((num.bit_length() + 7) // 8, byteorder='little')
# 将字节数组转化为[]形式,每一位用十六进制表示
byte_array1 = byte_array
hex_list = [hex(byte) for byte in byte_array]
# 输出该十六进制的数组
print(hex_list)
运行后,输入9180147350284624745,结果为:
['0x69', '0x63', '0x75', '0x67', '0x60', '0x6f', '0x66', '0x7f']
然后写脚本出flag
flag = 'GXY{do_not_'
f2 = [0x69,0x63,0x75,0x67,0x60,0x6F,0x66,0x7F]
s = ''
for i in range(8):
if i % 2 == 1:
s = chr(int(f2[i]) - 2)
else:
s = chr(int(f2[i]) - 1)
flag += s
print(flag)
GXY{do_not_hate_me}
JustRE
首先查壳
然后打开一看,哇看不懂
这里看了别人的WP,详细步骤就不写了
然后说一下我学到的东西:
ida进去后先找main函数,没有main就找敏感的字符串(快捷键shift+F12)
交叉引用ctrl+x