能力值:
( LV2,RANK:10 )
|
-
-
2 楼
肯定可以的,DLL被宿主加载就跟宿主混为一体了,在DLL里面的可以得到宿主的一切,一般做法是在DLL里面写个导出函数,EXE调用传个参数进去运算下效验是不是B调用,这样来判断,如果参数传的不正确 直接EXITPROCESS(0);
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢你的回答!
主要是现在a.dll和b.exe是完全分离的,exe不会去校验是否为a.dll,就是说这个工作要让a.dll完成,这样也可以吗?比如我另外一个c.exe同样的参数来调用a.dll,那么a.dll是怎么区分是b调用还是c调用?
谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
DllMain
|
能力值:
(RANK:400 )
|
-
-
5 楼
在DLL中计算下当前进程的hash值。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这方法不适合调用exe经常更新的吧?如果exe更新了,这个hash不也变了?
|
能力值:
(RANK:170 )
|
-
-
7 楼
可以在dll中检查进程名;进程pe中也可以加上一些固定偏移的特征来校验。
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
Aker的方法挺好,可以同时校验EXE PE中几处的和的HASH值,话说回来。。你把DLL校验函数再弄个自己的VM保护
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
再说明白一点吧。
比如我要做一个dll给别人,但是要限定只能被他的exe调用。由于exe是他的,所以会随时更新,因此不能用校验文件MD5之类的来限制。这种情况下,是不是只能判断进程名?
|
能力值:
(RANK:170 )
|
-
-
10 楼
可以提供一个动态dll/一个静态lib给对方,对方使用dll,同时也要静态链接lib,lib中包含你有的一些特征,规定对方以一定规则调用;这样,dll许可方就可以用dll,dll被第三方拿了是没有办法正常用的。
再考虑多点,可以尝试服务器验证。开始几次连接不管,多次连接你通过之后,做一些猥琐的验证,让他时而正常,时而不正常。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
好办法,学习了
|
能力值:
(RANK:380 )
|
-
-
12 楼
在exe后面附加一个固定的bin校验这个文件就行了
|
能力值:
(RANK:170 )
|
-
-
13 楼
exe不是楼主可控的~
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
这个不错
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
检测模块的方法有没有可行性?因为对方的exe运行过程中有一个模块,一般别的进程是没有的。
|
能力值:
(RANK:170 )
|
-
-
16 楼
可以做,没有关系的,跟对方说好了,你做了很多检查,如果有修改要和你的版本一起做;或者提供可选的配置。
|
能力值:
( LV3,RANK:30 )
|
-
-
17 楼
我个人觉得是否可以在a.dll里检测exe进程里是否有指定的模块,从来来判断是否为b.exe?
这个没用的,别人可以直接根据你检测的模块进行偷梁换柱。
1:最保险的方法,把DLL的区段直接跟EXE拼接。然EXE动态查找DLL的导出函数。
2:写一个pe_loader 把DLL切分成5份,然后映射到内存中进行解密。
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
写个验证函数,导出,让exe调用。
比如
void Verify(char *username,char *password);
如果传入值错误,调用其他函数就失败。
|
|
|