• 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 . foo.pyc bar.pyc # decompile to ./foo.dis and ./bar.dis
    uncompyle2 -o /tmp /usr/lib/python1.5 # decompile whole library

    Options:
    -o <path> output decompiled files to this path:
    if multiple input files are decompiled, the common prefix
    is stripped from these names and the remainder appended to
    <path>
    uncompyle -o /tmp bla/fasel.pyc bla/foo.pyc
    -> /tmp/fasel.dis, /tmp/foo.dis
    uncompyle -o /tmp bla/fasel.pyc bar/foo.pyc
    -> /tmp/bla/fasel.dis, /tmp/bar/foo.dis
    -s if multiple input files are decompiled, the common prefix
    is stripped from these names and the remainder appended to
    <path>
    uncompyle -o /tmp /usr/lib/python1.5
    -> /tmp/smtplib.dis ... /tmp/lib-tk/FixTk.dis
    -c <file> attempts a disassembly after compiling <file>
    -d do not print timestamps
    -m use multiprocessing
    --py use '.py' extension for generated files
    --norecur don't recurse directories looking for .pyc and .pyo files
    --verify compare generated source with input byte-code
    (requires -o)
    --help show this message

    Debugging Options:
    --showasm -a include byte-code (disables --verify)
    --showast -t include AST (abstract syntax tree) (disables --verify)

    Extensions of generated files:
    '.pyc_dis' '.pyo_dis' successfully decompiled (and verified if --verify)
    '.py' with --py option
    + '_unverified' successfully decompile but --verify failed
    + '_failed' uncompyle failed (contact author for enhancement)

    参数其实就是C:Python27Scriptsuncompyle2   文件里面, uncompyle2也是一个py文件但没有py扩展

    代码如下:

     1 #! /usr/bin/env python
     2 import os
     3 import sys
     4                
     5 def displayFile(file):
     6     unPath= sys.executable
     7     unPath=unPath[ 0 : unPath.rfind( os.sep ) ]
     8     newname = file[0:file.rfind('.')] + '.py'
     9     command = "python -u "+unPath+"scriptsuncompyle2 " + file + ">" + newname
    10     try:
    11         os.system(command)
    12     except e:
    13         print file
    14     
    15 if __name__ == '__main__':
    16     print 'init'
    17     displayFile('C:\pycc.pyc')
    18     print 'finished'


    经过测试 反编译后生成的py 执行报错:
    SyntaxError: Non-ASCII character 'xd6' ***** but no encoding declared
    一看就知道是编码问题, 说有在生成的py文件的头部加
    # -*- coding: gbk -*-
    很奇怪,# -*- coding: UTF8 -*- 也会报错

    更多:http://www.iteye.com/topic/382423

  • 相关阅读:
    Java基本数据类型
    Java位运算符
    Java条件编译
    Groovy学习笔记(二)
    Groovy学习笔记(一)
    Java开发环境搭建
    Java接口回调
    [精华][推荐]CAS SSO单点登录服务端客户端实例
    CAS SSO单点登录实例
    分布式架构springcloud+redis+springmvc+springboot
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4543935.html
Copyright © 2020-2023  润新知