首先查壳 发现没有东西
然后放入ida
发现没有main并且软件混乱
发现这里1144的地方 出错 IDA无法识别数据 报错内容是EBFF 机器码
这里看了wp知道是很常见的花指令 所以我们现在开始去花
这里因为我们需要取出 EBFF 下面的地址也都是 EBFF 所以工作量大 使用IDApython脚本即可
start = 0x1135
end = 0x3100
for i in range(start,end):
if get_wide_byte(i)==0xEB:
if get_wide_byte(i+1) == 0xFF:
patch_byte(i,0x90)
出现了 flag的值
这里也可以使用idapython脚本来获取值
我们发现 值都是出现在 FFC0后 所以我们可以通过识别 C0然后chr输出
start = 0x1135
end = 0x3100
for i in range(start,end):
if get_wide_byte(i)==0xC0:
print(chr(idaapi.get_byte(i+2)),end='')
解释一下 get_wide_byte 是读取这个位置的字节
idaapi.get_byte 可以获取到这个byte 其实这里换位 get_wide_byte也行
这两个的区别是读取的地方不一样 get_wide是从数据库 即 IDA保存的内容
idaapi是从 程序中读取 更加底层