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文件的编译、运行和反编译相关推荐

  1. Python之pyc文件作用及生成方法

    Python之pyc文件作用及生成方法_宗而研之的博客-CSDN博客 1 什么是pyc 首先了解下python的运行机制及特性:当我们运行python文件程序的时候,Python解释器将源码转换为字节 ...

  2. Python相关的文件扩展名

    与Python相关的文件扩展名实际不止.py..pyc..pyd这三种,但这三种是最常见的,比如以Houdini 16.5.268的Python模块包路径搜索一下有哪些扩展名 与Python相关的只有 ...

  3. 一文让你搞懂 Python 的 pyc 文件

    上一篇文章我们介绍了字节码,当时提到,py 文件在执行的时候会先被编译成 PyCodeObject 对象,并且该对象还会被保存到 pyc 文件中. 但不幸的是,事实并不总是这样,有时当我们运行一个简单 ...

  4. Python的pyc文件

    Python的pyc文件 pyc文件就是由Python文件经过编译后所生成的文件,py文件编译成pyc文件后加载速度更快而且提高了代码的安全性.pyc的内容与python的版本相关,不同版本编译的py ...

  5. python生成pyc文件可以互用吗_Python生成pyc文件

    Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...

  6. 【Android 插件化】DroidPlugin 编译运行 ( DroidPlugin 简介 | 编译 DroidPlugin 官方示例 | 运行 DroidPlugin 官方示例 )

    文章目录 一.DroidPlugin 简介 二.DroidPlugin 编译运行 1.编译 DroidPlugin 官方示例 2.运行 DroidPlugin 官方示例 一.DroidPlugin 简 ...

  7. 【反编译系列】反编译so文件(IDA_Pro)

    概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发.使用NDK开发能够编译c/c ...

  8. 超详细!apk安装包快速反编译,多种反编译及失败的解决方案(包含classes.dex的反编译,新增加快速反编译)

    如要转载,请贴出原地址:https://blog.csdn.net/Nobody_else_/article/details/83996441 众所周知,我们开发所用的手机App安装包都是apk文件, ...

  9. 如何反编译,防止反编译,常见问题总结

    本文对如何反编译,防止反编译,和常遇到的问题做了个总结,并略有修改. 资源来自:http://blog.csdn.net/sunboy_2050/article/details/6727581 htt ...

最新文章

  1. 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
  2. linux下导入、导出mysql数据库命令
  3. spring框架ioc(控制反转)第二讲
  4. Visual Studio中11个强大的调试技巧和方法
  5. Entity Framework 6以Code First方式搭建Sqlite数据库环境
  6. IdentityServer4-MVC+Hybrid实现Claims授权验证(四)
  7. 微信公众帐号开发教程第8篇-文本消息中使用网页超链接
  8. CAD如何直接打印,不出现打印对话框?
  9. 关于记忆的10个惊人事实
  10. 【BX学习之打印机】 惠普5055(无线WiFi小型打印机双面复印扫描一体机)
  11. testNG - 无法访问org.testng.Assert
  12. Delphi Sender对象的使用
  13. Cannot set priority of timelineserver process 23314以及leveldb-timeline-store.ldb does not exist解决
  14. EOS主网上线后imtoken钱包和麦子钱包的操作
  15. 做前端开发拿 30W 年薪很难吗?
  16. 2021-01-15 记一次微信支付订单号重复问题
  17. 推荐一款latex公式OCR识别软件
  18. 华为手机拍照那么厉害,为什么就你拍的不好看?原来是因为这些功能
  19. 太空飞行计划问题 网络流24题(2/24)
  20. 竞品分析5步法教你如何分析竞争对手网站

热门文章

  1. (转)水经注谷歌地图的级别与对应比例尺及分辨率探究
  2. 常见的 ChatGPT 相关错误提示及解决办法
  3. 域名一块钱,你敢用吗?可靠性如何保障?
  4. 社群空间站一键发布微信群精品优质社群的搜索和发布平台
  5. latency延迟分析处理
  6. 【Industry digitization】能源供应商的数字化转型,能源世界正在发生不可逆转的深刻变革
  7. start with connect by prior用法
  8. 微信小程序云开发———云函数
  9. 个人信息规范名称和收集规则参考
  10. 传智播客mysql分页的实现_传智播客 2010-03-07 员工信息的AJAX分页实现