CE Auto Assembler 教程

原文:摘自 Cheat EngineHelp (v6.1)
翻譯: axdx

自動匯編可以讓你用寫腳本的方式,在不同的地址寫入匯編代碼。自動匯編可以在 內存瀏覽 ”(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

R
EADMEM示例:
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

學習自動匯編最好的方法絕對就是練習。在開始的時候,跟著訓練教程,一步步練習,並且運用到遊戲上。用的越多,你就可以寫得越快越強大。雖然它一開始看起來令人生畏〈像一門編程語言〉,但是如果你對遊戲修改抱有認真的態度,自動匯編將會是你最好的新朋友。
     http://forum.gamer.com.tw/C.php?page=1&bsn=02450&snA=1125
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值