破解WingIDE pro version 4.03
对于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即可。
enjoy it:-)
摘自 http://hi.baidu.com/vessial/blog/item/4a2d2cfdafcd0c0c08244dd9.html