1. 程式人生 > >中秋無事,小破一個時間限制的軟體

中秋無事,小破一個時間限制的軟體

偶然從網上的一個某家語音合成的工具,效果還可以,只是軟體試用期只到2013年:

已經說明白了,2013年就不能用了

對於一般人,改改系統時間,用用就得了,但是對於作為程式設計師的我來說是不可以接受的,一定要作一下,把它破解掉

先用偵殼工具看看,軟體沒有加殼,大膽搞起來

馬上用 Ollydbg52pojie 反彙編:

通過搜尋找到關鍵詞:

改寫關鍵程式碼的地方

把JE 改為JNE,常用的彙編指令如下:

JO     溢位跳轉          0x70 JNO     不溢位跳轉          0x71 JB     低於跳轉          0x72 JNB     不低於跳轉          0x73 JE     相等跳轉          0x74 JNE     不等跳轉          0x75 JBE     不高於跳轉          0x76 JA     高於跳轉          0x77 JS     負號跳轉          0x78 JNS     非負跳轉          0x79 JP     奇偶跳轉          0x7A JNP     非奇偶跳轉          0x7B JL     小於跳轉          0x7C JNL     不小於跳轉          0x7D JNG     不大於跳轉          0x7E JG     大於跳轉          0x7F

但發現JNZ居然無效,馬上改成手寫

改成jnz

但發現最後無效?程式最後還是彈出過期的資訊;

好吧,再往前走

連帶 軟體損壞(合成dat檔案缺失造成損壞)和過期的判斷都給他幹掉

je->JNz

這次老實了,終於看到久違的介面:

但是很不爽,介面出來了,功能無效!

好吧,兩個筆記本同時call起來,再次發現

通過這個call之後就產生了不同的分支(主要是eax的值不同了)馬上設定斷點

最後我們兩臺筆記本設定不同的時間來帶這裡:

一個case switch語句,兩者走的分支不一樣

應該走的是defaultcase,結果時間一過期走的是case1(估計是處理軟體過期,case2估計是處理軟體損壞)

馬上把 74 10 改成75 10 ,好,介面生成且聲音可合成可儲存!

結果測試介面OK,功能OK,打完收工!