使用uncompyle2直接反编译python字节码文件pyo/pyc
update:在Mac OS X版的September 10, 2014版(5.0.9-1)中发现安装目录中的src.zip已更换位置至WingIDE.app/Contents/Resources/bin/2.7目录下,其它的Crack操作仍然不变。
实际上只需要把之前的abstract.pyo拿出来,放到新的src.zip中即可,即无需再次发编译。
这里主要介绍一下,python生成的pyo、pyc字节码文件的反编译工具uncompyle2。过程中将结合WingIDE最新版(WingIDE 5.0.2, Jan13,2014)的破解。无技术含量。
WingIDE 5破解 WingIDE 5.0.2破解 WingIDE 5最新版 破解
升级了最新的WingIDE 5.0.2(Jan13,2014),有10天的试用期,于是乎自己动手丰衣足食。
关于WingIde的破解之前论坛上已有两篇(见后文参考链接),其基本的方法就是用unpyclib来反编译,然后从类似的汇编或Smali一样的代码中找到关键的跳转点,然后在反编译前的abstract.pyo二进制文件中确定该跳转点,将其修改为相反的跳转指令即可。其中存在的一个比较麻烦问题就是,在反编译前的文件中寻找关键跳转指令的对应的位置。
我在着手时,搜了下python生成的字节码文件的反编译工具,有unpyclib和uncompyle2,发现uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件!
于是乎,破解WingIDE 相对于之前的流程,现在显得更为简单了。
step 1 安装和配置uncompyle2
从github上获取uncompyle2然后进行配置。
python setup.py install
之后从下载后解压的文件夹uncompyle2-master/scripts找到可以直接使用的脚本uncompyle2,实际上这就是一个python脚本文件。
step 2 反编译abstract.pyo
和前面帖子中方法一致,从WingIDE的安装目录的bin/2.7/中的src.zip中提取process\abstract.pyo进行反编译
./uncompyle2 ~/Desktop/abstract.pyo > ~/Desktop/abstract.py
然后打开即可看到整齐的、惊艳的py代码了!
step 3 修改abstract.py并重新生成pyo
在反编译的abstract.py中直接搜授权验证函数_GetTermDaysLeft,看到下图是不是狂喜呢?完整的注释。。
顺便扫扫代码,即使没注释也很容易看懂。。
所以。。
果断在函数开始处,添加return -1,并保存。

生成pyo
python -O -m py_compile abstract.py
注:如果不带选项-O则生成的是pyc文件,-O选项则可以在生成代码时进行一定的优化。
step 4:大功告成
将生成的新abstract.pyo替换原来src.zip中的\process\abstract.pyo即可。需要注意的是:不能解压,替换,再打包!需要直接替换zip中相应文件!
最后替换安装目录中bin\2.7\下的src.zip即可。
现在打开WingIde就变成了授权永久有效!
并且生成src.zip可以在Mac OS、Linux(Ubuntu)和Windows上均有效(Ubuntu上,wing的安装目录位于/usr/lib/wingide5/)。
总的就是想和大家分享下 反编译的神器 uncompyle2!
写到最后感觉跟Android的重打包似的:p:
参考:
http://bbs.pediy.com/showthread.php?t=148699
http://bbs.pediy.com/showthread.php?t=138599
https://github.com/wibiti/uncompyle2/
http://www.cnblogs.com/dkblog/archive/2009/04/16/1980757.html
使用uncompyle2直接反编译python字节码文件pyo/pyc的更多相关文章
- @使用javap反编译Java字节码文件
在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下). 我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件.在 ...
- python反编译之字节码
如果你曾经写过或者用过 Python,你可能已经习惯了看到 Python 源代码文件:它们的名称以.Py 结尾.你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python "字 ...
- uncompyle2反编译python的.py文件
前几天学用github,一不小心把a.py文件给删除了,由于1天没有提交,也无法找回.突然发现同a.py文件生成的编译文件a.pyc还在,逐去搜索一番反编译的方法. 查询得知python比较好的工具u ...
- 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别
前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对 ...
- 查看 java 中的编译的字节码文件
javap -c Atomicity ---------- javap -c 产生的字节码文件---------- Compiled from "Atomicity.java" p ...
- Python 字节码bytecode
字节码bytecode python把源码文件编译成字节码文件,存放在__pycahe子目录内,用.pyc结尾.之后如果不再修改源码文件,运行时则使用*.pyc文件编译成机器码,这样不但运行速度快,而 ...
- Python 文件编译为字节码的方法
一般情况下 python 不需要手动编译字节码.但是如果不想直接 release 源代码给其他人,将文件编译成字节码,可以实现一定程度的信息隐藏. 1) 使用模块 py_compile 编译一个单文件 ...
- Python 字节码是什么
了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...
- 浮生半日:探究Python字节码
好吧!“人生苦短,请用Python”,作为python爱好者以及安全从业者,而且最近也碰到了一些这方面的问题,懂点python字节码还是很有必要的. Python是一门解释性语言,它的具体工作流程如下 ...
随机推荐
- Java不需要加载整张图片而获取图片的大小
转载地址 http://blog.jdk5.com/zh/java-get-image-size-without-loading-the-whole-data/ 利用Java类,获取图片的类型,宽度和 ...
- 51nod1086 背包问题 V2——二进制优化
有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi ...
- 封装一下webform的公用方法:对于软件我把这些全封装在pagebase里面,这样所有的页面只调用一句 Init()即可,其他的全在页面上配置
/// <summary> /// 绑定新闻列表,带分页与查询 /// </summary> /// <param n ...
- request.getScheme()的使用方法
今天在修改bug时,发现程序使用了 request.getScheme() .不明白是什么意思,在google 搜索了一下.现在明白了.整理如下: 1.request.getScheme() 返回当前 ...
- PLSQL自动断开服务器连接 (转)
最近,有同事反映在使用PLSQL连接数据库的时候,总是出现数据库频繁自动断开连接.这是因为资源配置文件中IDLE_TIME参数的限制,IDLE_TIME指定会话允许连续不活动的总的时间,以分钟为单位, ...
- Balanced Lineup(RMQ)
原题传送门 就是裸RMQ啊.. 求区间最大值和区间最小值,一看就像RMQ,当然线段树貌似也可以. 至于算法嘛.自己学~(好吧,放个传送门...) 然后就是最后把maxsum-minsum就好啦233~ ...
- Windows下VS2013创建与使用动态链接库(.dll)
一.创建动态链接库文件 ** 1.打开VS2013,选择文件,新建工程 2.选择新建W32控制台应用程序,这里将工程名改为makeDLL 3.在应用程序类型中选择DLL,点击完成 4.完成以上步 ...
- CodeSmith Professional 5与VS2010有冲突
最近VS2010莫名其妙无法正常使用了,新建工程和打开工程就提示“Microsoft Visual Studio发生问题需要关闭”的错误提示,然后就是重新启动VS2010,最后经过分析和查证,确定是某 ...
- 第一章:1-22、长度为100字节的应用层数据交给运输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部18字节。试求数据的传输效率。 若应用层数据长度为1000字节,数据的传输效率是多少?
<计算机网络>谢希仁著第四版课后习题答案答: 数据长度为100字节时 传输效率=100/(100+20+20+18)=63.3% 数据长度为1000字节时, 传输效率=1000/(1000 ...
- [BZOJ2095][Poi2010]Bridges 二分+网络流
2095: [Poi2010]Bridges Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1187 Solved: 408[Submit][Sta ...