游戏虽然画面一般,但竟然有20GB大小!!(可能跟150多关有关??)
存档位置:C:\Users\用户名\Documents\My Games\EDF5\SAVE_DATA
玩了7-8关后删除!


一、弹药值是4字节,按照游戏界面值搜索即可。
飞行兵的飞行能量值,是浮点数,按照界面值搜浮点值即可。
Hp值未找到。
二、CT表:
<?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>