目录
[ 工具附件](# 工具附件)
[ 提取.pyc文件](# 提取.pyc文件)
工具附件
DIE查壳工具 根据自己电脑选择win64位
编辑
链接:python逆向附件 提取码:1013
.py文件和.pyc文件
首先,我们来认识一下.py文件和.pyc文件 .py文件是python的源代码文件,也就是你写的源代码存放的地方。机器是无法直接读懂你写的源代码的,于是当你运行一个 Python 程序时,Python 解释器会将源代码编译成一种称为字节码的中间形式,然后将字节码存储在.pyc文件里面,当你下次再运行同样的程序时,机器会直接找到之前生成的.pyc文件进行加载。 .pyc文件,是源代码经过编译后的一种中间表示形式。它无法双击直接运行,并且需要依赖特定的python环境(一个版本的python生成的pyc文件可能其他版本不能使用)所以它并不是可执行文件。它的存在仅仅是为了加快程序执行效率,避免重复编译。 这样就引来了一个问题——它不能像C一样自动生成一个可执行文件,如若要使用,则必须下载python环境并运行源代码,这样做非常依赖环境。 于是python提供了PyInstaller这个库,它可以将.py文件转为.exe文件,这样产生的.exe文件在没有Python环境时也可以直接使用。 一般的.py转成的.exe文件长这样:
编辑
我们可以用DIE打开看到为python语言写的
编辑
提取.pyc文件
第一步,将.exe转化成.pyc文件 使用工具pyinstxtractor.py提取.pyc文件 使用方法:在该pyinstxtractor.py文件所在目录打开终端,输入
|
|
这条指令的意思是用python解释器运行pyinstxtractor.py脚本,并把这个.exe文件作为参数传入。 输入完成后文件目录下会出现一个文件名_extracted文件夹
编辑
打开这个文件夹,找到里面与.exe文件同名的.pyc文件
编辑
pycdc反编译
上一步得到.pyc文件后,我们需要使用工具来查看源代码。 这里有两种方法,第一种是用pycdc反编译:将.pyc文件与pycdc放于同一个目录,打开终端,输入
|
|
这个指令就是把文件当参数传入,然后运行pycdc.exe,它就会把字节码反编译为源码。 但这个工具有时候不能反编译出所有的代码,这时我们就要用到另一种工具:pycdas
pycdas查看字节码
当pycdc反编译不完全时,就需要使用pycdas。 .pyc文件是二进制文件,无法直接打开查看内容,而pycdas则可以帮助我们查看.pyc文件里面的字节码。 使用方法与pycdc相同:将.pyc文件与pycdas放于同一目录,然后打开终端,输入
|
|
相应工具以上传至文章顶部
举个例子
将题目附件拖进DIE查壳,可发现为python可执行文件
编辑
在pyinstxtractor.py文件所在目录打开终端,输入
|
|
提取.pyc文件,出现以下界面
编辑
在文件目录下出现test.exe_extracted文件夹
编辑
在这个文件夹里面找到与.exe文件同名的.pyc文件
编辑
将改.pyc文件与pycdc放于同一个目录,打开终端,输入
|
|
可以看到python源码
编辑
易知为base64解密,可以写脚本,也可以用工具
编辑
得到flag{Reverse_python}
备注例题也以上传