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的更多相关文章

  1. @使用javap反编译Java字节码文件

    在Sun公司提供的JDK中,就已经内置了Java字节码文件反编译工具javap.exe(位于JDK安装目录的bin文件夹下). 我们可以在dos窗口中使用javap来反汇编指定的Java字节码文件.在 ...

  2. python反编译之字节码

    如果你曾经写过或者用过 Python,你可能已经习惯了看到 Python 源代码文件:它们的名称以.Py 结尾.你可能还见过另一种类型的文件是 .pyc 结尾的,它们就是 Python "字 ...

  3. uncompyle2反编译python的.py文件

    前几天学用github,一不小心把a.py文件给删除了,由于1天没有提交,也无法找回.突然发现同a.py文件生成的编译文件a.pyc还在,逐去搜索一番反编译的方法. 查询得知python比较好的工具u ...

  4. 【synchronized锁】通过synchronized锁 反编译查看字节码指令分析synchronized关键字修饰方法与代码块的区别

    前提: 首先要铺垫几个前置的知识: Java中的锁如sychronize锁是对象锁,Java对象头中具有标识位,当对象锁升级为重量级锁时,重量级锁的标识位会指向监视器monitor, 而每个Java对 ...

  5. 查看 java 中的编译的字节码文件

    javap -c Atomicity ---------- javap -c 产生的字节码文件---------- Compiled from "Atomicity.java" p ...

  6. Python 字节码bytecode

    字节码bytecode python把源码文件编译成字节码文件,存放在__pycahe子目录内,用.pyc结尾.之后如果不再修改源码文件,运行时则使用*.pyc文件编译成机器码,这样不但运行速度快,而 ...

  7. Python 文件编译为字节码的方法

    一般情况下 python 不需要手动编译字节码.但是如果不想直接 release 源代码给其他人,将文件编译成字节码,可以实现一定程度的信息隐藏. 1) 使用模块 py_compile 编译一个单文件 ...

  8. Python 字节码是什么

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的. 如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代 ...

  9. 浮生半日:探究Python字节码

    好吧!“人生苦短,请用Python”,作为python爱好者以及安全从业者,而且最近也碰到了一些这方面的问题,懂点python字节码还是很有必要的. Python是一门解释性语言,它的具体工作流程如下 ...

随机推荐

  1. 从零开始--Spring项目整合(1)使用maven框架搭建项目

    这些年一直在用spring的框架搭建项目,现在开始我们从零开始利用Spring框架来搭建项目,目前我能想到有Spring.SpringMVC.SpringJDBC.Mybatis.WebSockt.R ...

  2. JSONP原理小记

    大家都知道JSONP(JSON with padding参数式JSON)是跨域传输数据的方法,jq等很多类库都封装了JSONP的方法,但是他的原理是怎样的呢?下面举个我认为最浅显的栗子,大家看过了都会 ...

  3. ubuntu 解压

    .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ---------------------- ...

  4. SQL 设置自增,和default

    mysql数据库为表中已有的主键字段增加自增属性: ALTER TABLE `category ` MODIFY COLUMN `id` int(11) NOT NULL AUTO_INCREMENT ...

  5. tips 前端 移动端 web iscroll 5 自译文档 api速查

    iscroll 可以做的 1,模拟原生的ios 或者android等设备的元素滚动,app里的那种顺滑的滚动,仅仅使用一个轻量的js库实现(甚至更酷炫的视觉感受) 2,手机端流行的下拉刷新,ajax异 ...

  6. hdu 4305 概率dp

    /* 题目大意:有n个房间由n-1个隧道连接起来,从1号房间开始, 每个节点i都有三种可能: 1.被杀死,回到节点1,概率为ki; 2.找到出口,离开迷宫,概率ei; 3.与它相连的有m个房间,到任意 ...

  7. 【转】shell脚本写的俄罗斯方块游戏

    亲测一个很好玩的shell脚本写的俄罗斯方块游戏,脚本来自互联网 先来讲一下思维流程 一.方块的表示 由于shell不能定义二维数组,所以只能用一维数组表示方块,俄罗斯方块主要可以分为7类,每一类方块 ...

  8. [bzoj3158]千钧一发——二分图+网络流

    题目 传送门 题解 很容易建立模型,如果两个点不能匹配,那么连一条边,那么问题就转化为了求一个图上的最大点权独立集. 而我们可以知道: 最大点权独立集+最小点权覆盖集=总权值. 同时最小点权覆盖在一般 ...

  9. Selenium2+python自动化5-操作浏览器基本方法【转载】

    前言前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是w ...

  10. nginx+tomcat负载使用

    Nginx+Tomcat搭建 版本 操作系统版本 Centos 6.4 Nginx版本 nginx-1.3.15.tar.gz JDK版本 jdk-7u71-linux-i586   //jdk1.7 ...