Python_Rev

目录

[ 工具附件](# 工具附件)

.py文件和.pyc文件

[ 提取.pyc文件](# 提取.pyc文件)

pycdc反编译

pycdas查看字节码

举个例子


工具附件

DIE查壳工具 根据自己电脑选择win64位

img点击并拖拽以移动编辑

链接: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文件长这样:

img点击并拖拽以移动编辑

我们可以用DIE打开看到为python语言写的

img点击并拖拽以移动编辑

提取.pyc文件

​ 第一步,将.exe转化成.pyc文件 ​ 使用工具pyinstxtractor.py提取.pyc文件 ​ 使用方法:在该pyinstxtractor.py文件所在目录打开终端,输入

1
python pyinstxtractor.py [文件完整路径]

点击并拖拽以移动

​ 这条指令的意思是用python解释器运行pyinstxtractor.py脚本,并把这个.exe文件作为参数传入。 ​ 输入完成后文件目录下会出现一个文件名_extracted文件夹

img点击并拖拽以移动编辑

​ 打开这个文件夹,找到里面与.exe文件同名的.pyc文件

img点击并拖拽以移动编辑

pycdc反编译

​ 上一步得到.pyc文件后,我们需要使用工具来查看源代码。 ​ 这里有两种方法,第一种是用pycdc反编译:将.pyc文件与pycdc放于同一个目录,打开终端,输入

1
pycdas(.exe) [文件名] #括号内的部分可省略

点击并拖拽以移动

​ 这个指令就是把文件当参数传入,然后运行pycdc.exe,它就会把字节码反编译为源码。 ​ 但这个工具有时候不能反编译出所有的代码,这时我们就要用到另一种工具:pycdas

pycdas查看字节码

​ 当pycdc反编译不完全时,就需要使用pycdas。 ​ .pyc文件是二进制文件,无法直接打开查看内容,而pycdas则可以帮助我们查看.pyc文件里面的字节码。 ​ 使用方法与pycdc相同:将.pyc文件与pycdas放于同一目录,然后打开终端,输入

1
pycdas(.exe) [文件名] #括号内的部分可省略

点击并拖拽以移动

​ 相应工具以上传至文章顶部

举个例子

将题目附件拖进DIE查壳,可发现为python可执行文件

img点击并拖拽以移动编辑

在pyinstxtractor.py文件所在目录打开终端,输入

1
python pyinstxtractor.py [文件完整路径]

点击并拖拽以移动

提取.pyc文件,出现以下界面

img点击并拖拽以移动编辑

在文件目录下出现test.exe_extracted文件夹

img点击并拖拽以移动编辑

在这个文件夹里面找到与.exe文件同名的.pyc文件

img点击并拖拽以移动编辑

将改.pyc文件与pycdc放于同一个目录,打开终端,输入

1
pycdc test.exe

点击并拖拽以移动

可以看到python源码

img点击并拖拽以移动编辑

易知为base64解密,可以写脚本,也可以用工具

img点击并拖拽以移动编辑

得到flag{Reverse_python}

备注例题也以上传


Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
人生若只如初见
使用 Hugo 构建
主题 StackJimmy 设计