一般軟體的註冊機制可以通過獲取硬體序列號,然後用非對稱加密演算法生成相應的公鑰和私鑰。但是用managed code寫獲取硬碟序列號的**不能解決所有的問題,比如不能在非管理員的許可權下使用,前幾天sunmast在他的blog上發布了《如何得到硬碟序列號?.***版本[c#]
》,就是沒有解決這個問題,用wmi也有很多問題。
要想順利獲取硬碟的序列號,目前只能依靠非託管**了。diskid32
是乙個原始碼公開的c++程式,可以解決上述問題。由於**比較底層,我對vc和ddk不熟悉,沒有能力將其封裝為dll,希望各位幫忙!
還有,就算封裝好了這個native dll並可以使用了,但還有問題沒有解決。如果封裝到了native dll,該dll很容易被人替換成另外乙個,畢竟在managed code裡面可以看到呼叫native dll的函式宣告,別人只要模仿這些函式介面重新寫乙個新的就很容易達到破解目的了。不過具體我沒有測試過,不知道行不行。
於是我又想到了另外乙個方法,就是把獲取硬碟序列號的native dll作為資源檔案封裝到managed code中,然後在每次要調要該dll時,先把該dll寫入磁碟,再動態繫結。由於managed code可以通過混淆器來保護,以致不能對其進行修改,這個我在《如何保護我們的 .*** 程式集?
》中已經給出了答案。動態繫結native dll又是另外乙個技術難題,我已經找到了一些資料,與大家分享。
late binding on native dlls with c#
late-binding dlls in c#
using legacy plug-ins with .*** - part 1
using legacy plug-ins with .*** - part 2
c-function pointer for .***
dynamic pinvoke method calls
不過最牛的就是下面這一招了!直接把native code用位元組陣列儲存在managed code中,然後呼叫,真是牛b,不過我還沒有完全弄懂,希望大家來實踐實踐。
execute native code from .***
另外還有一篇文章是關於加密字串的,值得研究!
poly-engine crypt string
希望各位多多交流.***程式的保護問題,找出最好的解決方案!
獲取硬體序列號(序號產生器)
一般軟體的註冊機制可以通過獲取硬體序列號,然後用非對稱加密演算法生成相應的公鑰和私鑰。但是用managed code寫獲取硬碟序列號的 不能解決所有的問題,比如不能在非管理員的許可權下使用,前幾天sunmast在他的blog上發布了 如何得到硬碟序列號?net版本 c 就是沒有解決這個問題,用wmi...
讀取硬體序列號
using system using system.collections.generic using system.text using system.management namespace 讀取序列號 獲取硬碟序列號 string hdid managementclass cimobject1...
Flash Builder4序號產生器
我的eclipse下的flash builder 4正式版已經過期,之前在網上找到的註冊碼,都不能用了,花了很久時間,才做到這個序號產生器。flash builder 4 序號產生器 serial crack keygen 現在將adobe flash builder 4 正式版 序號產生器 共享出...