来源 http://hi.baidu.com/vessial/blog/ite...c08244dd9.html

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

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

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

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

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

 

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

http://wingware.com/pub/wingide/4.0....de-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:-)