目录

  工具附件

.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}

备注例题也以上传


作者:刘婳卿

物联沃分享整理
物联沃-IOTWORD物联网 » Python逆向入门

发表回复