2017-07-27 33 views
0

在作弊引擎中避免搜索值并设置它们(我解释了我需要的):我知道你可以找到adreses的指针,并创建培训师,但问题是我的公司使用作弊引擎的应用程序更新很多,每次指针都会改变。 意思是,我必须每周多次创建新的培训师。基本上,几乎每天都有..如何在没有创建培训师的情况下自动化作弊引擎价值搜索/设置

我想自动化这个,因为我需要的,是很容易的:

1)打开作弊引擎和选择的应用程序的名字(example.exe)

2)查找与equel至100.0

3)等待2秒(这样我就可以改变应用程序的东西)

4)发现已更改为200.0

浮点值浮点值

5)等待2秒(这样我就可以在应用程序改变的东西)

6)发现,现在已经在这一点上改变为300.0

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

正如你所看到的,手动完成这项工作非常烦人,而且我几乎不想每天都创建3个培训师。只是当天使用它们像3x。

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

我不是要求完整的代码,但一些详细的信息与链接将高度赞赏,因为我已经使用作弊引擎很多,我知道很多关于编程,我有0经验和关于作弊引擎的知识脚本。

+0

当我用来制作魔兽机器人时,这可以通过映射出内存中的各种结构来完成。例如,我们会发现字符列表存储在某个结构的偏移量处,并且从那里开始,我们可以为其成员项目绘制出vtable ... – Thebluefish

+0

您是否使用作弊引擎执行此操作? – PragmaticEd

+0

我使用作弊引擎将它们映射出来并进行手动工作,但它并不是真正适合“正确”完成这类工作的工具。 – Thebluefish

回答

0

是否可以自动执行此操作?是的,它会。您可以通过至少创建一个作弊引擎脚本或创建教练来自动执行此操作。你的问题还表明,你想在没有创建培训师的情况下做到这一点,所以不需要。

Cheat Engine LUA或简单的作弊引擎脚本框架包括你想要做的一切功能:

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 

您所请求的链接是官方作弊引擎论坛的LUA and Auto Assembler Tutorial section

当您正在进行的游戏更新频繁时,指针成为扭转和更新每个补丁的负担是正确的。解决方案是使用字节签名扫描阵列来定位访问您想要访问的变量的汇编指令。不要担心CE您也可以参考,AOBScan()。

0

大多数情况下,您可以创建一个处理更新的脚本。例如,一旦找到地址,请右键单击并确定“查找访问此地址的内容”。等待一些东西来改变这个值,弹出的窗口会显示改变该地址的代码。右键单击其中一个结果并打开反汇编程序。比方说,它的行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注入'。将它保存到你的表格并关闭窗口,然后打开新的脚本。在顶部附近会有一条以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指令。

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

相关问题