主要参考:
http://hi.baidu.com/hacklzt/blog/item/358cc512f1532538dd540105.html/cmtid/a3e8a36f9ab185d581cb4aa7#0
http://hi.baidu.com/vessial/blog/item/4a2d2cfdafcd0c0c08244dd9.html
http://bbs.pediy.com/showthread.php?t=138599
1、archlinux下直接yaourt -S wingide,就会下载编译安装了。第一次打开会弹出一个框叫你注册,如下图,一直点下去后就会获取一个10天试用版的License。(由于我的已经破解好了,所以只能借别人的图了。)
2、然后找到文件,archlinux下面是在/opt/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一起,然后执行命令进行反汇编:python2.7 application.py -d abstract.pyo > abstract.txt。我的python默认的是3.2的,所以这里要指定2.7。
5、打开汇编结果文件abstract.txt,通过查找关键函数_GetTermDaysLeft 找到关键地方:
000050B8 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...)
............................................. 中间省略 ........................................................
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_TRUE -> 000001F9 将6F改成70 这里为了判断时间是否不受限制。 70对应的指令是JUMP_IF_FALSE
000001E5 01 - POP_TOP
000001E6 74 - LOAD_GLOBAL '_'
000001E9 64 - LOAD_CONST 'unlimited'
000001EC 83 - CALL_FUNCTION
这一段的起始地址是000050B8,偏移地址是000001E2,用python计算:hex(0x50b8+0x01e2)得0x529a。不同版本的起始地址不同,这个要注意。
6、下面通过VIM来更改二进制文件abstract.pyo。输入命令打开:vim -b abstract.pyo (如果不加-b参数,则将不能修改,以只读模式打开)然后,在Ex模式下执行下面的命令
:%!xxd
在二进制编辑状态下,查找地址5290,找到要修改的地方,如图:
把行尾的6f改成70。
7、编辑工作完成后,执行下面的命令即可将其转换回去
:%!xxd -r
最后 :wq保存退出。
8、最后一步非常关键,先用7zip打开src.zip,把其中process里面的abstract.pyo删除,然后把这个修改好的abstract.pyo添加进去。这个非常重要,src.zip不能自己生成,不然启动不了。再把这个src.zip拷回/opt/wingide4.0/bin/2.5。
9、大功告成,可以试试改一下系统时间到10天之后,仍然可以用。