.NET外挂系列:5. harmony 中补丁参数的有趣玩法(下) - 一线码农
💡
原文中文,约3800字,阅读约需9分钟。
📝
内容提要
本文介绍了Harmony库的补丁参数,如__result、__args和___fields,展示了如何通过这些参数修改方法的返回值和请求URL。示例代码演示了如何拦截DateTime.Now和HttpClient.SendAsync方法,改变其输出和请求地址,体现了Harmony的强大功能。
🎯
关键要点
-
本文介绍了Harmony库的补丁参数,包括__result、__args和___fields。
-
__result参数用于获取和修改被注入方法的返回值。
-
示例代码展示了如何通过__result修改DateTime.Now的输出。
-
__args参数可以以object[]形式访问原方法的所有参数。
-
示例代码展示了如何通过__args拦截HttpClient.SendAsync方法并修改请求URL。
-
Harmony支持同名参数法,可以直接接收与底层方法签名一致的参数。
-
当参数为internal类型时,可以使用__n索引法访问参数。
-
___fields参数用于读写当前实例的私有字段。
-
示例代码展示了如何使用___fields为无名线程赋予默认名称。
❓
延伸问答
Harmony库的__result参数有什么作用?
__result参数用于获取和修改被注入方法的返回值。
如何使用__args参数拦截HttpClient的请求?
可以通过__args参数以object[]形式访问原方法的所有参数,从而修改请求URL。
Harmony库支持哪些参数访问方式?
Harmony库支持object[] __args、__n索引法和同名参数法来访问原方法的参数。
如何使用___fields参数修改私有字段?
___fields参数可以用来读写当前实例的私有字段,通常用于修改类的内部状态。
可以给无名线程赋予默认名称吗?
可以,通过___fields参数为无名线程赋予默认名称,以便于调试。
如何通过Harmony库修改DateTime.Now的输出?
可以使用__result参数注入DateTime.Now方法,修改其返回值以去掉时分秒。
➡️