导语:在一些通用的方法下,你要都需要进行一定的敌我判断,不能让除玩家外的对象享受到mod功能
【初夏原创】【技术教程】so层hook普通类型字段进行敌我判断 第5张插图

常用方法为:挂钩实例方法(int、bool)传入实例进行判断确定、第二是从字段(在dnspy中为黄色)中找到同类里的枚举字段或者疑似的字段(int、bool为普通类型蓝色)进行判断,第三个是我们自写的c++适配器代码,这个需对逻辑与c++语言有一定的基础,这里我们用到的是第二种方法,我们就找到了一个疑似字段,int类型的instanceid。

由于不像枚举一般有给我提供对应类型的返回值,所以我们可以通挂钩通用方法,比如这里我挂钩了伤害方法,敌人玩家受到伤害都会从这里走一遍逻辑

【初夏原创】【技术教程】so层hook普通类型字段进行敌我判断 第6张插图
挂钩代码如下:
逻辑解析
当伤害代码被调用时将实例传入字段进行判断为1时就是玩家。

为何为1:通过logd进行打印isplayer的值,每次方法执行时都会在as控制台自动打印出玩家和敌人的实例值
【初夏原创】【技术教程】so层hook普通类型字段进行敌我判断 第7张插图

像这样子,然后填入即可完成一次简单的判断

【初夏原创】【技术教程】so层hook普通类型字段进行敌我判断 第8张插图
简单结束[滑稽]有缘再见