zhanglei1371 发表于 2022-3-20 15:46

Dll如何修改入口点实现只能声明调用?

调用Dll一般有两种方式,一个是声明的方式,一个是regsvr32注册后com方式
如何修改dll,实现只能以声明的方式调用,而不能注册以com方式调用呢?
https://wwi.lanzoup.com/iQ11401r42je
有一个x.dll不知如何做到的。

零下八度 发表于 2022-3-20 16:45

你想通过改造现有的 com 组件,把它改成标准dll来使用?

com 组件是有标准的(常规的标准dll并没有实现这个标准),只要你不实现这个标准,就不能以com方式调用了。

换句话说,你想强制让一个com组件"不能注册以com方式调用",也就是阻止regsvr32方式注册,应该只有破坏com的注册流程中的某些信息,才能做到了,这方法估计不简单,我也不会。

不过即使你做到了上面这点,怎么调用改造后的dll也是个问题,这里又到了 Registry-Free 的范畴了,说难不难说容易也不容易,而且方式也不少,具体取决于dll。

PS:
有些东西不是一言两语能说清的,有兴趣你可以了解一下 com 组件的注册流程和几种调用方式的细节。

Pierce 发表于 2022-3-20 18:07

。。。2种不同的dll ,{:1_907:}
C.dll 是 com 组件dll。
X.dll 是标准dll

vb6默认写的dll是com组件dll,要注册->引用->使用
如果需要写标准dll,需要插件的帮助来生成标准dll。才能实现声明的调用方式。

zhanglei1371 发表于 2022-3-20 18:20

Pierce 发表于 2022-3-20 18:07
。。。2种不同的dll ,
C.dll 是 com 组件dll。
X.dll 是标准dll


是否标准dll只能以声明方式引用,不能注册?若是这样我就知道了。c.dll就是用插件生成的标准dll

Pierce 发表于 2022-3-20 18:35

zhanglei1371 发表于 2022-3-20 18:20
是否标准dll只能以声明方式引用,不能注册?若是这样我就知道了。c.dll就是用插件生成的标准dll

标准dll你非要写成可以注册的估计也行。具体可以看看op的源码看他怎么实现的https://github.com/WallBreaker2/op

ps122 发表于 2022-3-20 20:34

看了一下一个是vb的(不是标准导出函数,只能在vb下用),一个是c的(标准导出函数,都可以用)
我知道下面那个文件是哪里的,不用研究了,有校验,替换无效

zhanglei1371 发表于 2022-3-20 22:19

ps122 发表于 2022-3-20 20:34
看了一下一个是vb的(不是标准导出函数,只能在vb下用),一个是c的(标准导出函数,都可以用)
我知道下 ...

哦,那么这样的保护方式是否能算是完美的保护方案呢?.Net的Dll修改了任何一处都无法执行,而这个则是更完美的防护。两个dll都几乎无懈可击。
另外,vb的那个,C#也是可以调用的,并非只能在vb下使用。

nowthink 发表于 2022-3-21 08:58

dapeng2022 发表于 2022-3-29 19:15

之前您的一个word工具网盘链接失效了,冒昧来这里求一下软件,大佬!
https://www.52pojie.cn/thread-1305326-1-1.html这个,谢谢了!

zhanglei1371 发表于 2022-3-29 20:06

dapeng2022 发表于 2022-3-29 19:15
之前您的一个word工具网盘链接失效了,冒昧来这里求一下软件,大佬!
https://www.52pojie.cn/thread-1305 ...

word实用工具:
https://wwx.lanzoui.com/b0alq05ib,密码:word
最后一个是免费的。
页: [1] 2
查看完整版本: Dll如何修改入口点实现只能声明调用?