CE(cheat engine)修改割草游戏《地球防卫军5》作弊CT表
ag871117
2024年06月29日 09:18
收录于文集
共27篇

CE(cheat engine)修改割草游戏《地球防卫军5》作弊CT表

    游戏虽然画面一般,但竟然有20GB大小!!(可能跟150多关有关??)

    存档位置:C:\Users\用户名\Documents\My Games\EDF5\SAVE_DATA

    玩了7-8关后删除!

一、弹药值是4字节,按照游戏界面值搜索即可。

    飞行兵的飞行能量值,是浮点数,按照界面值搜浮点值即可。

    Hp值未找到。

二、CT表:

代码块
JavaScript
自动换行
复制代码
<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>9</ID>
      <Description>"自动附加到游戏进程"</Description>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end -- don't run past this point when adding to table/editing
openProcess("EDF5.exe")
{$asm}
//例如:《刺客信条起源》游戏程序名:ACOrigins.exe,就将这个写在上面。

[DISABLE]
{$lua}
if syntaxcheck then return end -- don't run past this point when adding to table/editing
openProcess("EDF5.exe")
{$asm}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3</ID>
          <Description>"无限弹药"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ 游戏文件名: EarthDefenceForce 5 for PC ;  Exe 版本: 
  脚本作者  : laoz  ;  脚本创建: 2024-06-28
  脚本版本  : 
  汇编说明  :CEAA中,#或(int)表示十进制,$或0x或(hex)表示16进制,(float)表示单浮点数,(double)表示双浮点数
             rax,eax,ax,al; r8,r8d,r8w,r8b; 表示数据长度:8字节,4字节,2字节,字节。其他寄存器类同。
             db,写字节;dw,写2字节;dd,写4字节或单浮点值;dq,写双浮点值或8字节
             mov byte ptr [aaaaa],0x0F  //byte字节,word字(2字节),dword双字(4字节)
             test eax,eax:  等同于 cmp eax,0 ,比较eax是否为0。
             @f,向下转移到最近的 @@ 处;@B,向上转移到最近的 @@ 处。@@,在汇编中,作标号标签用。
             globalalloc()函数定义的地址不需要registersymbol()注册。
  —————————————————————————————————————————————————————————————————————————————
  查找访问**的代码,有大约*条。其中,注入点指令选取的是:*****这1条指令。
  此时:寄存器***值可用来自制指针勾连*****,0x***是偏移量。
        寄存器***值为0,可借用push\pop;浮点寄存器fld\fstp。
}
[ENABLE]
//注入点位置是频繁改写弹药地址的指令。
aobscanmodule(aob_WX_DanYao,EDF5.exe,01 91 E8 08 00 00)
registersymbol(aob_WX_DanYao) //WX_DanYao=拼音=无限弹药
alloc(newmem_WX_DanYao,256,EDF5.exe)
label(return_WX_DanYao)
label(YDM_WX_DanYao) //原代码

//以下人造指针1
alloc(WX_DanYao_P_abc,8)         //用于人造指针,勾连寄存器的值(64位需8字节)
registersymbol(WX_DanYao_P_abc)  //存放**地址
//以上人造指针1

//以下人造指针2
alloc(WX_DanYao_P_xyz,4)         //存放***
registersymbol(WX_DanYao_P_xyz)  //
//以上人造指针2
//==================================================================

newmem_WX_DanYao:
  //以下进行人造指针------------------------------------------------
  push r13
  lea r13,[rcx+000008E8]
  mov [WX_DanYao_P_abc],r13  //指针
  pop r13
  //以上进行人造指针------------------------------------------------

  //以下为原代码——————————————————————————
YDM_WX_DanYao:
  //add [rcx+000008E8],edx
  jmp return_WX_DanYao

aob_WX_DanYao:
  jmp newmem_WX_DanYao
  nop
return_WX_DanYao:

[DISABLE]
aob_WX_DanYao:
  db 01 91 E8 08 00 00
unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: EDF5.exe.text+392090
EDF5.exe.text+39208B: CC                                - int 3
EDF5.exe.text+39208C: CC                                - int 3 
EDF5.exe.text+39208D: CC                                - int 3 
EDF5.exe.text+39208E: CC                                - int 3 
EDF5.exe.text+39208F: CC                                - int 3 
// ---------- INJECTING HERE ----------
EDF5.exe.text+392090: 01 91 E8 08 00 00                 - add [rcx+000008E8],edx
// ---------- DONE INJECTING  ----------
EDF5.exe.text+392096: 4C 8B C1                          - mov r8,rcx
EDF5.exe.text+392099: 83 B9 E8 08 00 00 00              - cmp dword ptr [rcx+000008E8],00
EDF5.exe.text+3920A0: 7F 68                             - jg EDF5.exe.text+39210A
EDF5.exe.text+3920A2: 48 8B 81 C0 00 00 00              - mov rax,[rcx+000000C0]
EDF5.exe.text+3920A9: 48 63 88 18 02 00 00              - movsxd  rcx,dword ptr [rax+00000218]
EDF5.exe.text+3920B0: 83 F9 FF                          - cmp ecx,-01
EDF5.exe.text+3920B3: 75 05                             - jne EDF5.exe.text+3920BA
EDF5.exe.text+3920B5: 0F 57 C0                          - xorps xmm0,xmm0
EDF5.exe.text+3920B8: EB 1A                             - jmp EDF5.exe.text+3920D4
EDF5.exe.text+3920BA: 83 F9 07                          - cmp ecx,07
EDF5.exe.text+3920BD: 7D F6                             - jnl EDF5.exe.text+3920B5
EDF5.exe.text+3920BF: 48 8B 05 BA 7A EC 00              - mov rax,[EDF5.exe+125AB80]
EDF5.exe.text+3920C6: 48 6B D1 38                       - imul rdx,rcx,38
EDF5.exe.text+3920CA: 48 8B 48 38                       - mov rcx,[rax+38]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>4</ID>
              <Description>"弹药"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>[WX_DanYao_P_abc]</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>57</ID>
          <Description>"无限飞行能量"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ 游戏文件名: EDF5.exe ;  Exe 版本: 
  脚本作者  : laoz  ;  脚本创建: 2024-06-28
  脚本版本  : 
  汇编说明  :CEAA中,#或(int)表示十进制,$或0x或(hex)表示16进制,(float)表示单浮点数,(double)表示双浮点数
             rax,eax,ax,al; r8,r8d,r8w,r8b; 表示数据长度:8字节,4字节,2字节,字节。其他寄存器类同。
             db,写字节;dw,写2字节;dd,写4字节或单浮点值;dq,写双浮点值或8字节
             mov byte ptr [aaaaa],0x0F  //byte字节,word字(2字节),dword双字(4字节)
             test eax,eax:  等同于 cmp eax,0 ,比较eax是否为0。
             @f,向下转移到最近的 @@ 处;@B,向上转移到最近的 @@ 处。@@,在汇编中,作标号标签用。
             globalalloc()函数定义的地址不需要registersymbol()注册。
  —————————————————————————————————————————————————————————————————————————————
  查找访问**的代码,有大约*条。其中,注入点指令选取的是:*****这1条指令。
  此时:寄存器***值可用来自制指针勾连*****,0x***是偏移量。
        寄存器***值为0,可借用push\pop;浮点寄存器fld\fstp。
}
[ENABLE]
//注入点位置是频繁访问***地址的指令,是对其"查找什么访问这个地址 "得到。
aobscanmodule(aob_WX_FeiXingNengLiang,EDF5.exe,F3 0F 11 81 0C 02 00 00 76 08 F3 0F 11 91 0C 02 00 00 0F 28 C1 0F)
registersymbol(aob_WX_FeiXingNengLiang) //WX_FeiXingNengLiang=拼音=无限飞行能量
alloc(newmem_WX_FeiXingNengLiang,256,EDF5.exe)
label(return_WX_FeiXingNengLiang)
label(YDM_WX_FeiXingNengLiang) //原代码

//以下人造指针1
alloc(WX_FeiXingNengLiang_P_abc,8)         //用于人造指针,勾连寄存器的值(64位需8字节)
registersymbol(WX_FeiXingNengLiang_P_abc)  //存放**地址
//以上人造指针1
//==================================================================

newmem_WX_FeiXingNengLiang:



  //以下为原代码——————————————————————————
YDM_WX_FeiXingNengLiang:
  //movss [rcx+0000020C],xmm0
  jmp return_WX_FeiXingNengLiang

