主要參考:
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天之後,仍然可以用。