码迷,mamicode.com
首页 > 编程语言 > 详细

Python 反编译工具uncompyle2

时间:2015-06-01 16:10:15      阅读:695      评论:0      收藏:0      [点我收藏+]

标签:

如何反编译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:\Python27\Scripts\uncompyle2   文件里面, 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+"\scripts\uncompyle2 " + 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

Python 反编译工具uncompyle2

标签:

原文地址:http://www.cnblogs.com/dcb3688/p/4543935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!