是动调结果没动调
点进authenticate 函数
unk_8048B44 函数里面有成功。
读取s,dword_8048A90函数的地址
shirt+f2 使用pythonida读取数值
点进decrypt函数分析加密方式,得出答案
- 遍历
dest
数组的每个元素,按顺序减去a2
数组中的每个元素,直到a2
的所有元素都被用来处理dest
中的一个元素。 - 当处理完一个元素后,继续处理下一个元素,直到遍历完所有元素。
、
import idaapi
addr = 0x08048AA8
arr = []
for i in range(39):
# 使用 idaapi.get_dword 函数读取 32 位数据
value = idaapi.get_dword(addr + 4 * i)
arr.append(value)
print(arr)
[5178, 5174, 5175, 5179, 5248, 5242, 5233, 5240, 5219, 5222, 5235, 5223, 5218, 5221, 5235, 5216, 5227, 5233, 5240, 5226, 5235, 5232, 5220, 5240, 5230, 5232, 5232, 5220, 5232, 5220, 5230, 5243, 5238, 5240, 5226, 5235, 5243, 5248, 0]
import idaapi
addr = 0x08048A90
arr = []
for i in range(6):
# 使用 idaapi.get_dword 函数读取 32 位数据
value = idaapi.get_dword(addr + 4 * i)
arr.append(value)
print(arr)
[5121, 5122, 5123, 5124, 5125, 0]
# 示例数据
s = [5178, 5174, 5175, 5179, 5248, 5242, 5233, 5240, 5219, 5222,
5235, 5223, 5218, 5221, 5235, 5216, 5227, 5233, 5240, 5226,
5235, 5232, 5220, 5240, 5230, 5232, 5232, 5220, 5232, 5220,
5230, 5243, 5238, 5240, 5226, 5235, 5243, 5248, 0]
a2 = [5121, 5122, 5123, 5124, 5125]
# 计算长度
v6 = len(s)
v7 = len(a2)
# 复制 s 到 dest
dest = s.copy()
# 执行减法操作
i = 0
while i < v6:
for j in range(v7):
if i >= v6: # 防止超出 dest 的索引
break
dest[i] -= a2[j] # 从 dest[i] 减去 a2[j]
i += 1
# 打印结果
print(" ".join(chr(x) for x in dest if 0 <= x < 128), end="")
9 4 4 7 { y o u _ a r e _ a n _ i n t e r n a t i o n a l _ m y s t e r y }