GFSJ0447-【re5-packed-movement】
movfuscator 混淆
使用工具来解混淆的效果不是很好 看着还不如不解混淆呢
工具链接 github.com/kirschju/demovfuscator
所以我们还是使用混淆版本的来求解
进去查看字符串 很少 能看到有两个wrong 和 两个 well 我们可以查看一下调用
能看到有一个 wrong 是有很多调用的 那么movfuscator 混淆 是将全部都转成mov 那也就意味着 for while 这一类的循环也是被很多的mov来转义了 那这个很多的wrong 是不是很像 这类的比较
u_i = input
flag = [xxxxxxxxxxxx]
for i in range(len(u_i)):
if u_i[i] != flag[i]:
print('wrong')
exit()
所以我们能看到 如此类的赋值 在wrong的上面 不禁让我膜拜大佬 太厉害了
可以ALT+B 来找这样的指令 但是这样效率很慢 所以我们使用ida脚本 ()
import ida_bytes
start = 0x8048000
end = 0x8061000
charset = b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ{}_@!#&*"
flag = ""
for ea in range(start, end):
c = ida_bytes.get_wide_byte(ea)
if c in charset and ida_bytes.get_wide_dword(ea) == c:
flag += chr(c)
print(flag)
flag
ALEXCTF{M0Vfusc4t0r_w0rk5_l1ke_m4g1c}
评论