首页
社区
课程
招聘
[原创]如何破解python程序————破解WingIDE v4
发表于: 2011-8-11 14:16 28067

[原创]如何破解python程序————破解WingIDE v4

2011-8-11 14:16
28067

来源 http://hi.baidu.com/vessial/blog/item/4a2d2cfdafcd0c0c08244dd9.html

好久没上来了,发一篇共享下。

对于python程序员来说WingIDE肯定不陌生,强大的功能成为我一直钟爱的python development IDE,

不过这个软件需要注册,之前一直在用wing IDE 3.2版,用的一直是网上的10天试用注册机,今天研究

了一下,破解成无时间限制版了,此方法适用wing IDE的所有版本,把此方法记录下来,希望能够对

大家有用,不过我最终还是希望大家能够购买正版软件,毕竟也不是很贵,不废话了。

此过程是暴力破解,不涉及注册算法,有兴趣的可以自己研究一下,到时候可以给我分享一份。

http://wingware.com/pub/wingide/4.0.3/wingide-4.0.3-1.exe下载安装最新的版本,

安装后获取一个10天试用版的License, 打开你的wingide安装目录C:\Program Files (x86)\Wing IDE 4.0\bin\2.5,

注册验证的方法都在这个src.zip包里面,解压出里面process目录下的abstract.pyo文件,我的目的就是crack这个

文件了,abstract.pyo是被python优化编译过的文件,里面都是bytecode,需要进行反汇编来分析它,关键问题

就在这儿了,如何分析它,进而破解它,下面我将慢慢来描述如何进行分析。

首先如何反汇编:

http://pypi.python.org/pypi/unpyclib/0.8.1下载

这个unpyclib python库,解压出来后,进行反汇编,

python application.py -d abstract.pyo > abstract.txt

这儿需要分析这个反汇编结果了abstract.txt, 我们需要关注的函数是_GetTermDaysLeft

如何阅读和分析bytecode的反汇编指令我就不赘叙了,自己查阅些资源进行学习,

      STR: '_GetTermDaysLeft' (10 00 00 00 5F 47 65 74 54 65 72 6D...)

     .............................................

                                         0000015B     64 - LOAD_CONST          0

                                         0000015E     74 - LOAD_GLOBAL         'config'

                                         00000161     5F - STORE_ATTR          '_locale_valid'

                                         00000164     74 - LOAD_GLOBAL         'control'

                                         00000167     69 - LOAD_ATTR           'validate'

                                         0000016A     7C - LOAD_FAST           'lichash'

                                         0000016D     7C - LOAD_FAST           'lic'

                                         00000170     64 - LOAD_CONST          'os'

                                         00000173     19 - BINARY_SUBSCR      

                                         00000174     7C - LOAD_FAST           'lic'

                                         00000177     64 - LOAD_CONST          'version'

                                         0000017A     19 - BINARY_SUBSCR      

                                         0000017B     7C - LOAD_FAST           'lic'

                                         0000017E     64 - LOAD_CONST          'version'

                                         00000181     19 - BINARY_SUBSCR      

                                         00000182     69 - LOAD_ATTR           'find'

                                         00000185     64 - LOAD_CONST          '.'

                                         00000188     83 - CALL_FUNCTION      

                                         0000018B     20 - SLICE+2            

                                         0000018C     7C - LOAD_FAST           'hexact'

                                         0000018F     83 - CALL_FUNCTION      

                                         00000192     7D - STORE_FAST          'valid'

                                         00000195     74 - LOAD_GLOBAL         'config'

                                         00000198     69 - LOAD_ATTR           '_locale_valid'

                                         0000019B     7D - STORE_FAST          'valid'

                                         0000019E     57 - POP_BLOCK           

                                         0000019F     6E - JUMP_FORWARD        -> 000001AF

                                         000001A2     01 - POP_TOP            

                                         000001A3     01 - POP_TOP            

                                         000001A4     01 - POP_TOP            

                                         000001A5     64 - LOAD_CONST          0

                                         000001A8     7D - STORE_FAST          'valid'

                                         000001AB     6E - JUMP_FORWARD        -> 000001AF

                                         000001AE     58 - END_FINALLY         

                                         000001AF     7C - LOAD_FAST           'valid'

                                         000001B2     70 - JUMP_IF_TRUE        -> 000001C9

                                         000001B5     01 - POP_TOP            

                                         000001B6     74 - LOAD_GLOBAL         'kLicenseCorrupt'

                                         000001B9     74 - LOAD_GLOBAL         '_'

                                         000001BC     64 - LOAD_CONST          'Invalid license activation'

                                         000001BF     83 - CALL_FUNCTION      

                                         000001C2     66 - BUILD_TUPLE         

                                         000001C5     53 - RETURN_VALUE        

                                         000001C6     6E - JUMP_FORWARD        -> 000001CA

                                         000001C9     01 - POP_TOP            

                                         000001CA     7C - LOAD_FAST           'self'

                                         000001CD     69 - LOAD_ATTR           '_GetTermDaysLeft'

                                         000001D0     7C - LOAD_FAST           'lic'

                                         000001D3     83 - CALL_FUNCTION      

                                         000001D6     7D - STORE_FAST          'daysleft'

                                         000001D9     7C - LOAD_FAST           'daysleft'

                                         000001DC     64 - LOAD_CONST          -1

                                         000001DF     6A - COMPARE_OP          "=="

                                         000001E2     6F - JUMP_IF_FALSE       -> 000001F9  关键点在,修改 6F成70就好了,这里为了判断时间是否不受限制。 这个地址在偏移0x5425修改这个字节

                                         000001E5     01 - POP_TOP            

                                         000001E6     74 - LOAD_GLOBAL         '_'

                                         000001E9     64 - LOAD_CONST          'unlimited'

                                          000001EC     83 - CALL_FUNCTION      

