DASCTF八月-RE

py

题目py,第一感觉就是pyc反汇编,但是题目给了一个exe文件,ida打开里面找到pyinstall,百度找了一下是pyinstxtractor解包,GitHub下载文件https://github.com/extremecoders-re/pyinstxtractor

1
python pyinstxtractor.py py.exe

解出来一个包,uncompyle6反编译py.pyc文件,反汇编出来的py文件里面没有东西,找了一下发现是pyc的文件头出来问题,作者的python版本如果和你一样那么就可以顺利的反汇编,如果不一样,写入的头文件magic就会有问题

1
2
3
4
5
6
7
8
9
10
11
Python  MAGIC           Python  MAGIC           Python  MAGIC
1.0 0x00999902 2.0 0x0A0DC687 3.0 0x0A0D0C3A
1.1 0x00999903 2.1 0x0A0DEB2A 3.1 0x0A0D0C4E
1.2 0x00999903 2.2 0x0A0DED2D 3.2 0x0A0D0C6C
1.3 0x0A0D2E89 2.3 0x0A0DF23B 3.3 0x0A0D0C9E
1.4 0x0A0D1704 2.4 0x0A0DF26D 3.4 0x0A0D0CEE
1.5 0x0A0D4E99 2.5 0x0A0DF2B3 3.5 0x0A0D0D16
1.6 0x0A0DC4FC 2.6 0x0A0DF2D1 3.5.3 0x0A0D0D17
2.7 0x0A0DF303 3.6 0x0A0D0D33
3.7 0x0A0D0D42
3.8 0x0A0D0D55

https://blog.csdn.net/qfcy_/article/details/113245876

这篇的作者通过添加一个新的xdis包修改magic

3

2

修改前后

可以之后打开py文件

1

就是一个异或

exp:

1
2
3
m='ek`fz13b3c5e047b`bd`0/c268e600e7c5d1`|'
for i in range(len(m)):
print(chr((ord(m[i])-31)^32),end='')