python工具
简介
python文件在被import运行的时候会在同目录下编译一个pyc的文件(为了下次快速加载),这个文件可以和py文件一样使用,但无法阅读和修改;python工具支持将pyc文件反编译为py文件(可能会存在部分文件无法反编译)。
支持的python版本:1.0、 1.1、 1.3、 1.4、 1.5、 1.6、 2.0、 2.1、 2.2、 2.3、 2.4、 2.5、 2.6、 2.7、 3.0、 3.1、 3.2、 3.3、 3.4、 3.5、 3.6、 3.7、 3.8、 3.9、 3.10、 3.11、 3.12。
本工具免费使用,限制30分钟内反编译 1次/ip;如有更高的使用频次需求,可以 开通本站会员,开通后限制将变为30秒内反编译 30次/用户。
使用说明
1、选择文件,上传pyc文件。
2、等待反编译结果,如果成功,会在文本框中显示。
3、如果源码中存在中文,会以url编码的形式展示,可以尝试点击 “UTF-8解码” 或者 “GBK解码” 按钮,解码源码中的中文部分。
python字节码
Python 字节码是源代码经过编译后的中间表示形式。编译过程由 Python 解释器内的编译器(CPython)自动完成;字节码通常被存储在 `.pyc` 文件中,这是一种编译过的 Python 文件,可以被 Python 虚拟机(PVM) 直接执行。这种预编译可以提高程序的启动速度。
反编译是将编译后的字节码转换回接近原始 Python 源代码的过程;反编译得到的源代码可能不会完全等同于原始源代码(比如变量名和某些结构),但在逻辑上与原始代码等效。
下面是一些常见的 Python 字节码指令:
- LOAD_CONST - 加载常量到栈上,如数字、字符串、元组等。
- LOAD_FAST - 从局部变量空间中加载一个变量到栈上。
- STORE_FAST - 将栈顶的值存储到局部变量空间中。
- LOAD_GLOBAL - 从全局变量空间中加载一个变量到栈上。
- STORE_GLOBAL - 将栈顶的值存储到全局变量空间中。
- LOAD_ATTR - 加载一个对象的属性。
- STORE_ATTR - 设置一个对象的属性。
- CALL_FUNCTION - 调用一个函数,参数数量由操作数指定。
- MAKE_FUNCTION - 从栈上的代码对象创建一个函数对象。
- BUILD_LIST - 从栈上的元素创建一个列表。
- BUILD_MAP - 创建一个字典。
- BUILD_TUPLE - 从栈上的元素创建一个元组。
- UNPACK_SEQUENCE - 将一个序列(如列表或元组)解包到栈上。
- INPLACE_ADD - 执行就地加法操作,即
a += b
。 - RETURN_VALUE - 从函数返回一个值。
- POP_TOP - 弹出栈顶元素。
- DUP_TOP - 复制栈顶元素。
- ROT_TWO - 交换栈顶的两个元素。
- ROT_THREE - 将栈顶三个元素向上旋转一次。
- COMPARE_OP - 执行比较操作,如等于、不等于、小于等。
- JUMP_FORWARD - 向前跳转到字节码中的另一个地址。
- JUMP_IF_TRUE_OR_POP - 如果栈顶为真则跳转,否则弹出栈顶元素。
- JUMP_IF_FALSE_OR_POP - 如果栈顶为假则跳转,否则弹出栈顶元素。
- POP_JUMP_IF_TRUE - 如果栈顶为真则弹出并跳转。
- POP_JUMP_IF_FALSE - 如果栈顶为假则弹出并跳转。
😉 腾讯云产品特惠热卖,戳我领取!