到现在为止,这个版本的破解在网上还不好找。
参考的这篇文章:http://hi.baidu.com/vessial/blog/item/4a2d2cfdafcd0c0c08244dd9.html
1、首先到官网去下载wingide 4.0.3,我下载的是ubuntu的版本,装好后,第一次打开会弹出一个框叫你注册,如下图,一直点下去后就会获取一个10天试用版的License。(一定要获取一个License,不然下面方法不能用)
2、然后找到文件,bin\2.5\src.zip,linux下面是在/usr/lib/wingide4.0/bin/2.5,解压出里面process目录下的abstract.pyo文件。
3、去 http://pypi.python.org/pypi/unpyclib/0.8.1 下载这个unpyclib python库
4、把刚才解压的abstract.pyo放到unpyclib库目录下面,与application.py一起,然后执行命令进行反汇编:python application.py -d abstract.pyo > abstract.txt
5、打开汇编结果文件abstract.txt,通过查找关键函数_GetTermDaysLeft 找到关键地方:
0000523E STR: ‘t\x00\x00d\x01\x00\x83\x01\x00|\x01\x00d\x02\x00<x6\x00t\x01\x00D].\x00}\x03\x00|\x01\x00i\x02\x00…’ (2F 03 00 00 74 00 00 64 01 00 83 01…)
……………………………………… 中间省略 ………………………………………………..
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 “==” 将6A改成70
000001E2 6F – JUMP_IF_FALSE -> 000001F9 关键点在,这里为了判断时间是否不受限制。 这个地址在偏移0x5425修改这个字节
000001E5 01 – POP_TOP
000001E6 74 – LOAD_GLOBAL ‘_’
000001E9 64 – LOAD_CONST ‘unlimited’
偏移字节是通过上面的0x523E + 0x1E2得到的。直接利用python计算:hex(0x1E2+0X523E)。有可能你计算出来的地址跟这个不一样,没关系。
6、下面通过VIM来更改二进制文件abstract.pyo。输入命令打开:vim -b abstract.pyo (如果不加-b参数,则将不能修改,以只读模式打开)
然后,在Ex模式下执行下面的命令将其dump
:%!xxd
在二进制编辑状态下,查找地址5420,找到要修改的地方,如图:
看到那个6a了吧,把它改成70。
7、待编辑工作完成后,执行下面的命令即可将其转换回去
:%!xxd -r
最后 :wq保存退出。
8、最后将我们修改好的abstract.pyo文件替换掉wingide文件夹下bin/2.5/src.zip中process目录下的abstract.pyo文件。重启wingide就可以了。