Cheat Engine 6.1 AutoAssembler Help
原文:摘自Cheat EngineHelp (v6.1)
翻譯:axdx
From: [Reserved] - Cheat Engine 6.1 AutoAssembler Help
自動彙編可以讓你用寫腳本的方式,在不同的地址寫入彙編代碼。自動彙編可以在」內存瀏覽」(MemoryView)的」工具」(Tools)中找到。
有三個特殊命令可以使用:ALLOC,LABEL,以及FULLACCESS。使用LABEL,你可以事先宣告一個名子,並把它附給一個地址,接下來,你就可以用這個名子代替地址來使用。基本上,ALLOC也是相同的功用,只不過ALLOC還可以分配內存給你。
使用指令:
LABEL(標籤名):讓標籤名可以被當作一個地址使用。
ALLOC(分配的內存標籤名, 字節數):使用方式同LABEL,同時分配內存,指向被分配的內存地址。
ALLOC(分配的內存標籤名, 字節數, 優先考慮的內存區域):同上。
DEALLOC(分配的內存標籤名):釋放使用ALLOC分配的內存空間。不管DEALLOC被放在腳本的甚麼地方,它永遠是最後才被運行,且只在所有腳本分配的空間都被釋放的時候,它才會真正地釋放內存。只適用在添加到作弊列表中的腳本〈使用在作弊取消時〉。
FULLACCESS(地址, 字節數): 使指定的地址,至少所需的字節數,擁有可讀、可寫、可運行的屬性。
REGISTERSYMBOL(符號名):將符號名加入到使用者自定義的符號表中。該符號名可以在作弊列表以及內存瀏覽中,被視為一個地址使用。符號名被使用前必須在腳本中先宣告。
UNREGISTERSYMBOL(符號名):從使用者自定義符號表中,刪除此符號名。即使符號名不存在,也不會產生錯誤信息。
DEFINE(名子, 任意字符串):將指定的名子取代為任意字符串。
INCLUDE(檔案名):在此命令的所處位置,包含進另一個自動彙編的腳本檔案。
LOADBINARY(地址, 檔案名):在指定的地址載入一個二進制檔案。
CREATETHREAD(地址):於目標進程中,在指定的地址創建線程。
LOADLIBRARY(檔案名):注入指定的DLL到目標進程中。
READMEM(地址, 字節數):在此命令的所處位置,複製寫入指定的地址的資料。相當於內存複製。
GLOBALALLOC(名子, 字節數):分配內存空間,並且註冊一個符號名到使用者自定義符號表中。因此可以在作弊列表的另一個腳本中使用該名子。在另一個腳本中,對同一個名子使用GLOBALALLOC,將不會再次分配新的內存,而是使用已經分配過的內存〈或者,如果不存在已經分配的內存,則會分配新的內存〉。
ASSERT(地址, 字節數組):檢查指定地址的字節數組,是否與給定的字節數組相同。如果不相同,自動彙編腳本將不會運行。
AOBSCAN(名子, 字節數組):在內存中搜尋給定的字節數組〈支援通配符〉,並將找到的地址附給指定的名子。如果沒有找到地址,自動彙編腳本不會運行。通配符:使用??或*代表未知字節。
數值表達方式:
一般來說,在自動彙編腳本中,所有的數值都是以十六進制來表示的,不過也有方法可以取代,你可以輸入十進制數值,甚至也可以是浮點數值。
舉例來說,一個十進制數值100可以寫成十六進制的64,不過你也可以寫成#100,或是 (int)100。
對於浮點數值像是100.1,你可以寫成 (float)100.1。
對於double雙浮點數,你可以寫成 (double)100.1。
基本示例:
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [00580120],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
LABEL示例:
label(mylabel)
00451029:
jmp 00410000
nop
nop
nop
mylabel:
00410000:
mov [00580120],esi
mov [esi+80],ebx
xor eax,eax
jmp mylabel
ALLOC示例:
alloc(alloc1,4)
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [alloc1],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
ALLOC以及LABEL示例:
alloc(alloc1,4)
label(mylabel)
00451029:
jmp 00410000
nop
nop
nop
mylabel:
00410000:
mov [alloc1],esi
mov [esi+80],ebx
xor eax,eax
jmp mylabel
FULLACCESS示例:
FULLACCESS(00400800,4) //00400800通常是只讀、不可運行,此行使它可寫、可運行
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [00400800],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
DEFINE示例:
DEFINE(clear_eax,xor eax,eax)
00400500:
clear_eax
READMEM示例:
alloc(x,16)
alloc(script,2048)
script:
mov eax,[x]
mov edx,[x+c]
ret
x:
readmem(00410000,16) //將地址00410000的內容放至地址X處
AOBSCAN示例:
aobscan(codestart,8b 4c 24 24 ?? ?? 0c d8 07 00)
[ENABLE]
codestart+ 0A:
db 90 9090 90 90 90
[DISABLE]
codestart+ 0A:
jne0054233c
//Alt:db 0F 85 7A 01 00 00
翻譯:axdx
From: [Reserved] - Cheat Engine 6.1 AutoAssembler Help
自動彙編可以讓你用寫腳本的方式,在不同的地址寫入彙編代碼。自動彙編可以在」內存瀏覽」(MemoryView)的」工具」(Tools)中找到。
有三個特殊命令可以使用:ALLOC,LABEL,以及FULLACCESS。使用LABEL,你可以事先宣告一個名子,並把它附給一個地址,接下來,你就可以用這個名子代替地址來使用。基本上,ALLOC也是相同的功用,只不過ALLOC還可以分配內存給你。
使用指令:
LABEL(標籤名):讓標籤名可以被當作一個地址使用。
ALLOC(分配的內存標籤名, 字節數):使用方式同LABEL,同時分配內存,指向被分配的內存地址。
ALLOC(分配的內存標籤名, 字節數, 優先考慮的內存區域):同上。
DEALLOC(分配的內存標籤名):釋放使用ALLOC分配的內存空間。不管DEALLOC被放在腳本的甚麼地方,它永遠是最後才被運行,且只在所有腳本分配的空間都被釋放的時候,它才會真正地釋放內存。只適用在添加到作弊列表中的腳本〈使用在作弊取消時〉。
FULLACCESS(地址, 字節數): 使指定的地址,至少所需的字節數,擁有可讀、可寫、可運行的屬性。
REGISTERSYMBOL(符號名):將符號名加入到使用者自定義的符號表中。該符號名可以在作弊列表以及內存瀏覽中,被視為一個地址使用。符號名被使用前必須在腳本中先宣告。
UNREGISTERSYMBOL(符號名):從使用者自定義符號表中,刪除此符號名。即使符號名不存在,也不會產生錯誤信息。
DEFINE(名子, 任意字符串):將指定的名子取代為任意字符串。
INCLUDE(檔案名):在此命令的所處位置,包含進另一個自動彙編的腳本檔案。
LOADBINARY(地址, 檔案名):在指定的地址載入一個二進制檔案。
CREATETHREAD(地址):於目標進程中,在指定的地址創建線程。
LOADLIBRARY(檔案名):注入指定的DLL到目標進程中。
READMEM(地址, 字節數):在此命令的所處位置,複製寫入指定的地址的資料。相當於內存複製。
GLOBALALLOC(名子, 字節數):分配內存空間,並且註冊一個符號名到使用者自定義符號表中。因此可以在作弊列表的另一個腳本中使用該名子。在另一個腳本中,對同一個名子使用GLOBALALLOC,將不會再次分配新的內存,而是使用已經分配過的內存〈或者,如果不存在已經分配的內存,則會分配新的內存〉。
ASSERT(地址, 字節數組):檢查指定地址的字節數組,是否與給定的字節數組相同。如果不相同,自動彙編腳本將不會運行。
AOBSCAN(名子, 字節數組):在內存中搜尋給定的字節數組〈支援通配符〉,並將找到的地址附給指定的名子。如果沒有找到地址,自動彙編腳本不會運行。通配符:使用??或*代表未知字節。
數值表達方式:
一般來說,在自動彙編腳本中,所有的數值都是以十六進制來表示的,不過也有方法可以取代,你可以輸入十進制數值,甚至也可以是浮點數值。
舉例來說,一個十進制數值100可以寫成十六進制的64,不過你也可以寫成#100,或是 (int)100。
對於浮點數值像是100.1,你可以寫成 (float)100.1。
對於double雙浮點數,你可以寫成 (double)100.1。
基本示例:
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [00580120],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
LABEL示例:
label(mylabel)
00451029:
jmp 00410000
nop
nop
nop
mylabel:
00410000:
mov [00580120],esi
mov [esi+80],ebx
xor eax,eax
jmp mylabel
ALLOC示例:
alloc(alloc1,4)
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [alloc1],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
ALLOC以及LABEL示例:
alloc(alloc1,4)
label(mylabel)
00451029:
jmp 00410000
nop
nop
nop
mylabel:
00410000:
mov [alloc1],esi
mov [esi+80],ebx
xor eax,eax
jmp mylabel
FULLACCESS示例:
FULLACCESS(00400800,4) //00400800通常是只讀、不可運行,此行使它可寫、可運行
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [00400800],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
DEFINE示例:
DEFINE(clear_eax,xor eax,eax)
00400500:
clear_eax
READMEM示例:
alloc(x,16)
alloc(script,2048)
script:
mov eax,[x]
mov edx,[x+c]
ret
x:
readmem(00410000,16) //將地址00410000的內容放至地址X處
AOBSCAN示例:
aobscan(codestart,8b 4c 24 24 ?? ?? 0c d8 07 00)
[ENABLE]
codestart+ 0A:
db 90 9090 90 90 90
[DISABLE]
codestart+ 0A:
jne0054233c
//Alt:db 0F 85 7A 01 00 00
超詳細的 >_< 我想請教一個問題
回覆刪除就是
EX:
當我要更新此數據:
00451029:
jmp 00410000
nop
nop
nop
00410000:
mov [00400800],esi
mov [esi+80],ebx
xor eax,eax
jmp 00451031
我要更新00451029
我找到00451029之後 是要在它上面找3個當成是AOB更新的位置查詢?? 還是他下面3個當作AOB查詢(就是要用紙鈔下來要拿來更新城新數據的那個東西ex: 00 A1 DB ?? ?? ?? 這個東西)??
照你的意思的話應該是下面三個...
刪除那個...可以用滑鼠複製的不用紙抄 =口="
所以我要更新就是找他的下面3個就OK?? 不管是更新哪個那種數據都找他下面3個?
刪除請問大大
回覆刪除CE一樣是用來修改楓之谷的動態DLL
就是免費的外掛嗎?
嚴格來說他不是"掛"
刪除他是遊戲修改引擎,算是開發工具
他不是DLL而是EXE...
谢谢!~≖‿≖✧
回覆刪除学习了~学到了