XLua热更新方案中能不能跳过Lua这一步,直接把C#代码编译成IL再注入到程序里?

1回答

XLua热更新方案中能不能跳过Lua这一步,直接把C#代码编译成IL再注入到程序里?

提问者 李猛龙 2017-05-16 1.1k浏览

XLua的Hotfix热更新方案的方法对C#而言也只是 “动态调用函数”,逻辑还是在lua里的。

能不能跳过Lua这一步,直接把C#代码编译成IL再注入到程序里?
从原理上讲,IL2cpp这里已经把IL编译成C++了,请问这时候该怎么注入代码?

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • 杨首昂 2017-05-16 11:54
    第一个问题 
    XLua的Hotfix热更新方案的方法对C#而言也只是 “动态调用函数”,逻辑还是在lua里的  
    这个说法是对的。在IOS平台上,动态修改DLL是非法的【假设不开ilCpp的情况下】,这个也是许多手机游戏使用脚本做热更的主要原因。而在端游上Windows游戏更新中,存在一些直接修改exe的更新方式。

    第二个问题:
    这个问题与第一个问题有一些重叠,上面提过的问题不在赘述。排除系统限制,这个肯定是可以的。至于是否能够对已经在执行过程中的DLL修改,这个我不确定。但是在运行之前就修改,这个是完全可行的。

    第三个问题:
    在IL2cpp这里已经把IL编译成C++后,就不能再注入了。因为IL注入的基础是中间语言库。当中间语言已经不存在的时候,这个肯定不可以。在Hotfix中只是利用IL2cpp支持C#的反射功能,使得LUA能够访问和修改指定类的静态成员函数而已。如果这时候你还想了解可执行程序的注入的,这种注入的过程和病毒感染的机制就非常相似。如果你感兴趣这种技术,请上看雪论坛。

    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答