CE自(zì)動匯編(biān)直譯器下載 最新軟件|熱門排行|軟件分類|軟件專題|廠(chǎng)商大全

您(nín)的位置: 首頁編(biān)程開發編程工具 → CE自動(dòng)匯(huì)編:AA引擎通用DLL v1.20 b13 綠色(sè)版

CE自動匯編:AA引擎通(tōng)用DLL

v1.20 b13 綠色版 CE自(zì)動(dòng)匯編(biān):AA引擎通(tōng)用DLL 網友評分(fèn):8

同類相關(guān)軟件

軟件介紹

軟件標簽: dll 引擎(qíng)

CE自動匯編直譯器: AA引擎(qíng) 各語言(yán)通(tōng)用(yòng)DLL - aa_engine.dll

三個(gè)函數, 原(yuán)型如下:

1). 運行CE AA腳(jiǎo)本

bool AutoAssemble(HANDLE hProcess, char * aa_script, int command);

1). hProcess: 遊戲句(jù)柄(bǐng)

2). aa_script: CE AA(自(zì)動匯編)腳本(běn)

3). command: 1為運行[ENABLE], 0為(wéi)運行[DISABLE]

4). 返回: 運(yùn)行成功返回真, 失敗返回假

2). 取地址

DWORD GetAddress(HANDLE hProcess, char * address_line);

1). hProcess: 遊戲句(jù)柄

2). address_line: 地(dì)址表達式, 支持指針+偏移+模塊基址+AA腳(jiǎo)本做的人造指(zhǐ)針+遊戲空間中存在的API

3). 返(fǎn)回: 成功返(fǎn)回地址, 失敗返回0

3). 取AA引擎版本號(hào)

char * Ver();

返回版本號(hào)(文本(běn))

易語(yǔ)言數據類型對(duì)照:

int, DWORD, HANDLE = 整數型

char * = 文本型 或 字節集型(傳址打勾)

bool = 邏輯型(xíng) 或 整數型

VC2008動態(tài)調(diào)用DLL方(fāng)法:

HMODULE hDLL = LoadLibrary(TEXT("aa_engine.dll"));  // 載入DLL

// 調用(yòng)AutoAssemble

typedef BOOL (FAR WINAPI *PROC1)(HANDLE,char*,int);

PROC1 pAutoAssemble=(PROC1)GetProcAddress(hDLL,"AutoAssemble");

(pAutoAssemble)(hProcess,aa_script,1);

// 調(diào)用GetAddress

typedef DWORD (FAR WINAPI *PROC2)(HANDLE,char*);

PROC2 pGetAddress=(PROC2)GetProcAddress(hDLL,"GetAddress");

DWORD addr = (pGetAddress)(hProcess,addr_line);

// 調用Ver

typedef char *(FAR WINAPI *PROC3)();

PROC3 pVer=(PROC3)GetProcAddress(hDLL,"Ver");

char *ver = (pVer)();

FreeLibrary(hDLL);  // 釋(shì)放DLL

--------------------------------------------------------------------------------------------------

更新beta 12:

1. (flaot)和(double)轉換

2. DQ命令(lìng)

更新beta 13:

1. 匯編代碼自動修正功能增加一個(gè)錯誤處理

--------------------------------------------------------------------------------------------------

<< 關(guān)於AA引擎 >>

1). 使用(yòng)標準WINAPI(__stdcall)格式導出(chū)函數, 各語言以一般宣告API的方式皆可調用(yòng)

2). 需要 VS2008SP1運行庫(kù) (僅4MB)

3). 部分功能需要Vista或XP SP1以(yǐ)上運行環境

4). 可任意改(gǎi)名, 例(lì)如(rú)改成(chéng) XXX修改器.dll

5). 已使用(yòng)UPX 3.08壓(yā)縮加殼, 無毒(dú)

如(rú)有任何誤報, 可自行脫殼, 方(fāng)法(fǎ)為 upx.exe -d aa_engine.dll

脫殼(ké)後(hòu), 原(yuán)大小約為 160k

6). AA引(yǐn)擎由(yóu)CE 5.61的Delphi源碼(mǎ)中, 摘除並移植AA腳本直(zhí)譯器

外加OD的匯編編譯器(qì)(disasm)源碼(mǎ)作為心髒

本人axdx隻負責進行移(yí)植整合手術, 所有技術源自CE與OD

7). AA引擎原開發目的為(wéi)一個CheatMaker插件(jiàn)PC_AA.dll

