UnityHook, 钩子到Unity3D程序集的平台

分享于 

5分钟阅读

GitHub

  繁體 雙語
Platform to hook into Unity3d assemblies
  • 源代码名称:UnityHook
  • 源代码网址:http://www.github.com/HearthSim/UnityHook
  • UnityHook源代码文档
  • UnityHook源代码下载
  • Git URL:
    git://www.github.com/HearthSim/UnityHook.git
    Git Clone代码到本地:
    git clone http://www.github.com/HearthSim/UnityHook
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/HearthSim/UnityHook
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    UnityHook

    UnityHook是一个简单的钩子管理函数调用平台,针对 Unity3d游戏的目标汇编编译。

    安装钩子允许重写钩子函数,本质上授予对目标游戏中托管代码执行的完全控制。

    Hooker 是将代码注入原始游戏程序集/库( =. dll 文件)的项目。 它可以用于'钩子'和'还原'程序集。 运行 hooker.exe help 以获取有关要传递的选项的信息。 要钩子游戏程序集,需要告诉它游戏文件夹的位置和编译的HookRegistry 二进制文件的路径。

    HookRegistry

    英镑HookRegistry是包含在游戏运行时被调用的钩子/函数时要执行的代码。 项目编译为 1个二进制文件,必须传递给 Hooker。 当前实现的钩子如下:

    • Hearthstone - 在HS游戏库中使用 dependancy。
      • 禁用客户端/服务器之间的SSL连接;
      • 在客户端/服务器之间传输的重复数据包到其他TCP流。 这些流尝试附加到 HearthStone PacketAnalyzer
    • 常规
      • 连接到统一记录器。

    Hooker 将尝试将所有引用的( 按英镑 HookRegistry ) 库文件复制到游戏的库文件夹中。 确保检查所有必要的库文件,通过检查 Hooker日志输出。

    钩子文件

    声明位于游戏库中的所有方法的文件,这些方法位于游戏库中。 有关语法的更多信息,请参见 /Hooker/example_hooks。 example_hooks文件在下面的部分示例中使用。

    注意:如果发现了所有的方法,hooker将总是钩入钩子文件中的所有方法。 如果 HooksRegistry 二进制代码没有代码可以插入,则钩子特定方法对游戏没有副作用 ! 不过游戏会慢一些。

    插件生成

    必须安装 Visual Studio 2017才能生成两个项目。 需要的组件是 C# - 和Unity开发工具 ! Visual Studio 2017社区版可以下载并能够执行生成。

    • 克隆 repo ;
    • 在解决方案文件夹和游戏安装路径之间创建一个联结链接。 请参见 /createJunction.bat
    • 使用 Visual Studio 打开UnityHook解决方案文件
    • ;;;
    • 生成项目为英镑的HookRegistry ;;
    • 所有二进制文件都可以在每个项目的bin 文件夹中找到。

    用法示例

    示例期望在最新提交时使用example_hooks文件,也使用最新的HookRegistry 二进制文件。

    示例的效果

    • 游戏创建了一个不安全的连接到服务器( 不是通过TLS隧道)
    • 所有传输的网络数据包都被复制到另一个 TCP'转储'-stream。

    你需要什么

    • compiled Hooker编译的二进制文件的收费路径。 被称为 {HOOKERPATH};
    • 已经编译的二进制 FILE HookRegistry。 被称为 {REGISTRY};
    • 游戏安装文件夹的路径。 被称为 {GAMEDIR};
    • hook的路径文件,如上面提到的。 被称为 {HOOKS}.

    步骤

    • 呼叫 Hooker.exe ;
    
    {HOOKERPATH}Hooker.exe hook -d"{GAMEDIR}" -h"{HOOKS}" -l"{REGISTRY}"
    
    
    
    
    • 确认那个妓女没有遇到问题;
    • 检查日志输出;
    • 所要求的方法是
    • 游戏程序集在原始的{name}.original.dll -> 备份旁边复制;
    • 补丁程序集被作为 {name}.out.dll; 写入游戏目录
    • 修补程序集已经将原始程序集替换为 {name}.dll;
    • 在游戏程序集旁边复制英镑的HookRegistry程序集 assembly 和引用组件
    • 运行游戏-> 查看游戏日志以从 [HOOKER] 开始。

    若要还原,请运行命令 {HOOKERPATH}Hooker.exe restore -d"{GAMEDIR}"

    注释

    • 这里项目旨在在Unity引擎的上下文中运行。 如果Unity引擎被初始化,在初始化英镑HookRegistry初始化时初始化,那么不会运行钩子。 每个方法都将执行,就像在Unity引擎上下文外被取消锁定一样。

    相关文章