步骤 9: 注入++: (密码=31337157)

这一步将会解释如何处理游戏中的共用代码, 这种代码是通用在除了自己以外的其他同类型对像上

常常你在修改游戏的时候, 你找到了一个单位的健康, 或是你自己角色的健康, 你会发现一种情况: 如果你把健康相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了。 在这种情况下, 你必须想办法区分自己与敌人。 有时候很简单, 你只要检查最前面的4个字节(函数指针表), 它通常指向一个独一无二的地址, 代表着游戏玩家角色,而有的时候它是一个团体号码, 或者也可能是一个指针, 它指向另一个指针, 该址针又指向下一个指针,搞不好还指向下下一个指针, 最后指向一个玩家名字。总之完全取决于游戏的复杂度, 以及你的运气

最简单的方法是以"找出是什么改写了这个地址"去找出游戏代码,然后使用"分析(新/旧)数据/结构"的功能去比较两种结构。(你的单位和敌人的单位)然后看看是不是可以找到一个区分两者的方法。 当你找到如何区分你和电脑单位的方法后,你可以注入一段自动汇编脚本来检查状态,然后看是要运行游戏的代码还是要做其他的修改。(例如一击必杀) 另外, 你还可以用这个方法去创建一般所说的"字节数组"的字串, 它可以用来搜寻并产生一份所有你的单位或是敌人单位的列表 在这个教程中, 我已经实现了你将会玩到的最惊人的游戏. 这个游戏有4个玩家。2个属于你的阵容, 另外两个属于电脑方。 你的任务是找到改写健康的代码, 并且修改以至于你可以获得胜利,但"绝不能"使用锁定HP的方法. 完成修改以后, 请按 "重新启动游戏并自动执行" 来测试你的修改是否正确

提示1: 健康是一个单浮点数 提示2: 解法不只一种

image.png


1.功能分析

队伍1和队伍2对战,队伍1打不过队伍2; 两个队伍使用的是同一套伤害算法,需要使用汇编区别两个队伍 1.伤害敌方单位可以进行秒杀 2.伤害我方单位回满血

首先可以找出HP的数据地址,通过伤害减少可以获取计算的地方; 监控伤害计算的地方,依次找出4个角色调用的地方 通过异同分析偏移来找出队伍的数据偏移 注入汇编代码修改


2.CE操作

1.找出4个玩家可见HP的数据地址 image.png

2.监控数据变化的地方 image.png 所有角色使用的同一套伤害计算方法,如果直接使用空替代,敌我双方都会变成无敌

3.监控同一个方法哪里调用的

image.png

image.png

4.分析4个地址的数据 image.png

64位的需要进行一轮胜负结算

5.128偏移数据分析 image.png

队伍1的角色属性应该一样,队伍2的也是,但队伍1和队伍2的应该不一样 最终可以确定下来是14的偏移

6.汇编代码

image.png