python相关pyc文件的编译、运行和反编译
0x01. 什么是pyc文件
最近做ctf习题,发现经常会给一下pyc文件,pyc文件是py文件编译后生成的字节码文件(byte code)。pyc文件经过python解释器最终会生成机器码运行。所以pyc文件是可以跨平台部署的,类似Java的.class文件。学过java的都知道,它其实是中间过程,为了就是不变动代码的情况下,机器将会更快的执行代码,不用编译,直接去找字节码加载就行。一般py文件改变后,都会重新生成pyc文件。生成pyc文件主要是不想把源代码暴露出来。
0x02. 如何生成pyc文件
此处参考博客:https://www.cnblogs.com/TTyb/p/6741848.html
对于py文件,可以执行下面命令来生成pyc文件。
python -m foo.py
也可以通过代码生成
import py_compile
py_compile.compile('./unit.py')
也可以通过代码批量生成
import compileall
compileall.compile_dir(r'/path')
最终生成的pyc文件在__pycache__文件夹下,如图:
0x03. 如何运行pyc文件
一条命令如下:
python test.pyc
或者在win环境下直接双击,即可运行。
0x04. 如何反编译pyc文件
需要用到uncompyle包,需要安装命令:
pip install uncompyle
安装完成后,使用命令对pyc进行反编译,如下:
uncompyle6 unit.cpython-38.pyc > test1.py
在对应文件夹下,可以找到test1.py文件
python相关pyc文件的编译、运行和反编译相关推荐
- Python之pyc文件作用及生成方法
Python之pyc文件作用及生成方法_宗而研之的博客-CSDN博客 1 什么是pyc 首先了解下python的运行机制及特性:当我们运行python文件程序的时候,Python解释器将源码转换为字节 ...
- Python相关的文件扩展名
与Python相关的文件扩展名实际不止.py..pyc..pyd这三种,但这三种是最常见的,比如以Houdini 16.5.268的Python模块包路径搜索一下有哪些扩展名 与Python相关的只有 ...
- 一文让你搞懂 Python 的 pyc 文件
上一篇文章我们介绍了字节码,当时提到,py 文件在执行的时候会先被编译成 PyCodeObject 对象,并且该对象还会被保存到 pyc 文件中. 但不幸的是,事实并不总是这样,有时当我们运行一个简单 ...
- Python的pyc文件
Python的pyc文件 pyc文件就是由Python文件经过编译后所生成的文件,py文件编译成pyc文件后加载速度更快而且提高了代码的安全性.pyc的内容与python的版本相关,不同版本编译的py ...
- python生成pyc文件可以互用吗_Python生成pyc文件
Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...
- 【Android 插件化】DroidPlugin 编译运行 ( DroidPlugin 简介 | 编译 DroidPlugin 官方示例 | 运行 DroidPlugin 官方示例 )
文章目录 一.DroidPlugin 简介 二.DroidPlugin 编译运行 1.编译 DroidPlugin 官方示例 2.运行 DroidPlugin 官方示例 一.DroidPlugin 简 ...
- 【反编译系列】反编译so文件(IDA_Pro)
概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发.使用NDK开发能够编译c/c ...
- 超详细!apk安装包快速反编译,多种反编译及失败的解决方案(包含classes.dex的反编译,新增加快速反编译)
如要转载,请贴出原地址:https://blog.csdn.net/Nobody_else_/article/details/83996441 众所周知,我们开发所用的手机App安装包都是apk文件, ...
- 如何反编译,防止反编译,常见问题总结
本文对如何反编译,防止反编译,和常遇到的问题做了个总结,并略有修改. 资源来自:http://blog.csdn.net/sunboy_2050/article/details/6727581 htt ...
最新文章
- 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
- linux下导入、导出mysql数据库命令
- spring框架ioc(控制反转)第二讲
- Visual Studio中11个强大的调试技巧和方法
- Entity Framework 6以Code First方式搭建Sqlite数据库环境
- IdentityServer4-MVC+Hybrid实现Claims授权验证(四)
- 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
- CAD如何直接打印,不出现打印对话框?
- 关于记忆的10个惊人事实
- 【BX学习之打印机】 惠普5055(无线WiFi小型打印机双面复印扫描一体机)
- testNG - 无法访问org.testng.Assert
- Delphi Sender对象的使用
- Cannot set priority of timelineserver process 23314以及leveldb-timeline-store.ldb does not exist解决
- EOS主网上线后imtoken钱包和麦子钱包的操作
- 做前端开发拿 30W 年薪很难吗?
- 2021-01-15 记一次微信支付订单号重复问题
- 推荐一款latex公式OCR识别软件
- 华为手机拍照那么厉害,为什么就你拍的不好看?原来是因为这些功能
- 太空飞行计划问题 网络流24题(2/24)
- 竞品分析5步法教你如何分析竞争对手网站