我有一个我打算发送给第三方的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