介绍公司以前的一个exe包,我们需要查看里面python源码,但是以前的py源码文件找不到,所以只能反编译,介绍一下反编译的过程。
首先准备:
pyinstxtractor.py这个文件,网上很多,自己下载
准备查看二进制的工具Sublime
准备将pyc文件反编译为py文件的uncompyle6
接下来正式开始:
将pyinstxtractor.py和exe文件放到一个文件夹下,cmd进入
执行命令:pyinstxtractor.py preprocess.exe

解析的文件都放在preprocess.exe_wxtracted里面,在里面找到preprocess.pyc文件和struct.pyc文件


用sumline打开这俩个文件:


复制struct.pyc的第一行二进制到preprocess.pyc里面,保存

接下来安装uncompyle6:
执行命令:pip install uncompyle6
安装成功之后,cmd到preprocess.pyc的目录下
执行命令:F:bianyi>uncompyle6 preprocess.pyc > preprocess.py
小错误记录一下:
原因是:复制struct.pyc的第一行二进制到preprocess.pyc里面,没保存
小错误记录:
原因是:preprocess.pyc的第一行需要删除掉
删除第一行preprocess.pyc二级制
610d 0d0a 0000 0000 0000 0000 e300 0000
然后把struct.pyc第一行代码粘贴进去
170d 0d0a 089a 775a 0101 0000 e300 0000
再次执行:生成了preprocess.py文件

但是发现一个问题,依赖库文件是空的,没办法编译,还是拿不到python的源代码
介绍pyc:来自网上
.pyc文件 就是 Python的字节码(byte-compiled)文件。.py文件运行时,python会自动将其编译成PyCodeObject并写入.pyc文件,再有python虚拟机来执行PyCodeObject
当 一个模块 被 import 时,或者 .py文件(非top level script)被修改后,则会自动生成.pyc文件,目的是为了加快下次的运行速度。
.pyc文件不会被建立的一个原因,就是没有当前.py文件目录的权限。
python3 会生成一个 pycache 目录,里面就包含pyc文件,一般的命名方式是:文件名.cpython-37.pyc,其中cpython-37是python版本号。
2.1 pyc什么时候会重新生成
• 在生成.pyc文件的同时,会写入了一个Long型的变量,用于记录最近修改的时间。 • 每次载入之前都先检查一下.py文件和.pyc文件的最后修改日期,如果一直,则会读取.pyc文件,否则会读取.py文件
方法一 参数形式
方法二 导入模块
方法三 编译所有的.py文件
方法一 -B 参数
使用 -B 参数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/147489.html