开发游戏尤其弱联网的单机,尤其战斗里面很多都是客户端自己计算,这时需要防止玩家内存修改
防作弊方法很多种我这里使用随机数和位运算异或,主要就是避免修改器战斗相关数据地址
最近遇到破解包
直接直接改ilblicpp.so内存,拿到别人的破解包,分析感觉就是注入方式改了代码
我看到所有角色都是同一个属性,分析得出就是直接改了代码赋值一样的值
解决方法1:和服务器加多额外的数据验证
解决方法2:代码进行混淆,这样子破解难度就更高
两种都加就很稳
ps:日服上线没遇到过这种情况,国服删档公测就出现,还是中国玩家牛逼
1.随机数
最终数值=原始数值*随机数(每个角色或者副本都是进战斗随机)
2.位运算异或
简单解析位运算异或
位逻辑异或运算将两个运算对象按位进行异或运算。符号为^
运算规则:1^1=0;1^0=1;0^0=0 (相同得0,相异得1)
举个简单例子:
1011^1101 = 0110
0110^1101 = 1011
结论就是:A^B=C,C^B=A
Anti-Cheat Toolkit使用
插件地址
链接:https://pan.baidu.com/s/1TkIYsIF1Kqp6Nr3Q9amGTw 提取码:0nma
具体用法(using CodeStage.AntiCheat.ObscuredTypes;)
/// <summary>
/// 血量
/// </summary>
private ObscuredFloat Hp;
/// <summary>
/// 最大血量
/// </summary>
private ObscuredFloat MaxHp;
/// <summary>
/// 护盾
/// </summary>
public ObscuredFloat Shield;
/// <summary>
/// 防护
/// </summary>
public ObscuredFloat Defend;