zoukankan      html  css  js  c++  java
  • 使用uncompyle2直接反编译python字节码文件pyo/pyc

      使用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中提取processabstract.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中的processabstract.pyo即可。需要注意的是:不能解压,替换,再打包!需要直接替换zip中相应文件!

    最后替换安装目录中bin2.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

  • 相关阅读:
    【Ts踩坑】关于子类继承Error/Array/Map等造成无法访问子类中声明的方法问题
    【React Hooks】memo和useCallback搭配所带来的性能优化
    【Ts重构Axios】url处理篇
    【CSS style】超出指定行文字后开始省略
    【TypeScript】基本数据类型小结
    【TypeScript】你需要了解的泛型
    【TypeScript】几种高级类型
    Python 下载图片的几种方法
    python with open as f 写韩文中文乱码
    烙印---臧克家
  • 原文地址:https://www.cnblogs.com/timssd/p/11167882.html
Copyright © 2011-2022 走看看