標籤:
常用的混淆加密
如果涉及到演算法,可以將演算法做成非託管dll
難道,C#真的就不能自己弄個什麼名堂的東西出來,不被工作管理員結束嗎?實際,我認為,C#是可以做到這一點的。原因有2個。1,C#是支援帶*號這種指標的方式的。也就是說,C#可以使用指標。2,C#可以完全無障礙的調用Windows自己的API函數(雖然效能沒有VC++開發的好),調用第三方開發的COM組件,甚至調用USB插口介面相關資訊(曾今做隨身碟殺毒的時候,用到過,不過主要還是結合API完成的,一個未公開的API函數R開頭的忘記了)。所以,為此,我抱著信心開始準備找第三方提供的動態連結程式庫之類的東西,畢竟要自己寫,C#還是有許多效能和調用方面的麻煩問題要考慮,畢竟不是畢業設計,所以,能簡單就簡單,只要克服以上提到的5種方法的不足。
最後,功夫不負有心人,找了大半天,找到了一個叫Peter的牛人,寫了一個通過VC++程式調用VC++動態連結程式庫,實現的VC++程式不被工作管理員結束的原始碼。幸虧原始碼相當詳盡(VC++動態連結程式庫的源碼,VC++應用程式源碼),要不然,後面的活路,就沒有辦法做了。於是我開始,慢慢,慢慢走上辛苦的VC++程式碼分析上。你們可能要問我幹什嗎?我可以很坦然的告訴你,雖然我VC++能力確實不強,但是我要把VC++的代碼,移植到C#上。聽起來,很不可思意,但是,我真的成功了。最後,為了報答我的學校——成都電子機械高等專科學校和成都資訊工程學院。我把VC++應用程式調用代碼,移植到.NET上,並且,為了調用方便,我做成了.NET可以識別的dll運行庫。只要按以下方式調用運行即可。這個dll運行庫可以保護自己進程,也可以通過設定保護其他進程,作為第三方動態連結程式庫存在。(很幸運,雖然這個第三方動態連結程式庫我還是很花了些時間,但是絕對不收費,免費放送,提供C#工程源碼下載!如果大家有興趣也可以一起討論一下,我的郵件是Email:[email protected]),至於那個牛人的設計思路,其實,就是用系統函數掛鈎,掛接了所有的系統函數訊息。沒有直接分析工作管理員這些東西。不過,在CMD命令控制台中,無法接受訊息,所以,用命令控制台,是可以結束進程的。不過,命令控制台,一般使用者不會使用,可以直接把命令控制台刪除,或者移植到程式內部調用,不準使用者外部調用,就行了。至於其他更麻煩的東西,就有興趣大家在慢慢聊吧。
常見工具:
dotNet Protector
.net C# 原始碼和信貸嗎保護(代碼安全)