登录 |  注册 |  繁體中文


python代码反编译

分类: python 颜色:橙色 默认  字号: 阅读(491) | 评论(0)

1、提取文件

首先需要准备pyinstxtractor.py ,下载地址:https://github.com/extremecoders-re/pyinstxtractor

然后把下载的文件复制到需要反编译的文件夹中,在命令行输入python pyinstxtractor.py (要编译的文件名)

这时候会得到一个后缀为_extracted的文件夹,这里面就是需要的文件。
打开之后发现里面都是pyc文件格式的,这时候我们就需要把pyc格式的文件转换为py格式的文件。

2、转换格式 (pyc转py文件)

我们需要安装uncompyle6,是一个python库,pip install uncompyle6

安装完成后,这在当前目录下使用cmd命令行 输入 uncompyle6 当前文件名.pyc > 转换完成保存的文件名.py

这时候文件夹中就会有文件了,这时候就可以看到代码的原始样貌了。
但是这只是一个文件,如果是大项目的话,可能会有很多依赖包,包括一些自己写的函数。

3、寻找依赖包

相关依赖包都在PYZ-00.pyz文件里面。

这时候我们需要使用到 pyi-archive_viewer
这个文件在(python环境)Scripts里,是需要安装pyinstaller的,没有安装的需要安装一下(已经安装的跳过安装)pip install pyinstaller

安装完成后在将(python环境)Scripts添加到环境变量path里面,这样就可以直接在命令行使用了。
使用命令 pyi-archive_viewer PYZ-00.pyz然后就会进入到

然后找到自己想要编译的文件名,在?后输入x 文件名 ,然后回在下一步输入保存的文件名,后缀这里就先写上.pyc,回车之后返回文件夹就会看到相应的文件。

4、转换格式时,如果报错

在pyc转py文件时,如果你报错了,则需要修改pyc的文件头

这种错误就是需要修改文件头,因为在压缩和解压的时候会存在文件头的丢失。

  • 因为pyc文件都是16进制,所以我们需要一些工具打开进行观察,我使用的是UltraEdit

这时候我们选择打开struct.pyc(其他的也可以,主要是用来比较,从而找到正确的文件头)

  • 通过对比发现前11个字节是不一样的,这时候我们就把struct.pyc的前11字节替换需要编译的文件开头。(如果复制后发现后面两个字节是变化的,不用管,那是代表时间的。)
  • 这时候会有个问题,有些文件的开头是从e3开始的,这时候就直接把前11字节复制到文件头就可以了。

 

在线反编译: https://www.lddgo.net/en/string/pyc-compile-decompile



上一篇:hi   下一篇:修改MySQL数据库名

姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部