使用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是一门解释性语言,它的具体工作流程如下 ...
随机推荐
- Spring 的IOC 和Aop
Spring 的IOC 和Aop
- C#的泛型委托Predicate/Func/Action
Predicate<T> 是一个委托,它代表了一个方法,它的定义是: namespace System { // 摘要: 表示定义一组条件并确定指定对象是否符合这些条件的方法. ...
- 花匠(NOIP2013)(神奇纯模拟)
原题传送门 这是道很奇怪的题目,真不知道为什么要放到T2. 也许是T1太水了 首先先看题, 题目要求一个数列中下标为偶数的点比临近的下表为奇数的点更大或更小 其实就是说在原数组中找到一个最长的波动数列 ...
- OpenGL入门学习 教程 (五)三维的空间变换
http://oulehui.blog.163.com/blog/static/796146982011924428755/ 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从 ...
- 在iOS上实现一个简单的日历控件
http://blog.csdn.net/jasonblog/article/details/21977481 近期需要写一个交互有点DT的日历控件,具体交互细节这里略过不表. 不过再怎么复杂的控件, ...
- VS MFC 改变AfxMessageBox标题 AFX_IDS_APP_TITLE
其实这个标题在资源String Table里就能找到,查找AFX_IDS_APP_TITLE,在这里你就能轻而易举的改变标题了. 注意:有的工程的资源String Table里面没有添加AFX_IDS ...
- malloc()之后,内核发生了什么?【转】
转自:http://blog.csdn.net/qianlong4526888/article/details/9042835 [-] 1brk系统调用服务例程 2扩大堆 3缺页异常的处理过程 31d ...
- 图片工具picpick
picpick 功能 截屏滚动窗口可以用来截取长图
- 5.DataFrame(基本概念)
- Selenium2+python自动化12-操作元素(键盘和鼠标事件)【转载】
前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...