如何在不创建培训师的情况下自动化作弊引擎价值搜索/设置

时间:2017-07-27 19:35:28

标签: automation cheat-engine

是否有可能避免在作弊引擎中搜索值并设置它们(我解释,我需要吼叫)?我知道你可以找到adreses的指针并创建培训师,但问题是应用程序,我使用了欺骗引擎,我的公司得到了很多更新,指针每次都在变化。 意思是,我必须每周多次创建新的培训师。基本上几乎每天......

我想自动化这个,因为,我需要的东西很简单:

1)打开作弊引擎并按名称选择应用程序(example.exe)

2)查找等于100.0

的浮点值

3)等待2秒(所以我可以在app中更改内容)

4)找到已更改为200.0的浮点值

5)等待2秒(所以我可以在app中更改内容)

6)找到现在已更改为300.0的浮点值

7)此时只会找到3个值。所以我需要选择最后一个并将其冻结到500.0,所以即使应用程序将其更改回300.0,它也会再次设置为500.0。

正如您所看到的,手动执行此操作非常烦人,而且我几乎不想每天创建3个培训师。只是为了那天3x使用它们。

所以我的问题是,是否可以实现自动化?

我不是要求完整的代码,但是一些关于链接的详细信息会受到高度赞赏,因为我使用了大量的作弊引擎,而且我对编程非常了解,我有0个关于作弊引擎脚本的经验和知识。

2 个答案:

答案 0 :(得分:3)

是否有可能实现自动化?是的,它会。您可以通过至少创建作弊引擎脚本或创建培训师来自动执行此操作。你的问题还说明你想要在不创建培训师的情况下这样做,所以没有。

Cheat Engine LUA或简单的Cheat Engine脚本框架包含您想要做的所有事情的功能:

openProcess()   //to get process access rights for the process
MemScan::firstScan()  //to scan for 100.0f
MemScan::nextScan()  //to filter/rescan the results
sleep()  //to pause execution
memrec_freeze()  //to freeze

您要求的链接是官方Cheat Engine论坛的LUA and Auto Assembler Tutorial section

当您正在进行频繁更新的游戏时,您指出反转和更新每个补丁的负担是正确的。解决方案是使用字节签名扫描数组来定位访问您想要访问的变量的汇编指令。不要担心CE也有你,AOBScan()。

答案 1 :(得分:2)

大多数情况下,您可以创建一个处理更新的脚本。例如,一旦找到地址,右键单击并“找出访问此地址的内容”。等待某些内容更改值,弹出的窗口将显示更改该地址的代码。右键单击其中一个结果并打开反汇编程序。让我们说这是movsd xmm0,[ecx]行:

8B 01 - mov eax,[ecx] 89 06 - mov [esi],eax EB 54 - jmp Game.exe+45951 F2 0F10 01 - movsd xmm0,[ecx] F2 0F11 06 - movsd [esi],xmm0

选择该行并按CTRL + A打开自动汇编窗口。然后从模板菜单中选择'AOB Injection'。将其保存到您的表并关闭窗口,然后打开该新脚本。顶部附近会有一行以aobscanmodule开头。如果您在那里看到错误,则无法确定该内存位置的唯一签名。如果没有错误,那么当游戏更新并且地址发生变化时,它仍应该能够找到它。应该有一个看起来像这样的部分:

code: movsd xmm0,[ecx] movsd [esi],xmm0 jmp return

这是重新定位的代码。游戏中的原始代码被jmp替换为组装此代码的新分配的内存区域,然后jmp return返回到原始内存区域中的代码之后。

你需要了解一下装配。指令movsd xmm0,[ecx]将ecx指向的存储单元中的浮点值加载到xmm0寄存器中。这会访问您关心的内存位置,因此您可以像这样设置该值:

code: mov [ecx],(float)500.0 // set value to 500.0 movsd xmm0,[ecx] movsd [esi],xmm0 jmp return

现在,只要程序试图运行访问该内存位置的代码,它就会跳转到新的内存位置,将该地址的值更新为500.0,然后运行原始代码并跳回。

aobscanmodule行确实显示错误时,意味着有太多代码段过于相似。逻辑向后看并转发几行汇编并查找十六进制字节,忽略在游戏更新时可能会改变的地址。例如,当游戏更新时,代码中的任何内容都不会改变,没有指针,只有一个非常接近的jmp指令。

要特别小心,您可能想要停止找到访问该地址的代码的窗口,然后右键单击该行代码并选择“找出该指令访问的地址”。如果窗口中出现多个地址,那么你就会在没有更多帮助的情况下搞砸了,因为它是一个通用的代码片段,用于获取更多的值,而不仅仅是你关心的值。