精华内容
下载资源
问答
  • pyc反编译

    千次阅读 2017-04-01 12:34:42
    Ubuntu系统可以采用uncompyle2反编译,下载链接:https://github.com/wibiti/uncompyle2推荐一个在线反编译网站:http://tool.lu/pyc/

    Ubuntu系统可以采用uncompyle2反编译,下载链接:https://github.com/wibiti/uncompyle2
    terminal中使用命令

    uncompyle2 crackme.pyc > crackme.py

    推荐一个在线反编译网站:http://tool.lu/pyc/


    windows也可以安装uncompyle2
    只不过cmd命令要改为

    python -u C:\python27\Scripts\uncompyle2 crackme.pyc > crackme.py
    展开全文
  • Python pyc反编译成py

    2020-08-31 11:03:13
    # 安装 pip install uncompyle # 将test.pyc反编译成test.py 文件 uncompyle6 test.pyc > test.py # 当前目录pyc文件进行反编译 uncompyle6 -o . *.pyc

    uncompyle6可将python字节码转换回等效的python源代码
    uncompyle6源码链接

    ① 安装uncompyle6

    pip install uncompyle
    

    ② 将test.pyc反编译成test.py 文件

    uncompyle6 test.pyc > test.py 
    

    ③ 当前目录pyc文件进行反编译

    uncompyle6 -o . *.pyc 
    
    展开全文
  • pyc反编译.rar

    2019-11-24 09:12:20
    这是个windows版的工具,可以反编译单个pyc,pyo 文件,或者选定反编译一个指定文件夹下面的pyc,pyo 文件, 确实很好用.
  • python文件编译与pyc反编译

    千次阅读 2020-07-10 17:02:41
    既然有反编译的需求,为了保护pyc文件不被反编译,我们又希望找到一个方法来防止pyc文件被反编译。 本文介绍了如何将py文件编译成pyc和pyo文件,也介绍了如何反编译pyc文件, 又给出了一种字节码混淆方法来防止pyc...

    pyc是编译py之后生成的二进制文件。当我们发布系统的时候不想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件。同样,如果拿到一个python程序,只有pyc文件,我们就无法看到源码,希望有办法反编译pyc文件以获得源码。

    既然有反编译的需求,为了保护pyc文件不被反编译,我们又希望找到一个方法来防止pyc文件被反编译。

    本文介绍了如何将py文件编译成pyc和pyo文件,也介绍了如何反编译pyc文件, 又给出了一种字节码混淆方法来防止pyc文件被反编译。

     

    1 编译py文件到pyc和pyo

    pyc是编译py之后生成的二进制文件,由python虚拟机来执行的。当我们发布系统的时候不想让别人看到源代码,就需要将py文件编译生成pyc文件,对外只提供pyc文件。

    同时,在模块被加载时,.pyc文件比.py文件更快

    但是pyc的内容跟python的版本相关,不同的版本编译后的pyc文件不同,2.5编译的pyc文件不能到3.5上执行.

     

     

    发布python软件的过程为:

    1. 生产pyc文件: python -m compileall .

    2. 删除py文件: find . -name “*.py” |xargs rm -rf

    3. 删除pycache目录: find . -name “pycache” |xargs rm -rf

    1.1 Python2 编译

    命令:

    python -m py_compile file.py

    python -m py_compile {file1,file2}.py

    编译完成后,生成的 .pyc文件在当前目录。

     

    可以使用-O或者-OO转换python命令来减少编译模块的大小

        -O转换会帮你去掉assert语句

        -OO转换会帮你去掉assert语句和__doc__文档字符串

    由于一些程序可能依赖于assert语句或文档字符串,应该在确认需要的情况下使用这些选项。

    例如 python –O -m py_compile file.py 会在本目录生成 file.pyo

     

    1.2 python3 编译

    Python3的编译和python2一样,只是在python3之后编译后的文件在pycache目录下,而不是与源文件同一目录。

    那么如何让python3实现生成的pyc与源代码在同一目录呢?可以加上-b参数,例如

    Python3 -m py_compile -b file.py

     

     

    1.3 批量编译

    python -m compileall DIR

    python3 -m compileall –b DIR

    DIR为需要编译的目录

    例如: python -m compileall .

     

    参数说明:

    usage: python compileall.py [-l] [-f] [-q] [-d destdir] [-x regexp] [-i list] [directory|file ...]

     

    arguments: zero or more file and directory names to compile; if no arguments given,

               defaults to the equivalent of -l sys.path

     

    options:

    -l: don't recurse into subdirectories

    -f: force rebuild even if timestamps are up-to-date

    -q: output only error messages

    -d destdir: directory to prepend to file paths for use in compile-time tracebacks and in

                runtime tracebacks in cases where the source file is unavailable

    -x regexp: skip files matching the regular expression regexp; the regexp is searched for

               in the full path of each file considered for compilation

    -i file: add all the files and directories listed in file to the list considered for

             compilation; if "-", names are read from stdin

    1.4 代码实现

    单文件编译:

    import py_compile
    py_compile.compile('path') //path
    是包括.py文件名的路径

    批量编译:

          import compileall

    compileall.compile_dir('$dir')

     

    2反编译pyc

    如果只有pyc文件,我们是无法直接查看内容的,这时,就需要反编译工具将pyc文件反编译成py源程序。 这里介绍uncompyle6反编译工具。Pyc文件能够反编译的前提是文件没有被加密或者代码混淆。

    2.1 Uncompyle6安装

    > git clone https://github.com/rocky/python-uncompyle6.git

    > git checkout python-2.4

    > sudo python setup.py install

    如果没有报错,则安装成功了。

    2.2反编译

    执行命令:

    >uncompyle6 -o . *.pyc

    这时会在当前目录生成.py源文件。

    3 防止反编译pyc文件

    如何防止pyc文件被反编译呢? 这里介绍字节码混淆的方法,此方法能够抵挡低端的反编译手段,例如第2章的方法,但是,要到高手,还是抵挡不住。

    字节码混淆可以非常容易的欺骗通常的反汇编器和反编译器,同时不影响代码的正常执行。下面这个例子展示了如何欺骗Uncompyle6反编译器以及dis反汇编器:

    #一个简单的Python应用 sample1.py

    print 'Hello World'

    对其进行编译:

    python -m py_compile sample1.py

    对编译后的sample1.pyc使用Python内置dis模块反汇编:

          >>> import marshal,dis

    >>> fd = open('sample1.pyc', 'rb')

    >>> fd.seek(8)

    >>> sample1_code_obj = marshal.load(fd)

    >>> fd.close()

    >>> dis.dis(sample1_code_obj)

      1           0 LOAD_CONST               0 ('Hello World')

                  3 PRINT_ITEM

                  4 PRINT_NEWLINE

                  5 LOAD_CONST               1 (None)

                  8 RETURN_VALUE

    >>>

     

    以上的汇编代码笔者肉眼反汇编的结果如下:

    0 LOAD_CONST     0 ('Hello World') #加载co_consts[0]到栈顶,co_consts[0]存储着常量字符串'Hello World'

    3 PRINT_ITEM                       #打印栈顶到sys.stdout,即print 'Hello World'

    4 PRINT_NEWLINE                    #打印新行到sys.stdout,此指令因print语句而由编译器自动生成

    5 LOAD_CONST     1 (None)          #加载co_consts[1]到栈顶,co_consts[1]存储着None

    8 RETURN_VALUE                     #将栈顶返回给调用者,此两条指令为编译器自动生成

     

    现在我们修改sample1.pyc,在程序入口增加一条绝对跳转指令(可以使用UltraEdit 16进制插入功能修改pyc文件,”JUMP_ABSOLUTE 3”在Python 2.7中对应的字节码为 0x71 0x03 0x00。修改code string内容的同时应修改code string的长度,此处增加了一个3字节指令),使用内置dis模块反汇编的结果如下:

      1           0 JUMP_ABSOLUTE            3                 #自行添加

            >>    3 LOAD_CONST               0 ('Hello World')

                  6 PRINT_ITEM

                  7 PRINT_NEWLINE

                  8 LOAD_CONST               1 (None)

                 11 RETURN_VALUE

     

    如果读者对汇编代码有一定认识,就会明白此处的绝对跳转对Python虚拟机执行此程序基本没有影响(除了增加一个指令执行周期),然而这个绝对跳转将成功欺骗反编译器。使用Uncompyle6反编译的结果如下:

    <<< Error: Decompiling stopped due to <class 'uncompyle6.semantics.pysource.ParserError'>

    如果一个pyc文件无法被反编译,初级的破解者可能就会止步于此了,但对于有经验的工程师来说这还远远不够。同样的,我们还要让通常的反汇编器也无法工作才行。按下面的汇编代码继续加工上面的sample1.pyc。

    |   1           0 JUMP_ABSOLUTE        [71 06 00]     6

    |               3 LOAD_CONST           [64 FF FF] 65535 (FAKE!)

    |         >>    6 LOAD_CONST           [64 00 00]     0 (Hello World)

    |               9 PRINT_ITEM           [47 -- --]

    |              10 PRINT_NEWLINE        [48 -- --]

    |              11 LOAD_CONST           [64 01 00]     1 (None)

    |              14 RETURN_VALUE         [53 -- --]

     

    以上第二条指令的意思是加载code object常量表的第65535项到栈顶。在上述sample1.pyc中,常量表的长度为2,下标65535已超出常量表的范围,所以这是条非法指令。但由于第一条绝对跳转的存在,第二条指令永远都不会被执行。通常的反汇编器如dis会尽全力列举有用的信息,但并不能理解实际执行的控制流,当反汇编器尝试反汇编第二条指令时,会试着去读取code object常量表的第65535项并且抛出一个’tuple index out of range’的意外。Python内置dis模块的出错信息如下:

    >>> fd = open('sample1.pyc', 'rb')

    >>> fd.seek(8)

    >>> import marshal,dis

    >>> sample1_code_obj = marshal.load(fd)

    >>> dis.dis(sample1_code_obj)

      1           0 JUMP_ABSOLUTE            6

                  3 LOAD_CONST           65535

    Traceback (most recent call last):

      File "<stdin>", line 1, in <module>

      File "C:\Python27\lib\dis.py", line 43, in dis

        disassemble(x)

      File "C:\Python27\lib\dis.py", line 96, in disassemble

        print '(' + repr(co.co_consts[oparg]) + ')',

    IndexError: tuple index out of range

    >>>

     

    现在Uncompyle6和dis都被欺骗了,代码得到了有效的保护。

    4 Reference

    https://blog.csdn.net/ir0nf1st/article/details/61650984

    https://www.cnblogs.com/nickchen121/p/10802465.html

    https://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html

    展开全文
  • 0x00 安装 1.下载并解压到安装目录 python setup.py install //安装 2.下载链接: ...1.其实之前遇到pyc反编译都是在https://tool.lu/pyc/上面直接反编译, 直到我遇到了hackme.inndy.tw上的pyyy,...

    0x00 安装

    1.下载并解压到安装目录

    python setup.py install //安装

    2.下载链接:

    链接:https://pan.baidu.com/s/1QoCnPrBkLr8ucdabQ4HECw 
    密码:ud6d

    0x01 使用

    1.其实之前遇到pyc反编译都是在https://tool.lu/pyc/上面直接反编译,

    直到我遇到了hackme.inndy.tw上的pyyy,详见wp

    2.具体用法:

    首先切换目录到\uncompyle2\build\scripts-2.7,将你的pyc文件放进去。

    执行python uncompyle2 -o out.py pyyy.pyc即可。

    生成pyc文件可以用python -m out.py。

    作者: LB919

    出处:http://www.cnblogs.com/L1B0/

    如有转载,荣幸之至!请随手标明出处;

    转载于:https://www.cnblogs.com/L1B0/p/8686441.html

    展开全文
  • step 1 安装和配置uncompyle2 更新uncompule2模块 step 2 反编译text.pyc uncompyle2 -o text.py text.pyc
  • python的pyc反编译

    2019-07-11 15:24:32
    1,下载反编译工具:Easy Python Decompiler 下截地址:https://sourceforge.net/projects/easypythondecompiler/ 2,准备好字节码表,方便对照。使用python2.7和python3.6进行获取字节码: 获取方法: import ...
  • python2.6 pyc反编译

    万次阅读 2014-01-25 00:24:24
    同学请我帮他反编译下几个pyc文件,生成pyc文件的python版本是2.6.6 尝试了以下几个工具: 【1】uncompyle2 github:https://github.com/wibiti/uncompyle2 之前用过,但是有个限制是必须是python2.7以上生成的...
  • .pyc反编译在线工具

    千次阅读 2017-07-01 13:45:01
    http://tool.lu/pyc 效果还是不错的。 只是把一些汉字变成了十六进制
  • 1,下载反编译工具:Easy Python Decompiler 下截地址:https://sourceforge.net/projects/easypythondecompiler/ 2,准备好字节码表,方便对照。使用python2.7和python3.6进行获取字节码: 获取方法: import ...
  • pyc文件反编译

    千次阅读 2020-10-09 21:03:40
    找一个pyc文件(不是源代码文件),然后搜索相关反编译工具把pyc反编译成Python源代码,最好能多找几种工具或者途径达到反编译的目的。 我找的是另一位同学的pyc文件 1、在线反编译 2、Easy Python Decompiler反...
  • python单个pyc文件反编译第一步第二步第三步 第一步 pip install uncompyle 第二步 在.pyc文件所在的文件夹下面使用 shift + 鼠标右键 --选择在此处打开powershell窗口 第三步 uncompyle6 test.pyc > test.py #...
  • 1. 由Python文件编译为...2. .pyc反编译,使用 uncompyle, 也可以使用网上在线的反编译工具 需要安装 uncompyle pip install uncompyle 演示: 其他命令 uncompyle6 --help 查看帮助 uncompyle6 models.pyc...
  • python反编译成.py获得源码所需要的文件
  • 1. 什么是py与pyc文件 .py与.pyc文件的区别 2.编译pyc python -m compileall file...3. 反编译pyc文件 使用conda安装 uncompyle pip install uncompyle ./uncompyle file.pyc > file.py 这样 pyc文件就可读了 ...
  • python pyc文件的反编译

    2019-12-11 19:42:00
    编译:py --->pyc python -m compileall test.py 反编译: pyc--->py 安装uncompyle pip install uncompyle 查看帮助 uncompyle6 --help ...将models.pyc反编译并输出到py文件. uncompyle6 test.pyc ...
  • ​python反编译工具一抓一大把为什么还要自己搞?...搞一份python代码,在修改过的python里跑一遍,在原版的python里跑一遍,对比字节码在修改回来就可以反编译了python编译后的字节码存储在pyc文件中,这个py...
  • 如何反编译pyc文件查看源代码

    千次阅读 2020-09-05 21:03:44
    安装 pip install uncompyle 使用方法 uncompyle6 --help 查看帮助 ... models.py 将models.pyc反编译成py文件 uncompile -o . *.pyc 将当前文件夹中所有的pyc文件反编译成后缀名为.pyc_dis的源文件 使用示例 ...
  • 将下列代码保存为bat文件,放到使用Easy Python Decompiler转换成功后的文件夹下,双击运行,即可自动删除当前目录及子目录下的pyc源文件,并将反编译pyc_dis类型文件转换成python源文件 for /r %%i in (*.pyc_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 498
精华内容 199
关键字:

pyc反编译