首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python字节码介绍

访问和理解Python字节码 如果你也想玩玩这个,Python标准库中的dis模块就非常有用了; dis模块为Python字节码提供了一个“反汇编程序”,从而可以轻松获取人为可读的版本并查找各种字节码指令...dis模块的文档涵盖了相关内容,并提供了字节码指令以及它们的作用和参数的完整清单。 例如,要获取之前hello()函数的字节码列表,我将它键入Python解释器中,然后运行: ?...“原始”字节码 - 不具有可读性字节码 - 可以通过代码对象的co_code的属性来访问。如果您想尝试手动反汇编函数,则可以使用列表dis.opname从十进制字节值中查找相应字节码指令的名称。...A Python Interpreter Written in Python 由Allison Kapturt编写, 在Python中构建Python字节码解释器的教程,它完整实现了运行Python字节码的虚拟机...最后,CPython解释器是开源的,您可以在GitHub上查看。字节码解释器的实现位于文件Python/ceval.c中。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单入门python字节码混淆

    python中有一个反编译的字节码到助记符的库,叫dis,这个库的功能就和Windows中静态分析二进制的工具很像,把二进制文件转成汇编代码。...在dis库的帮助文档(https://docs.python.org/2/library/dis.html)中有描述每个字节码的用途,每个字节码名字找不到的可以去python的库opcode 中看一下。...就比如NOP 在opcode中是这样添加进来的def_op('NOP', 9),所以\x09 就是NOP的意思。 一般的,每三个字节码或者一个字节码是一组。...有关于python的字节码都是什么意思,可以参考dis库的帮助文档,由于篇幅过长,就不在这里贴出来了。...经过我长(san)久(tian)的研究,发现python字节码混淆主要的成功和失败原因都在跳来跳去。

    2.4K50

    你了解 Python 字节码的原理吗?

    你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python “字节码”文件。这里转载一篇文章,专门讲解 Python 字节码的相关内容,给大家看看。...一旦运行完成,帧将从调用堆栈中弹出,在原始帧中,my_function 的返回值将被推入到计算栈的顶部。 我们知道了这个东西了,也知道字节码了文件了,但是如何去使用字节码呢?...dis 模块的使用 dis 模块包括一些用于处理 Python 字节码的函数,可以将字节码“反汇编”为更便于人阅读的形式。查看解释器运行的字节码还有助于优化代码。...如果你有兴趣尝试手工反汇编一个函数时,你可以从它们的十进制字节值中,使用列出 dis.opname 的方式去查看字节码指令的名字。...第二列(可选)指示当前执行的指令(例如,当字节码来自帧对象时)【这个例子没有】 第三列 一个标签,表示从之前的指令到此可能的 JUMP 【这个例子没有】 第四列 数字是字节码中对应于字节索引的地址(这些是

    2.6K40

    【PY】Python3 字节码混淆

    简单来说,pyc 文件就是 Python 的字节码文件; 众所周知,Python 是一种全平台的解释性语言,全平台其实就是 Python 文件在经过解释器解释之后(或者称为编译)生成的 pyc 文件可以在多个平台下运行...其实,Python 是完全面向对象的语言,Python 文件在经过解释器解释后生成字节码对象 PyCodeObject,pyc 文件可以理解为是 PyCodeObject 对象的持久化保存方式,在 Python...有时候可能会见到 pyo 格式命名的文件,这个是经过 Python 解释器优化后生成的字节码,相对于 pyc 文件,pyo 文件只是缩小了体积,运行速度还是相差无几的;   pyc 的版本号 Python...: 此后四个字节是元素个数,这里是 0x23,之后每一个字节与对应的值一组,一共 0x23 组: 每组中第一个字节表示元素类型,比如 0x69 指 TYPE_INT,此后为对应的值; 后方也对应结构体中的相应内容...字节码与字节码混淆 Python代码保护 | pyc 混淆从入门到工具实现

    48920

    【PY】Python3 字节码详解

    前言 在逆向的时候遇到过反编译 py 字节码,之前也就没咋在意,啥不会查就完事儿了,好家伙,省赛让我给遇到了,直接嘤嘤嘤,但还好解出来了; 今天趁这个机会,系统的学习一下,以防下次阴沟里翻船,本博文的...Python 版本是3.8.5,版本不同形成的字节码会略有不同,但是大同小异; 【记】2021年第四届浙江省大学生网络安全技能挑战赛: CSDN 个人博客 什么是 py 字节码?...Python 代码先被编译为字节码后,再由 Python 虚拟机来执行字节码,Python 的字节码是一种类似汇编指令的中间语言,一个 Python 语句会对应若干字节码指令,虚拟机一条一条执行字节码指令...Python 的 dis 模块支持对 Python 代码进行反汇编, 生成字节码指令。...字节码-手工还原python源码

    33040

    Excel技巧:快速删除表中的空行

    标签:Excel技巧 有时候,表中可能存在空行,如果我们需要删除表中的这些空行,如何快速操作呢?特别是包含大量数据的大表。为演示起见,下面的示例表数据较少。...情形1:简单的情形 如下图1所示,可以看出表中有2个空行。 图1 单击功能区“开始”选项卡“编辑”组中的“查找和选择——定位条件”命令,在“定位条件”对话框中选择“空值”选项按钮,如下图2所示。...图2 单击“确定”后,Excel将选择表中所有空行。 然后,单击功能区“开始”选项卡“单元格”组中的“删除——删除表格行”,即可删除空行。...情形2:复杂的情形 你可能觉得这很简单,因为你碰到的表很规矩,除了空行外,表中没有空单元格了。如果你碰到的是如下图3所示的表,那么如何删除表中的空行呢?...图3 如果你使用上面的操作,那么Excel不仅会选择空行,也会选择空单元格,如下图4所示。 图4 一种方法是创建辅助列,合并表中所有单元格的内容。

    2.8K10

    【字节码插桩】Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术

    文章目录 一、Android 中的 Java 源码打包流程 1、Java 源码打包流程 2、字符串常量池 二、Android 中的字节码操作方式 一、Android 中的 Java 源码打包流程 --...-- Java 程序在 Java 虚拟机执行前 , 需要先将 Java 源码通过 javac 编译成 .class 字节码文件 , 然后才能在虚拟机中运行 ; 1、Java 源码打包流程 Android...dex 字节码文件 , 这是 Dalvik 虚拟机字节码文件 ; ⑤ 生成未签名 APK : 使用 apkbuilder 工具生成未签名的 apk 文件 ; ⑥ 签名 : 使用 jarsigner 工具对..., 确定有哪些字符 ; 二、Android 中的字节码操作方式 ---- 操作字节码的 2 种方式 : AOP : Aspect Oriented Programming , 面向切面编程 ; APT....class 字节码文件打包为 .dex 文件过程中 ; APT 的插桩时机是 .java 文件编译成 .class 字节码文件时 , 进行的 , 编译时进行字节码插桩 ; ButterKnife ,

    1.2K10

    基于字节码的Java代码审计

    基于字节码的Java代码审计 之前看了基于字节码的Java代码审计工具的实现,最近终于有空可以好好看一下其是如何实现的了。本文并不会从代码出发,而是试图从字节码角度分析其可行性。...只要编译成为符合字节码规范的内容,均可以在Java虚拟机中运行。...至此字节码执行一个函数的过程就结束了,这里就可以进入下一个问题了 使用字节码进行审计 首先看这一段代码: public class RceYes{ public void eval(String...实现 上文已经找到了字节码代码审计的关键,那接下来如何通过代码去实现呢?首先第一个问题,如何将Class文件解析成字节码指令的形式。...这里就不得不提一下ASM了,作为字节码增强技术,它可以动态修改字节码或者是遍历类的结构,ASM此处就不进行深入展开了,我们单单看一下遍历类结构这一点,它会按照一定顺序逐语句对字节码进行解析,当解析到函数时我们就可以自定义一个局部变量表以及操作数栈来进行模拟操作

    77920

    字节码也能做有趣的事

    1.2字节码 字节码(Byte-code)是一种包含执行程序、由一序列 op 代码/数据对组成的二进制文件。字节码是程序的中间表示形式:介于人类可读的源码和机器码之间。...它经常被看作是包含一个执行程序的二进制文件,更像一个对象模型。字节码被这样叫是因为通常每个操作码 是一字节长,所以字节码的程度是根据一字节来的。...2.字节码执行 2.1JVM桢栈结构: 方法调用在JVM中转换成的是字节码执行,字节码指令执行的数据结构就是栈帧(stack frame)。也就是在虚拟机栈中的栈元素。...在Java虚拟机中,处理异常不是由字节码指令来实现的,而是采用异常表来完成的。 2.2.9同步指令 方法级的同步是隐式的,无需通过字节码指令来控制,它实现在方法调用和返回操作中。...部分信息在后面已经注释解释, 我们主要来说一下我们的Constant pool,常量池: 在Java字节码中,有一个常量池,用来存放不同类型的常量。

    52750

    Python中的文本和字节序列

    一、基本概念 Unicode Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。...字节 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit)。...八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。...3、Chardet Chardet是Python的一个库,可以检测出未知字节序列的编码方式。 不要在二进制模式中打开文本文件。即使想判断编码,也该用Chardet!...就是说程序中应当仅处理字符串,当需要保存到文件系统或者传输的时候,编码为字节序列。

    2K30

    字节码文件的内部结构之谜

    同一段 Java 程序在编译后生成的字节码文件是唯一的,不会因为平台的不同而产生任何的变化。而同一段字节码跑在不同实现的 JVM 上,会产生不同的机器指令。...因此,你的同一段字节码在不同平台下的 JVM 上运行,会对应到不同的机器指令,以此实现了跨平台运行。...而理解这个「字节码」文件结构就显得十分重要了,理解它是如何存储我们程序中的字段、方法、属性、局部变量、各种常量值等等,是学习虚拟机工作原理的基础。...那么,本文就来分析一下这个「字节码」文件,解开它的神秘面纱。...可以看到: [image] 这 17 个字节表述的 utf-8 字符串为:com/single/Person 我们手动的「翻译」了常量池中前两项,其实 Sun 公司为我们提供了工具帮我们计算字节码文件中各个项目

    1.4K90
    领券