Python逆向

Python逆向

十月 30, 2019

对于针对的python的逆向主要有三种情况

exe

windows编程最终结果一般都是要生成exe可执行文件,通过python编程所生成的exe与通过c/c++编程生成的exe虽然同为exe,但若都使用ODIDA pro的方式来进行逆向的话,很明显python所生成的exe文件会为逆向工作造成极大的困扰。但是,python有专门逆向python生成exe文件的库

pyinstaller

第一种库是pyinstaller这是一个可以将python脚本打包成exe的库,能打包自然也能解包

它包含了一个archive_viewer.py的文件可以对打包为exe文件的python程序解包。

实例

写一个脚本hello.py

1
print 'hello,world'

通过pyinstaller将其打包为exe,下面的命令会在hello.py的目录下生成一个dist文件夹

1
python pyinstaller --onefile --nowindowed hello.py

然后对其进行解包操作

1
python path/archive_viewer.py path/dist/hello.exe

path分别为各个文件自己的路径

一般会反编译出很多模块,根据各个模块的名字来找目标模块,用x name提取

pyinstxtractor

第二种并非库,而是大佬写的一个反编译脚本,直接将脚本下载至所要反编译的exe文件目录下。

cmd运行

1
python pyinstxtractor.py xxx.exe

即可生成拆解目录xxx.exe_extracted,在其中寻找目标文件xxx

结果

该反编译仅将exe反编译为pyc文件,且pyc文件的前8个字节是被删除的,需要用如winhex这样的文件手动添加文件头。这8个字节前四个是python编译时的版本,python2.7为03 f3 0d 0a,python3.4为ee 0c 0d 0a,其余版本的python对应的文件头自行查询;后四个字节是编译时的时间戳,随便写。

pyc

拥有pyc文件后,有三种方式反编译py文件:在线工具、python库、easy python decompiler

这里只说python库uncompyle

uncompyle

可以直接用pip安装

使用:

1
uncompyle6.exe xxx.pyc > xxx.py

用以上命令即可拿到最终的py脚本

py

py脚本都拿到了,还要我说啥,代码审计去吧

隐藏