aob_WX_FeiXingNengLiang:
  jmp newmem_WX_FeiXingNengLiang
  nop 3
return_WX_FeiXingNengLiang:

[DISABLE]
aob_WX_FeiXingNengLiang:
  db F3 0F 11 81 0C 02 00 00
unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: EDF5.exe.text+2F8353

EDF5.exe.text+2F831D: 41 83 F8 01                    - cmp r8d,01
EDF5.exe.text+2F8321: 75 08                          - jne EDF5.exe.text+2F832B
EDF5.exe.text+2F8323: F3 0F 59 89 F4 1C 00 00        - mulss xmm1,[rcx+00001CF4]
EDF5.exe.text+2F832B: F3 0F 10 81 0C 02 00 00        - movss xmm0,[rcx+0000020C]
EDF5.exe.text+2F8333: 0F 2F C8                       - comiss xmm1,xmm0
EDF5.exe.text+2F8336: 72 0C                          - jb EDF5.exe.text+2F8344
EDF5.exe.text+2F8338: C7 81 0C 02 00 00 00 00 00 00  - mov [rcx+0000020C],00000000
EDF5.exe.text+2F8342: EB 24                          - jmp EDF5.exe.text+2F8368
EDF5.exe.text+2F8344: F3 0F 10 91 08 02 00 00        - movss xmm2,[rcx+00000208]
EDF5.exe.text+2F834C: F3 0F 5C C1                    - subss xmm0,xmm1
EDF5.exe.text+2F8350: 0F 2F C2                       - comiss xmm0,xmm2
// ---------- INJECTING HERE ----------
EDF5.exe.text+2F8353: F3 0F 11 81 0C 02 00 00        - movss [rcx+0000020C],xmm0
// ---------- DONE INJECTING  ----------
EDF5.exe.text+2F835B: 76 08                          - jna EDF5.exe.text+2F8365
EDF5.exe.text+2F835D: F3 0F 11 91 0C 02 00 00        - movss [rcx+0000020C],xmm2
EDF5.exe.text+2F8365: 0F 28 C1                       - movaps xmm0,xmm1
EDF5.exe.text+2F8368: 0F 2F C8                       - comiss xmm1,xmm0
EDF5.exe.text+2F836B: 76 0A                          - jna EDF5.exe.text+2F8377
EDF5.exe.text+2F836D: C7 81 00 02 00 00 01 00 00 00  - mov [rcx+00000200],00000001
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>53</ID>
      <Description>"———————————————脚本———————————"</Description>
      <Options moAlwaysHideChildren="1" moManualExpandCollapse="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>38</ID>
      <Description>"———————————————指针———————————"</Description>
      <Options moAlwaysHideChildren="1" moManualExpandCollapse="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>55</ID>
          <Description>"模板"</Description>
          <Options moHideChildren="1" moRecursiveSetValue="1" moManualExpandCollapse="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>52</ID>
              <Description>"——————————————————————————"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>51</ID>
              <Description>"——————————————————————————"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>54</ID>
              <Description>"扫描"</Description>
              <Options moHideChildren="1" moRecursiveSetValue="1" moManualExpandCollapse="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>50</ID>
      <Description>"——————————————————————————"</Description>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>替换了 add [rcx+000008E8],edx</Description>
      <AddressString>EDF5.exe+393090</AddressString>
      <Before>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
      </Before>
      <Actual>
        <Byte>01</Byte>
        <Byte>91</Byte>
        <Byte>E8</Byte>
        <Byte>08</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>4C</Byte>
        <Byte>8B</Byte>
        <Byte>C1</Byte>
        <Byte>83</Byte>
        <Byte>B9</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>替换了 movss [rcx+0000020C],xmm0</Description>
      <AddressString>EDF5.exe+2F9353</AddressString>
      <Before>
        <Byte>5C</Byte>
        <Byte>C1</Byte>
        <Byte>0F</Byte>
        <Byte>2F</Byte>
        <Byte>C2</Byte>
      </Before>
      <Actual>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>11</Byte>
        <Byte>81</Byte>
        <Byte>0C</Byte>
        <Byte>02</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>76</Byte>
        <Byte>08</Byte>
        <Byte>F3</Byte>
        <Byte>0F</Byte>
        <Byte>11</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
复制成功