我有一個我打算髮送給第三方的DLL,我想通過限制它只在特定的USB設備連接時才運行來保護它。 我使用setupapi來獲取設備的序列號(通過調用SetupDiGetDeviceInstanceId())。C++中的USB串行驗證
我想使驗證很難跟蹤,以防有人反編譯DLL。例如,對SetupDiGetDeviceInstanceId的簡單調用是可跟蹤的,如果有人想要使用我的DLL而沒有USB的正確序列,他可以很容易地在彙編代碼中查找我的strcmp,並將if(strcmp(...) == 0)
更改爲if(strcmp(...) == 1)
。
保護我的代碼免受逆向工程的良好(最好是「簡單」)方法是什麼?有可能是一個不同的API(除了setupapi)我可以用它來處理嗎?
在此先感謝!
雖然我回答爲OP問及我必須同意安德斯。我們有一個商業SAN只因許可USB密鑰失敗而失敗。當然,我們手邊沒有更換鑰匙。 – 2010-07-19 11:42:13