Python逆向入门
目录
工具附件
.py文件和.pyc文件
提取.pyc文件
pycdc反编译
pycdas查看字节码
举个例子
工具附件
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 [文件完整路径]
这条指令的意思是用python解释器运行pyinstxtractor.py脚本,并把这个.exe文件作为参数传入。
输入完成后文件目录下会出现一个文件名_extracted文件夹
打开这个文件夹,找到里面与.exe文件同名的.pyc文件
pycdc反编译
上一步得到.pyc文件后,我们需要使用工具来查看源代码。
这里有两种方法,第一种是用pycdc反编译:将.pyc文件与pycdc放于同一个目录,打开终端,输入
pycdas(.exe) [文件名] #括号内的部分可省略
这个指令就是把文件当参数传入,然后运行pycdc.exe,它就会把字节码反编译为源码。
但这个工具有时候不能反编译出所有的代码,这时我们就要用到另一种工具:pycdas
pycdas查看字节码
当pycdc反编译不完全时,就需要使用pycdas。
.pyc文件是二进制文件,无法直接打开查看内容,而pycdas则可以帮助我们查看.pyc文件里面的字节码。
使用方法与pycdc相同:将.pyc文件与pycdas放于同一目录,然后打开终端,输入
pycdas(.exe) [文件名] #括号内的部分可省略
相应工具以上传至文章顶部
举个例子
将题目附件拖进DIE查壳,可发现为python可执行文件
在pyinstxtractor.py文件所在目录打开终端,输入
python pyinstxtractor.py [文件完整路径]
提取.pyc文件,出现以下界面
在文件目录下出现test.exe_extracted文件夹
在这个文件夹里面找到与.exe文件同名的.pyc文件
将改.pyc文件与pycdc放于同一个目录,打开终端,输入
pycdc test.exe
可以看到python源码
易知为base64解密,可以写脚本,也可以用工具
得到flag{Reverse_python}
备注例题也以上传
作者:刘婳卿