movfuscator 混淆

使用工具来解混淆的效果不是很好 看着还不如不解混淆呢

工具链接 github.com/kirschju/demovfuscator

所以我们还是使用混淆版本的来求解

进去查看字符串 很少 能看到有两个wrong 和 两个 well 我们可以查看一下调用

image

能看到有一个 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的上面 不禁让我膜拜大佬 太厉害了

image

可以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)

image

flag

ALEXCTF{M0Vfusc4t0r_w0rk5_l1ke_m4g1c}