CheatMaker 论坛

注册

 

发新话题 回复该主题

[教程] ArtMoney - 按公式查找(三) [复制链接]

1#
按公式查找,最强大的查找方式!例如,用“内存转储”存储三份内存。 分别代表同一对象的三个不同的状态。 这三个状态命名为M1、M2、M3。 在M1和M3状态中,生命条的长度相等。 用公式“(M1<>M2)and(M2<>M3)and(M1=M3)”查找。 你就可以找到生命条的地址。

所谓的公式是一个逻辑表达式,它包含下列内容:

  • 用括号()括起来的其他表达式。
  • 变量(M1、M2等等)——对象的状态(内存转储或地址/值的集合)。
  • 一组变量,如M[2,4]——对象在第2步和第4步时的状态。例如 M1 <> M[2,4] 等价于 (M1 <> M2) and (M1 <> M4)
  • 数值(100,-15,Ah,11.2)——只有100<=M1<=300这种表达式能包含两个数值
  • 文本('Boss',"Good")——仅用于M1='Boss'这种表达式
  • 条件(“<”、“>”、“=”等等)——例如 M1=1、 M2>=100、 1<=M3<=2,或对象的两个状态的比较M1>M2、M1<>M2。
  • 数学运算符(“+”、“-”)——仅用于M2>=M1+100这种表达式。
  • AND运算符——交集运算。表达式1和表达式2都成立的地址集合。
  • OR运算符——并集运算。表达式1或表达式2有一个成立的地址集合。
公式中可以含有任意多对括号。 括号里的内容必须也是一个逻辑表达式。表达式的结果必须是地址/值的集合。

注意!AND、OR运算符返回的是地址的集合,不能用于值的比较。因此这种运算必须在最后执行。例如,100<=(M1 and M2)<=300 ——将会返回错误的结果。因为AND运算后不能确定每个地址对应的值。正确的写法是(100<=M1<=300)and(100<=M2<=300)。

注意!M1>M2、 M2<>M1这种表达式永远返回第一个变量中地址的值。例如,(M1<>M2)>0 等价于 (M1>0)<>M2

M1=M2这种表达式返回正确的地址/值,因为条件本来就是值相等。例如,(M1=M2)>0 等价于 (M1>0)=(M2>0)

假设你要查找准确值,你有三个状态,对应的值分别是15000、14460、15100,则应使用如下公式:(M1=15000)and(M2=14460)and(M3=15100)

假设你要查找有范围的数值, 你有两个状态,对应的值约为100、300。则应使用如下公式:(99.9<=M1<=100.1)and(199.9<=M2<=200.1)

假设你要查找无法确定的数值(生命条),你有4个状态,对应的生命值约为100%、80%、60%、90%,则应使用如下公式:(M1 > M2)and(M1 > M3)and(M1 > M4)and(M2 > M3)and(M2 < M4)and(M3 < M4)

假设你要查找加密的数值,你有4个状态,分别对应4个不同的数值,则应使用如下公式:
(M1 <> M2)and(M1 <> M3)and(M1 <> M4)and(M2 <> M3)and(M2 <> M4)and(M3 <> M4)
或这种结构
(M1 <> M[2,3,4])and(M2 <> M[3,4])and(M3 <> M4)

另外:推荐在查找之前选中 使用“撤销/重做查找”功能 这个选项。
分享 转发
我来人间一趟 奔着自由与光
TOP
2#

不懂帮顶!
TOP
3#

感谢分享这个方法啊,我在想利用这个查找方法能否找到游戏中主角无敌的地址呢,在以前的老游戏中主角无敌都有明显的特征,比如身上会闪光或者出现一些明显的标志,但是在现在一些大型3D游戏中程序设计的更加复杂,内存地址也大了很多,查找起来非常困难,又特别是像主角无敌这类不太好判断的地址。要是利用ArtMoney  按公式查找应该怎么找到无敌地址呢,求教
TOP
发新话题 回复该主题