码迷,mamicode.com
首页 > 其他好文 > 详细

劫持 Opengl32.dll 实现游戏MOD

时间:2018-08-19 00:57:24      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:入口   tac   scripting   open   ima   att   找不到   跳转   使用   

前提是你的游戏是用的Opengl,如果是DX的,自行谷歌方法,应该差不多,参考GTA5

 

最近玩了款《天命奇御》的国产网游,自己手动写了个MOD,本来是直接修改Chap-Assembly.dll来实现修改游戏的,

但想想这种方式不雅,每次游戏更新都要重新写一遍,再说替换原游戏文件的方式,总是有点不符合设计模式里的“多拓展,少修改”的原则

于是,投机取巧,Unity不是调用了opengl32.dll库嘛?我只要劫持它就行,将它修改,注入我的代码,然后放在游戏根目录(原理是,win系统,

Load外部dll,会先从游戏根目录扫描,找不到该dll,再去系统目录找,一般情况下,游戏根目录是没有opengl32.dll的,U3D的游戏启动后,

都是去系统目录里找的,我只要把opengl32.dll放到根目录,就可以了。

Hack的入口,就从openg里的 glEnable,glBegin入手,在那里注入我的代码,然后Unity调用到GL库时,就会跳转到我的代码。

 

至于我如何通过C++代码调用Unity/C#的API来实现修改游戏,则有两种思路,一种是利用c++调用c#的原理调用(有个现成的库,但我没使用过,Unity Scripting in C++

另一种比较简单粗暴,就是从mono入手,GetModuleHandleW(L"mono.dll"),GetProcAddress(me.hModule, "mono_thread_attach")找到mono的进程,

然后将mono里那堆操作IL的函数,直接给映射过来,然后就可以为所欲为了。

 技术分享图片

劫持 Opengl32.dll 实现游戏MOD

标签:入口   tac   scripting   open   ima   att   找不到   跳转   使用   

原文地址:https://www.cnblogs.com/jeason1997/p/9499142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!