`

python 反编译 pyc 一些心得

 
阅读更多

0x01 , 现在用python的人也多了起来,代码安全始终是我们要考虑的问题,比如说我们要将我们的成果发布出去,py直接发布肯定是不行的(除非你是开源的),那么我们就只能考虑发布pyc文件了,

 

 

0x02,今天讨论的就是怎么反编译pyc到源代码的技术,从道理上来讲,这个是完全没问题的,而且反编译出来的代码质量应该相当高才对(参考java class的原理),在百度里面搜索的话,信息量不够,只有2.2以下版本的反编译

 

0x03 ,利用google的话有个短小的讨论比较有含金量 

http://stackoverflow.com/questions/8189352/decompile-python-2-7-pyc

 

他提出了几个开源的反编译实现,其中比较知名的是uncompyle,经过git查询我们可以发现uncompyle2这个是一个基于uncompyle的加强版本,所以可以考虑使用这个

 

0x04 https://github.com/wibiti/uncompyle2

  下载,安装

  python setup.py install 没什么好说的

 

 

0x05 安好后怎么用呢,这里要注意,文档写的不详细,实际上是去找python目录下/Scripts/uncompyle2 文件执行,其实打开 uncomple2就可以看到这个实际上是个py文件,具体参数 -h可以看到

 

0x06 给大家一个我写的小py可以减少些手动工作

 

import os
import sys
               
def displayFile(file):
    unPath= sys.executable
    unPath=unPath[ 0 : unPath.rfind( os.sep ) ]
    newname = file[0:file.rfind('.')] + '.py'
    command = "python -u "+unPath+"\scripts\uncompyle2 " + file + ">" + newname
    try:
        os.system(command)
    except e:
        print file
    
if __name__ == '__main__':
    
    #print unPath
    print 'init'
    displayFile('E:\\test.pyc')
    print 'finished'
 

0x07 有经验的py程序员会在发布程序的时候修改pyc的头8个字节,这8个字节是有特殊含义的

  1. 四个字节的magic number
  2. 四个字节的timestamp

头四个是magic number 很多pyc都在这个上面做文章,这修改成不合法的,然后你反编译就是败了,一板你可以找你自己编译成功的pyc头直接覆盖掉他的头8个字节就可以了, timestamp是文件的修改时间,主要是当源码有改变的时候python 就可以重新生成pyc 文件.

我说的比较简单,详细的可以看看这个http://www.iteye.com/topic/382423

 

分享到:
评论

相关推荐

    Python反编译pyc完全教程.doc

    反编译 pyc 文件可能会遇到一些挑战,例如,需要找到合适的反编译模块和函数,需要正确地使用反编译命令等。 知识点十:反编译 pyc 文件的应用 反编译 pyc 文件可以应用于学习和研究 Python 编程,了解代码的实现...

    python反编译 python exe文件反编译 pyc文件反编译

    二、Python PYC反编译 `.pyc`文件是Python编译后的字节码文件,它包含了Python源代码的编译表示,但并非直接的机器代码。`.pyc`文件通常用于提高程序的加载速度,因为它们可以被Python解释器直接执行,而无需再次...

    python反编译工具 Easy Python Decompiler

    Python社区还提供了其他一些反编译工具,如uncompyle6、pycde等,它们各有特点和适用场景。例如,uncompyle6支持Python 2.4到3.7的字节码反编译,而pycde则更注重代码的可读性和格式化。 在实际开发中,理解如何...

    python反编译工具合集

    Python反编译是将已经编译过的Python字节码(.pyc文件)转换回源代码(.py文件)的过程,这对于理解闭源代码、学习他人代码或逆向工程等场景非常有用。以下是一些关于Python反编译工具的知识点: 1. **什么是Python...

    Python uncompyle6库, 反编译pyc文件工具

    这是使用Python uncompyle6库反编译pyc文件的工具。将pyc文件拖入uncompile.py文件中即可运行。 如果有错误, 程序还会输出详尽的错误提示。程序经过调试, 功能完备。

    pycdc用于反编译python3.9以上版本的pyc文件

    Python 3.9引入了一些新的特性,如优化的字节码结构、类型注解的增强等,这使得旧的反编译工具可能无法准确地转换回源代码。 反编译Python字节码的主要挑战在于,字节码是编译器内部表示,它不直接对应于源代码的...

    python反编译工具包

    Python反编译工具包是针对Python源码进行逆向工程的一种资源,主要目的是为了查看或理解已编译的Python字节码(.pyc文件)或优化过的代码。在Python中,源代码通常会被编译成字节码,然后由Python虚拟机执行。这种...

    python反编译exe文件方法详解

    Python反编译是将已编译的Python字节码(.pyc文件)转换回源代码(.py文件)的过程,这对于分析或调试无法获取源代码的Python程序非常有用。在本篇中,我们将深入探讨如何使用uncompyle6和pyinstxtractor.py工具来反...

    对Python3 pyc 文件的使用详解

    2. **保护源码**:虽然`.pyc`文件并不是完全加密的,但它们在一定程度上增加了反编译的难度,对于商业软件开发者来说,可以提供一定的源码保护。 3. **跨平台性**:`.pyc`文件是跨平台的字节码,这意味着可以在不同...

    批量反编译pyc工具

    总的来说,批量反编译`.pyc`工具是Python开发中一个实用的辅助工具,它基于Python的字节码解析技术,通过特定的反编译库和脚本实现批量处理,帮助我们理解或恢复无源代码的程序。然而,在实际使用时,应尊重他人的...

    python反编译反汇编工具pycdc pycdas

    python反编译反汇编工具pycdc pycdas pycdc xxxx.pyc 得到py代码 pycdas xxxx.pyc 得到字节码 可以用来尝试进行反编译工作 使用vs2019编译生成pycdc pycdas

    pycdc 反编译pyc文件 python3.8 python3.9 python3.10 python3.11

    要反编译一个pyc文件的步骤是:1.将pycdc.exe和pyc文件放在同一个文件夹下(最好,当然 你也可以用绝对路径或者相对路径);2.在该文件夹处打开终端,输入代码:pycdc.exe a.pyc > b.py pycdc是一个高效的Python反...

    python反编译.zip

    标题"python反编译.zip"表明这个压缩包包含了一些用于Python反编译的工具。PyInstaller是Python的一个流行工具,用于将Python程序打包成独立的可执行文件,这在分发应用程序时非常有用。然而,PyInstaller生成的exe...

    python反编译工具pycdc.exe,python反汇编工具pycds.exe

    在Python生态系统中,还有其他一些反编译工具,如uncompyle6和decompyle3,它们提供更先进的反编译功能,支持Python的最新版本。如果你遇到更复杂的反编译需求,可以考虑使用这些工具。 总之,pycdc.exe和pycds.exe...

    Python反编译.rar

    2. **反编译工具**:Python社区提供了一些反编译工具,如`uncompyle6`、` uncompyle2` 和 `decompyle3`。这些工具可以解析Python字节码并尝试将其转换回人类可读的源代码。这些工具在处理未提供源代码的第三方库或...

    最新的强大python逆向反编译工具 可以pyinstxtractor让exe变成pyc,再uncompyle6变py源码

    最新强大的python逆向反编译工具。 可以pyinstxtractor让exe变成pyc,再变py源码 python版本一定要与EXE的一致,不然有的编译不出来,所以得先查询一下版本: Strings工具,查询exe的 python版本 两个强大的变源码...

Global site tag (gtag.js) - Google Analytics