8). 特別感謝: 銀河漫步, 十(shí)六夜?流歌

--------------------------------------------------------------------------------------------------

<< AutoAssemble 函數說明 >>

一、目前已支持的(de)CE AA功能如下

alloc

label

registersymbol

unregistersymbol

globalalloc

fullaccess      (有某種限製, 不是(shì)所(suǒ)有內存區都有效)

aobscan         (支持使用??或*表(biǎo)示未知字節)

createthread    (此(cǐ)命令不管寫在哪(nǎ)裏, 永(yǒng)遠是腳本中最(zuì)後運行(háng))

define

dealloc

assert          (支持使用??或*表示未知(zhī)字節)

readmem

地址:行(háng)可用地址表達式   (請參看 GetAddress 函數說明)

DB, DW, DD, DQ 命令, 分(fèn)別為單, 雙, 四, 八字(zì)節數組(zǔ)寫入

#123            表示十進製

(int)123        同(tóng)樣表(biǎo)示十進製

(float)         單(dān)精(jīng)度浮點數(4字節)

(double)        雙精度浮點(diǎn)數(8字節)

例:

mov [eax],(float)3.5

dd (float)123.5 (float)100

dq (double)200.75

注釋方式有(yǒu)三種:  //單行(háng)   /*多行*/   {多行}

支持調用(yòng)遊戲(xì)空間(jiān)中存在的 Win API 符號(hào)

例:

在遊戲(xì)中調用兩個API

先調用MessageBoxA顯示一個"BYE BYE"信息

接(jiē)著調用ExitProcess結束(shù)遊戲(xì)進程(chéng)

[enable]

alloc(newmem,4096)

label(text)

newmem:

push 0

push 0

push text

push 0

call messageboxA

push 0

call exitprocess

ret

text:

db 42 59 45 20 42 59 45 0  // "BYE BYE"

createthread(newmem)

[disable]

dealloc(newmem)

二、自定義符號表與人造指針

在AA腳本中可用如下方式加入(rù)自(zì)定義符(fú)號

registersymbol(pointer)

alloc(pointer,4)

或者也可隻用一行

globalalloc(pointer,4)

以上兩種方式將pointer這個(gè)符(fú)號加入自定義(yì)符號表

並(bìng)且動態分配了4字節的(de)內存空間給pointer

我們不必知(zhī)道這個4字節空間的正確地址

我們隻(zhī)要用(yòng)pointer這個(gè)名稱就可以代表該地址(zhǐ)了(le)

接下來可以(yǐ)把pointer當(dāng)做人造指針, 在(zài)其內(nèi)放入遊(yóu)戲數據的有效地址

由於(yú)自(zì)定義符號表(biǎo)為所有使用AA引(yǐn)擎的(de)腳(jiǎo)本共(gòng)享

包含(hán)所(suǒ)有其他AA腳本, 在本腳本(běn)啟動(dòng)以後(hòu), 都可以直接以[pointer]當(dāng)做地址使(shǐ)用(yòng)

由於pointer是代表著由alloc分配的動態地址

人造指針實際(jì)是(shì)存放在地址pointer處

因此一(yī)般都(dōu)是(shì)以[pointer]的(de)形式來使用(yòng)

也可(kě)以使用GetAddress函(hán)數, 直(zhí)接取(qǔ)得(dé)pointer自(zì)身(shēn)的地址, 或其內(nèi)人造指針[pointer]的地址

當不再(zài)使用pointer的時候, 可(kě)以如下方式取消pointer符號(hào)名及分配的內存空間(jiān)

unregistersymbol(pointer)

dealloc(pointer)

七、匯編代碼編(biān)寫注意:

由於(yú)使(shǐ)用了OD的匯(huì)編編譯器(qì), 其匯編代碼格式較CE嚴格

不過我已(yǐ)經加入了(le)匯編(biān)代碼自動修正(zhèng)功能

例如原先(xiān)必須寫為 mov dword ptr [exa+ebx*4+0c],0c8 的(de)代碼(mǎ)

已經可以(yǐ)直接寫為 mov [eax+ebx*4+c],c8

如果還是出現(xiàn)編譯錯誤, 表示自動修(xiū)正無法修(xiū)正, 請依下列方式自(zì)行修正代(dài)碼

1). 出現"Unknown identifier"編譯錯誤(wù)時:

可(kě)能為匯(huì)編(biān)編(biān)譯器無法正確識別寄存器, 指令(lìng), 與數值(zhí)

