軟體反破解技術經驗總結:歡迎加入您的經驗

看雪資料發表於2015-11-15

共享軟體的開發是一項非常困難的工作,有了投入,很可能還沒有回報,或投入產出比過大。
在國內,您還必須應對軟體被破解的情況。

所以相應的一些軟體保護技術就產生了。以下是本人的一些經驗:


1.對軟體中重要的資料進行加密變換,如何實現呢,要知道,反彙編工具,最大的好處是透過分析字串找到
突破口,我們可以將軟體中使用的字串找出來,放到一個檔案中,一行一個,
再寫一個小工具將其加密,在軟體壓縮後,將變換後內容貼到軟體後面。在delphi中用memorystream裝載即可。
這樣脫了軟體殼,肯定無法正常工作
加密程式碼段,方法不詳
哪位知道,請告知一二。

2。檢查程式的父程式,如果不是explorer程式,就是被別的程式裝載,在win98下容易實現。使用createtoolhelp32snapshort即可
這樣還可對一些脫殼機起作用,使其無法脫殼
如果EXE檔案開啟方式被更改,也會出現這種情況

3.delphi軟體的保護,基於delphi為核心的軟體將被反編繹,但以mck為核心編繹的軟體則在dede中至今還是很安全的。很多情況下可
以直接在mck工程中引用vcl但有些時候則無效。

4使用readprocessmemory,writeprocessmemory來防破解,軟體執行後,可以隨時檢查軟體中某些地址是否被爆破手PATCH了,對於設定時間過
期的,可以在軟體中讓叛斷過期的程式碼永遠不成立,這樣可以迷惑一些破解新手,沒時間限制吧,過了時間,軟體可以用writeprocessmemory
改寫此段程式碼,而實現時間限制

5在所有程式中檢查是否有特定名稱,如trw2000這類,但軟體不斷增加,難免誤判,所以可以在程式中查詢特徵碼方法,將網上一些精典工具
採集其中特徵碼,軟體可以更安全。對於查病毒木馬軟體很適用,不需增加掃描引擎。

6利用時間差,如可用gettickcount之類,在軟體裝載起始處與結束處比較,超過了某一數值,就認為被除錯,如果軟體中要裝載可變內容的數
據時,要將判斷放到前面去。此法還要考慮相容性,要取一個較大的值。

7.鎖住鍵盤,滑鼠,防止被除錯,user32.dll中有個blockinput即可呼叫。
8.將功能,註冊判斷放到DLL中去,脫殼工具大多是對exe檔案起作用,DLL則很少有脫殼器。
9.crc校驗法,可在任意時候檢查自身是否被修改。發現異常刪除自已。不要來個提示什麼的,那將引導對軟體的逆向工程

10.對不同的作業系統進行不同的處理,判斷程式碼具隨機性等能有效地避免被'成功'的破解。
破解者不一定在所有的系統下去測試一個被破解的程式,這樣將破解程式弄到另一個系統下將被刪除。

11用createfilea,_lopen之類來開啟sice,ntsice的控制程式碼,檢查偵錯程式是否被駐留。
12用findwindow查詢特定軟體的標題,類名,關閉該軟體或退出自已。
13軟體中載入無效內容,讓反彙編器失效。
{本人還未成功實現)
14,改寫一些公開的加殼器原始碼來自加殼,必須注意系統相容性

15....待續


最後,在決定對軟體進行保護時,是否應當改進軟體的功能,這樣可能會有更多的使用者購買。

相關文章