fefesd 发表于 2019-12-28 23:04

3Dmigoto是什麽原理?

我是第一次接触mod, 现在玩dmm版doaxvv, 所以试了一下mod, 但这东西比我想像的更神奇
3Dmigoto没有盖过原本游戏的任何一个文件, 但竟然可以把mod的功能加进去
有点电脑知识的人都知这是不可能的, 为什麽3Dmigoto可以做到? 那是什麽原理呢?

jlxl01 发表于 2020-2-22 22:11

不懂,看你说的挺热闹

123132132132131 发表于 2020-6-14 14:53

本帖最后由 123132132132131 于 2020-6-14 15:20 编辑

有点电脑知识的都知道这是可能的
因为win系统的可执行程序允许且优先调用其所在安装目录下的dll组件(即动态链接库)
而3DMigoto 的核心组件使d3d11.dll,其实质为win10系统默认的d3d11组件的改版
玩过enb,reshade,sweetfx的应该都知道这一点
它们都不需要覆盖任何游戏文件,仅需让可执行程序调用其核心组件即可
另外一些手柄制式兼容软件,比如xpad,xinput也是这个原理
还有一些联机,网游的外挂也是这个原理目前市面上99%的程序都在使用各种各样的DLL,理论上你都可以通过修改这些DLL达到修改这些程序的目的。你打开你电脑里任何一个软件的安装目录,不论游戏还是办公软件,看看它们的目录下,是不是都有至少一个甚至数个后缀为DLL的文件?
自远古的win2.0时代,即1987年,距今33年前,便存在dll调用机制。。所以这不是啥稀罕事
你可以把3DMIGOTO的D3D11组件删除掉试试,它就无法在游戏里正常加载了另外,在你系统的system目录下也有一个d3d11.dll,它是系统自带的d3d11组件,其载入优先级平时要低于安装目录下的同名dll
这个dll当然不要删掉(即使你有足够的权限),否则影响所有需要调用此组件的d3d游戏

PS一下百度百科
动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。例如,在 Windows 操作系统中,Comdlg32.dll 执行与对话框有关的常见函数。因此,每个程序都可以使用该 DLL 中包含的功能来实现“打开”对话框。这有助于避免代码重用和促进内存的有效使用。
通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。


所以为了避免不必要的重复劳动和研发,以及确保程序运行的高效,程序员们通常让程序调用这些现成的代码和数据组成的“公共库”,碰到程序功能实现上有特殊需求的时候,会将过去大佬们研发的各种DLL进行适度的定制修改(就像动物的DNA大部分相同一样,这大半个世纪以来的大多数程序其底层代码都是相同或逻辑近似的,只有计算机语言表达方式的不同。之所有程序可以五花八门,妙就妙在投入心血,人力,资金研发出的那些原创代码以及将各种代码巧妙组合的结果)
所以我是想吐槽一下你。。。。。永远不要以为自己真的懂一个领域。。。即使你连入门的“门”在哪里都没看到,你懂得越多,越不敢说自己懂了








页: [1]
查看完整版本: 3Dmigoto是什麽原理?