解決方法(fǎ)為, 所有數值(zhí), 如果是A到F等英文(wén)字母開(kāi)頭的, 前(qián)麵加一個0

如c要(yào)寫(xiě)成0c, A8B300要寫成0A8B300

2). 出現"Command does not support given operands"

或"Unrecognized command"錯誤(wù)時:

可能為數據長度(dù)錯誤

一(yī)般情況, 如果沒有指名長度, 則將一律視(shì)為(wéi)4字節長度

例如 mov [esi+30],3f800000

將自動轉換為 mov dword ptr [esi+30],3f800000 再送給編譯器

若出現這個編譯錯誤, 則(zé)請自行(háng)指定正確的數據長度(dù)

數據(jù)長度的表示(shì)法有以(yǐ)下幾種:

單字節 byte ptr

雙字節 word ptr

四字節 dwrod ptr

八、目前不支持(chí)的CE AA功能:

loadlibrary

loadbinary

include

九、外部代碼區:

CE的AA腳(jiǎo)本分(fèn)為三個區段: [ENABLE], [DISABLE], 外部代碼(outer codes)區

外部代碼區指的是在(zài)[ENABLE]之前的區(qū)域(yù), 或可(kě)稱為前置區

放在這裏的代碼, 為無論選(xuǎn)擇[ENABLE]或(huò)[DISABLE], 都(dōu)會被運行

會放在這裏的一般是(shì)aobscan

十、本(běn)AA引(yǐn)擎專有功能:

assert2(地址(zhǐ),字節(jiē)數組,"選填錯誤信息")

功能同 assert, 可選填錯(cuò)誤信(xìn)息

例: assert2(00081048,12 ff 3c 78,"Wrong Game Version!")

aobscan2(名稱(chēng),字節數組,起始(shǐ)地址,結束地址,第幾個命中目標,"選填錯誤信息!")

功能同 aobscan, 設定項目較多(duō), 若不要顯示錯(cuò)誤(wù)信息, 則使用 "" 表示無信息

例1: aobscan2(aobstart,12 34 56 78,00400000,7FFFFFFF,1,"Wrong Game Version!")

例(lì)2: aobscan2(aobstart,12 ff 3c 78,0,7FFFFFFF,1,"")

上例(lì)2等同(tóng)於aobscan

十一、其他注意事項:

AA引擎以腳本內容分(fèn)辨不同(tóng)的腳本(běn)

一個腳本運行[ENABLE]之(zhī)後(hòu), 在(zài)運行(háng)[DISABLE]之前

不(bú)能對該腳本進行(háng)任何改變, 包含任何空白回車或注(zhù)釋

否則會被視為不同(tóng)腳本, 則dealloc等命(mìng)令將無法(fǎ)正確運作

--------------------------------------------------------------------------------------------------

<< GetAddress 函數說(shuō)明(míng) >>

接受(shòu)地址表(biǎo)達式, 返回最終地址(zhǐ)

地址表達(dá)式目前支持:

1. 基地(dì)址+-*運算(suàn)

2. 指針表達式 [[[xxxxx+xx]+xx]+xx]+xx

例:

[[0040de00]-4]+c

3. 模塊(kuài)基址+偏(piān)移, (本功能需要(yào)Vista或XP SP1以(yǐ)上支持)

不(bú)分英文大小寫, 若要區分大小(xiǎo)寫可(kě)使用 " " 包住模塊名

例:

game.exe

game.exe+27D0

game.dat+38c

"Game.exe"+27D0

kernel32.dll

4. 可使用由AA腳本生成的符號(人(rén)造(zào)指針)

在AA腳本中加入一個自定義(yì)符號後, 可直(zhí)接(jiē)使用

假若該符號為pointer

例:

pointer         // 取得(dé)pointer符(fú)號自身被alloc分配(pèi)的地址

[pointer]       // 取得pointer內存放的人造指針

需要配合AA直譯器使用:http://www.chithemodel.com/soft/29289.html

軟(ruǎn)件(jiàn)截圖

下(xià)載地址(zhǐ) 電腦版

點擊報錯 軟件無法下載或下載後無法使用,請點擊(jī)報錯(cuò),謝謝!

用戶評論(lùn)

熱門評(píng)論

最新評論

發表評(píng)論 查看所有(yǒu)評論(0)

昵稱:
請不要評論(lùn)無意義或髒話,我們所有(yǒu)評論會有人工審(shěn)核.
字數: 0/500 (您的評論(lùn)需要經過審(shěn)核(hé)才能顯示)