Python
没有严格意义上的编译和汇编过程。一般可以认为编写好的
python
源
文件
,由
python
解释器翻译成以.
pyc
为结尾的字节码
文件
。
pyc
文件
是二进制
文件
,可以由
python
虚拟机直接运行。注:有的朋友可能会问,为什么我运行
python
,有时候生成
pyc
文件
,有时候没有呢?
Python
在执行import语句时,将会到已设定的path中寻找对应的模块。并且把对应的模块编译成相应的
PyC
odeObject(
python
中的一个类)中间结果,然后创建
pyc
文件
,并将中间结果写入该
文件
。
pyc
dc功能要更强大一点,目前支持到
python3
.11且还在更新,不过实测下来,uncompyle6和decompyle3可以反编译汉字,
pyc
dc反编译后汉字会成乱码,建议两种工具结合使用,另外
python
2.7还可以参考((5)然后可以在build/debug下找到
pyc
das.exe和
pyc
dc.exe,
pyc
das是反汇编工具,这里使用
pyc
dc就好。(1)建议将gcc升级到最新版本,centos系统建议
手
动安装gcc,yum install的gcc版本太低,参考(
0x01 , 现在用
python
的人也多了起来,代码安全始终是我们要考虑的问题,比如说我们要将我们的成果发布出去,py直接发布肯定是不行的(除非你是开源的),那么我们就只能考虑发布
pyc
文件
了,
0x02,今天讨论的就是怎么反编译
pyc
到源代码的技术,从道理上来讲,这个是完全没问题的,而且反编译出来的代码质量应该相当高才对(参考java class的原理),在百度里面搜索的话,信息量...
说明: 我是一个
python
初学者,希望能够得到各位前辈的指导,大家一起交流。mail:sislcb at 126 dot com什么是
pyc
文件
pyc
是一种二进制
文件
,是由py
文件
经过编译后,生成的
文件
,是一种byte code,py
文件
变成
pyc
文件
后,加载的速度有所提高,而且
pyc
是一种跨平台的字节码,是由
python
的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。
1. 过程概述
Python
先把代码(.py
文件
)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。2. 字节码字节码在
Python
虚拟机程序里对应的是
PyC
odeObject对象。.
pyc
文件
是字节码在磁盘上的表现形式。3.
pyc
文件
PyC
odeObject对象的创建时机是模块加载的时候,即import。
Python
test.py会对test.py进行编译成...
我们常常看到, 自己用PyInstaller等库打包的exe被别人反编译。而源代码在exe
文件
中是以字节码形式存储的。掌握了字节码的加密技巧, 就可以防止源代码的反编译。
Python
中的字节码(bytecode) 是一种数据类型。类似Java的虚拟机,
Python
代码可以编译成bytecode对象。bytecode对象可以由
Python
加载后直接运行。
字节码可以用zlib等库压缩。加壳字节码有2种方法, 修改字节码的指令, 和修改、混淆变量名。
在本篇文章当中主要给大家介绍了
python
文件
被编译之后的结果
文件
.
pyc
文件
结构
,在
pyc
文件
当中一个最重要的
结构
就是 code object 对象,在本篇文章当中主要是简单介绍了 code object 各个字段的作用。在后续的文章当中将会举详细的例子进行说明,正确理解这些这些字段的含义,对于我们理解
python
虚拟机大有裨益。
反编译出错,百度后了解到是
文件
头
有问题,可以自行编译一个
pyc
文件
,按照该正常
文件
头
修改所给
文件
头
即可。根据
文件
名得到编译环境为
python3
.6,所以执行下面的代码也应在
python3
.6下。
pyc
文件
头
占
文件
最开始的16字节,所以只需修改第一行即可。拿到的是一个
pyc
文件
,反编译回py
文件
即可查看源码。根据反编译得到的源码写出逆向代码。修改完毕后再次反编译,得到源码。
long length() 返回
文件
的字节数
String getName() 返回对象
文件
或目录的名称
String getPath() 返回对象表示的
文件
的相对路径名
String getAbsolutePath() 返回此对