re-packed-movement

Step1:拿到这个题,首先看一下exeinfope.exe,发现有UPX壳,使用工具脱壳。

Step2:脱壳直接放IDA,有问题(不能转伪代码),使用字符串查找(Shift+F12)找到主函数之后,发现全是这样的:

有点慌,在这时候就看了WP。

Step3-wp1:可以在https://github.com/kirschju/demovfuscator上直接反混淆得到flag。(配环境配到一半显示内存不够,心态炸裂)

Step4-wp2&3:也可以观察这个IDA汇编指令中有这样的情况。

那么,利用搜索字符串(Alt+B)的方法与脚本方法均可解决。

wp2。看mov R2, XX 对应的16进制码,如下:

之后,直接 Alt+B 搜索 c7 05 68 20 06 08,得到:

wp3。用脚本。(wp脚本有点垃,自己写了一个)

1
2
3
4
5
6
7
8
9
10
11
12
13
from idc_bc695 import *
start = 0x080487C4
end = 0x8060B32

flag = ""
while start < end:
if Byte(start) == 0xc7 and Byte(start + 1) == 0x05 and Byte(start + 2) == 0x68 and Byte(start + 3) == 0x20 and Byte(start + 4) == 0x06 and Byte(start + 5) == 0x08:
print(chr(Byte(start + 6)))
flag += chr(Byte(start + 6))
start += 7
else:
start += 1
print(flag)

Step5:最后,flag为

1
ALEXCTF{M0Vfusc4t0r_w0rk5_l1ke_m4g1c}

知识点1:

就是用mov混淆,使得程序的指令全是Mov。

留言

2022-10-31

© 2024 wd-z711

⬆︎TOP