zoukankan      html  css  js  c++  java
  • 劫持 Opengl32.dll 实现游戏MOD

    前提是你的游戏是用的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的函数,直接给映射过来,然后就可以为所欲为了。

     

  • 相关阅读:
    Leetcode Reverse Words in a String
    topcoder SRM 619 DIV2 GoodCompanyDivTwo
    topcoder SRM 618 DIV2 MovingRooksDiv2
    topcoder SRM 618 DIV2 WritingWords
    topcoder SRM 618 DIV2 LongWordsDiv2
    Zepto Code Rush 2014 A. Feed with Candy
    Zepto Code Rush 2014 B
    Codeforces Round #245 (Div. 2) B
    Codeforces Round #245 (Div. 2) A
    Codeforces Round #247 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/jeason1997/p/9499142.html
Copyright © 2011-2022 走看看