好了,把abstract.pyo再复制到这个src.zip文件中去,用7zip最方便了,先用7zip把src.zip里面process里面的abstract.pyo删除,然后把这个

修改好的abstract.pyo添加进去,放到原来那个C:\Program Files (x86)\Wing IDE 4.0\bin\2.5目录,重启wingide,再去看一下你的Help->About

里面的License,上面的时间已经是unlimited了,可以不受时间限制使用了。



我把src.zip上传到http://skyme.tk上面,在下面的地址下载,替换原来安装目录

C:\Program Files (x86)\Wing IDE 4.0\bin\2.5下的src.zip即可。

http://skyme.tk/tools/src.zip

enjoy it:-)


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
这个还真没试过,收下
2011-8-11 16:22
0
雪    币: 345
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
先收藏下,现在没时间看,。。。
2011-8-11 17:24
0
雪    币: 152
活跃值: (588)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
话说...图片....挂了诶
2011-8-12 01:14
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
收藏,还没弄过py逆向
2011-8-13 11:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
了解了,帮顶
2011-8-13 18:59
0
雪    币: 230
活跃值: (149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错,呵呵。
2011-8-16 09:24
0
雪    币: 185
活跃值: (477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
make 一下  第一次看到  python的注册是这样的
2011-8-21 10:56
0
雪    币: 213
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
win7下没成功,网盘上的貌似没有了,从其他地方下来一个一样名字的。
2011-9-23 15:16
0
雪    币: 768
活跃值: (535)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
11
mark,留用:)
2011-9-23 15:21
0
雪    币: 152
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
最近正在学PY,这个可以有,收藏了
2011-9-23 16:47
0
雪    币: 422
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
显示虽然是unlimited,但是启动时还是显示10天试用版,天数也会减少
2011-9-26 13:32
0
雪    币: 4536
活跃值: (902)
能力值: ( LV16,RANK:480 )
在线值:
发帖
回帖
粉丝
14
10天以后你就自由了,到时候就不会弹窗了,哈哈
2011-9-26 18:01
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
15
应该只支持反编译py2.5吧 好悬
看来以后要发布的话 还是py2.7+比较安全

-----------------

2012.01.20
pip install unpyclib
2.6+一样有效 好像跟py版本无关
2012-1-20 21:24
0
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
这个必须mark
2012-2-15 18:44
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看不太明白,得学学了
2012-2-16 22:06
0
雪    币: 206
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
按照这个办法反编译了一把,然后关于里面是unlimite了,但是启动时还是会弹出10天提示,看10天之后的情况了
2012-12-4 14:41
0
雪    币: 265
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
中间代码的语言分析方法大同小异啊,呵呵,找到关键点改之
2013-6-30 11:44
0
雪    币: 807
活跃值: (2293)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
看来真是学无止境啊
2014-2-7 00:28
0
雪    币: 36
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mark
2014-2-7 02:23
0
雪    币: 1
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
好帖,新手
2014-2-14 07:38
0
游客
登录 | 注册 方可回帖
返回
//