dis进行反编译

  摘录自官方文档:

https://docs.python.org/2/library/dis.html

回头自己也脑补下。

可以使用dis查看自己代码的复杂度之类的东西。

比如while 1 和while True哪个效率更高。

定义两个方法,分别使用while循环

def w() :
  while 1 :
    pass

def w2() :
  while True:
    pass

单从功能上说,两种无任何区别,那么,来看看字节码上的区别:

import dis  #载入反编译模块,Python内置的

dis.dis(w) #对应的是while 1,下面是输出
  2           0 SETUP_LOOP               3 (to 6)

  3     >>    3 JUMP_ABSOLUTE            3
        >>    6 LOAD_CONST               0 (None)
              9 RETURN_VALUE

dis.dis(w2) #对应的是while True,下面是输出
  2           0 SETUP_LOOP              10 (to 13)
        >>    3 LOAD_GLOBAL              0 (True)
              6 POP_JUMP_IF_FALSE       12

  3           9 JUMP_ABSOLUTE            3
        >>   12 POP_BLOCK
        >>   13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

很明显, while 1的字节码只有while True的一半. 为什么呢? 因为Python2.x中True不是关键字,只是一个全局变量而已

时间: 2024-10-09 19:50:27

dis进行反编译的相关文章

Python 反编译工具uncompyle2

如何反编译pyc uncompyle2 是一个可以将pyc文件转换为py源码的工具 下载地址:https://github.com/wibiti/uncompyle2 安装: setup.py install 参数: Usage: uncompyle2 [OPTIONS]... [ FILE | DIR]... Examples: uncompyle2 foo.pyc bar.pyc # decompile foo.pyc, bar.pyc to stdout uncompyle2 -o . f

教你如何动态调试 iOS App(反编译App)

教你如何动态调试 iOS App(反编译App) 开篇 通过本文你能了解 iOS 逆向的基本知识,对 iOS App 的安全有一定了解.然后能举一反三,在自家 App 找到危险漏洞加以预防,保证用户数据安全. 在安全领域,攻与防永远存在.哪怕是 iPhone 有着强大的安全防护机制,也挡不住那些极客们一次又一次的好奇,开发了很多强大且便利的工具.本文就是在这些极客们提供的工具的基础上完成的! 准备工具 Mac 电脑和越狱 iPhone 手机 查看手机系统目录工具 iFunbox 或 iTools

对Python源码加密及反编译前后对比

关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. 1. 对 python转exe加壳 下载最新版加壳工具,使用加壳工具直接对demo.exe进行加壳操作 2.对.py/.pyc加密 第一步,使用加壳工具对 python 安装目录下的 python.exe 进行加壳,将 python.exe 拖入到加壳工具 VirboxProtector 中,配置

myeclipse安装jad反编译插件

有时候想深入底层看jar包封装的源代码,但是打不开.这就需要配置反编译插件: 1:准备原材料 jad.exe + net.sf.jadclipse_3.3.0.jar 下载目录: jad.exe :   http://download.csdn.net/detail/wxq8102/483003 net.sf.jadclipse_3.3.0.jar :  http://download.csdn.net/detail/csharpqiuqiu/7156175 2:将jad.exe放到java_h

Myeclipse8.5 反编译插件 jad 安装

准备工作 下载jad.exe文件和下载jadeclipse插件:http://pan.baidu.com/s/1pJKjVwn JadClipse 官网:http://jadclipse.sourceforge.net/wiki/index.php/Main_Page 安装 将jad.exe解压到指定目录.如:c:\java\jad 将jadeclipse插件net.sf.jadclipse_3.3.0.jar 拷贝到myeclipse安装目录\Genuitec\Common\plugins\目

Eclipse4.4 安装java反编译插件Eclipse Class Decompiler

一.在线安装方式: Eclipse Class Decompiler整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,能够很方便的使用本插件查看类库源码,以及采用本插件进行Debug调试.Eclipse Class Decompiler插件更新站点: http://feeling.sourceforge.net/update,然后直接使用Eclipse进行更新,支持Eclipse 3.x, 4.x,不依赖任何其他插件,直接勾选更

Eclipse反编译工具Jad及插件JadClipse配置

Jad是一个Java的一个反编译工 具,是用命令行执行,和通常JDK自带的java,javac命令是一样的.不过因为是控制台运行,所以用起来不太方便.不过幸好有一个eclipse的 插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码. 1  下载Eclipse反编译工具Jad. 下载路径:  http://pan.baidu.com/s/1tOSO2 2 把下载包中的 net.sf.jadclipse_3.3.0.jar放入到 eclipse的安装目录下,..

[转] .net软件反编译笔记

原文地址:http://blog.csdn.net/three_bird/article/details/51433734 在软件的破解及源码获取及重新编译的道路上会遇到一些问题,书此备查. 大名鼎鼎的Reflector以及开源的ILSPY都是.NET程序集的反编译利器,但是它们不能为你做全部的工作. 0x01: 遇到反编译所得源码里面调用类的属性时多出set_Name或者get_Name之类的说明程序集引用没有加载完全, 因为反编译工具在没有元数据的情况下无法判断这丫的到底是个方法还是个属性.

使用Reflector反编译并提取源代码

Reflector是一个强大的.net 反编译工具,有时我们不止需要反编译源代码,更需要提取源代码. Reflector本身不自带提取源代码功能,不过可以借助插件Reflector.FileDisassembler来提取源代码,方法如下: 1. 下载并安装Reflector,安装完成后打开Reflector 2. 下载插件Reflector.FileDisassembler,默认是下载一个压缩包,解压得到Reflector.FileDisassembler.dll 3. Reflector中添加