是C++ dll,比如sample.dll
限定于只能被我自己写的sample.exe调用
越安全越好,希望在sample.exe被反编译的情况下仍然能够有效(即不能源代码sample.cpp中拷贝出调用sample.dll的源代码,自己写个application调用sample.dll)
限定于只能被我自己写的sample.exe调用
越安全越好,希望在sample.exe被反编译的情况下仍然能够有效(即不能源代码sample.cpp中拷贝出调用sample.dll的源代码,自己写个application调用sample.dll)
解决方案 »
- 有关用物体颜色实现物体选择的问题?glReadPixels
- 请教分配内存空间的问题,有代码
- 问个感情问题?
- 怎样通过HTTP代理访问某一网页(比如www.google.com)?
- 简单问题---UP有分
- !!!哪位高手有空呢!!!帮帮忙看段多线程socket代码!!!
- 极简单问题.const关键字
- CDialog的派生类为什么没有析构函数?
- 'memcpy' : cannot convert parameter 1 from 'char'错误
- 为什么没他妈的人回答,也不难呀
- WaitForSingleObject这个函数具体事做什么用的啊?这个函数等待一个对象成为信号状态是什么意思啊?
- 如何搜索代码里面那段代码是函数?并且找到函数名后如何找到相关定义的.h文件呢
另外简单一点也可以直接以序号导出函数,抹掉函数名,这样起码不容易去调用。
但要在服务器上编译,有点问题
在服务器上编译的时候自动修改代码,估计很难实现,比如代码使用perforce管理的
同意。比如,导出一个接口函数,其参数指定一个回调函数,让客户exe传回一个标志串,类似于sn之类的。根据这个标志串的对比来决定是否要attach。也可采用显示导入的方式使用dll,即ref文件里不指定要导出的函数,客户程序通过包含yourdll.h,
yourdll.lib的方式编译链接,来调用dll,不能通过LoadLibrary(),GetProcAddress()的方式来调用。
这样,只要控制开发时用的yourdll.h, yourdll.lib不外泄就行了。
客户是人,你这里是exe程序
然后服务器自动编译所有的版本
问题是如何在C++中检查签名
MS的sigcheck.exe可以检查,但是个工具程序,程序中使用它来检查的话,用户如果自己写个sigcheck.exe替换掉安装目录的,就没有效果了
最好还是有API或者自己写代码检查
要想完成的需求,必须在相关函数调用的使用做好身份认证,如何符合则,函数继续运行,
否则直接返回。但这样做效果不是很好,因为在要求效率高的应用场合每次调用都要身份识别
那就不好万了。
你给这两个人弄一个暗号,比如EXE说"天龙盖地虎",DLL一听,呀,死党来了.就可以放心地跟它走了.
否则口号不对话,就直接退出.不跟它走.!
或者能得到当前进程的exe路径也行
GetModuleFileName的第一个参数设为NULL对调用sampledll的exe/dll进行签名,在sampledll的DllMain中检查签名,用CAPICOM的一些函数
这样就基本不可能了,因为你的调用方式必然在你的.CPP里面
这样就没有办法了知道了.CPP就知道你是怎么让.DLL知道这个EXE是你自己的.
所以你只能做到让这个验证过程很复杂,无法让别人短时间内知道是怎么回事
EXE中将该字符串传递给DLL。
DLL自己计算结果,并与EXE传递进来的值进行对比。
符合,则调用。
否则退出。