西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

CE自動匯編:AA引擎通用DLL

v1.20 b13綠色版
  • CE自動匯編:AA引擎通用DLLv1.20 b13綠色版
  • 軟件大小:121KB
  • 更新時間:2012-04-27 09:04
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費軟件 / 編程控件
  • 軟件等級:3級
  • 應用平臺:WinXP, WinAll
  • 官方網(wǎng)站:http://elephantinaurance.com
  • 應用備案:
好評:50%
壞評:50%

本類精品

軟件介紹

CE自動匯編直譯器: AA引擎 各語言通用DLL - aa_engine.dll


三個函數(shù), 原型如下:


1). 運行CE AA腳本

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

        1). hProcess: 游戲句柄
        2). aa_script: CE AA(自動匯編)腳本
        3). command: 1為運行[ENABLE], 0為運行[DISABLE]
        4). 返回: 運行成功返回真, 失敗返回假
   
   
2). 取地址

    DWORD GetAddress(HANDLE hProcess, char * address_line);

        1). hProcess: 游戲句柄
        2). address_line: 地址表達式, 支持指針+偏移+模塊基址+AA腳本做的人造指針+游戲空間中存在的API
        3). 返回: 成功返回地址, 失敗返回0
   
   
3). 取AA引擎版本號

    char * Ver();

        返回版本號(文本)
   

   
易語言數(shù)據(jù)類型對照:
    int, DWORD, HANDLE = 整數(shù)型
    char * = 文本型 或 字節(jié)集型(傳址打勾)
    bool = 邏輯型 或 整數(shù)型
   
   
   
VC2008動態(tài)調用DLL方法:
    HMODULE hDLL = LoadLibrary(TEXT("aa_engine.dll"));  // 載入DLL

    // 調用AutoAssemble
    typedef BOOL (FAR WINAPI *PROC1)(HANDLE,char*,int);
    PROC1 pAutoAssemble=(PROC1)GetProcAddress(hDLL,"AutoAssemble");
    (pAutoAssemble)(hProcess,aa_script,1);

    // 調用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);  // 釋放DLL

   
--------------------------------------------------------------------------------------------------
    更新beta 12:
    1. (flaot)和(double)轉換
    2. DQ命令
   
    更新beta 13:
    1. 匯編代碼自動修正功能增加一個錯誤處理
 
--------------------------------------------------------------------------------------------------


<< 關于AA引擎 >>

1). 使用標準WINAPI(__stdcall)格式導出函數(shù), 各語言以一般宣告API的方式皆可調用
   
2). 需要 VS2008SP1運行庫 (僅4MB)

3). 部分功能需要Vista或XP SP1以上運行環(huán)境
   
4). 可任意改名, 例如改成 XXX修改器.dll

5). 已使用UPX 3.08壓縮加殼, 無毒
    如有任何誤報, 可自行脫殼, 方法為 upx.exe -d aa_engine.dll
    脫殼后, 原大小約為 160k

6). AA引擎由CE 5.61的Delphi源碼中, 摘除并移植AA腳本直譯器
    外加OD的匯編編譯器(disasm)源碼作為心臟
    本人axdx只負責進行移植整合手術, 所有技術源自CE與OD

7). AA引擎原開發(fā)目的為一個CheatMaker插件PC_AA.dll

8). 特別感謝: 銀河漫步, 十六夜‧流歌

 

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


<< AutoAssemble 函數(shù)說明 >>
                           
                           
                           
一、目前已支持的CE AA功能如下

alloc
label
registersymbol
unregistersymbol
globalalloc
fullaccess      (有某種限制, 不是所有內存區(qū)都有效)
aobscan         (支持使用??或*表示未知字節(jié))
createthread    (此命令不管寫在哪里, 永遠是腳本中最后運行)
define
dealloc
assert          (支持使用??或*表示未知字節(jié))
readmem

地址:行可用地址表達式   (請參看 GetAddress 函數(shù)說明)

DB, DW, DD, DQ 命令, 分別為單, 雙, 四, 八字節(jié)數(shù)組寫入

#123            表示十進制
(int)123        同樣表示十進制
(float)         單精度浮點數(shù)(4字節(jié))
(double)        雙精度浮點數(shù)(8字節(jié))
例:
mov [eax],(float)3.5
dd (float)123.5 (float)100
dq (double)200.75


注釋方式有三種:  //單行   /*多行*/   {多行}


支持調用游戲空間中存在的 Win API 符號
例:
在游戲中調用兩個API
先調用MessageBoxA顯示一個"BYE BYE"信息
接著調用ExitProcess結束游戲進程
[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腳本中可用如下方式加入自定義符號
registersymbol(pointer)
alloc(pointer,4) 
或者也可只用一行
globalalloc(pointer,4)
以上兩種方式將pointer這個符號加入自定義符號表
并且動態(tài)分配了4字節(jié)的內存空間給pointer
我們不必知道這個4字節(jié)空間的正確地址
我們只要用pointer這個名稱就可以代表該地址了

接下來可以把pointer當做人造指針, 在其內放入游戲數(shù)據(jù)的有效地址
由于自定義符號表為所有使用AA引擎的腳本共享
包含所有其他AA腳本, 在本腳本啟動以后, 都可以直接以[pointer]當做地址使用

由于pointer是代表著由alloc分配的動態(tài)地址
人造指針實際是存放在地址pointer處
因此一般都是以[pointer]的形式來使用

也可以使用GetAddress函數(shù), 直接取得pointer自身的地址, 或其內人造指針[pointer]的地址

當不再使用pointer的時候, 可以如下方式取消pointer符號名及分配的內存空間
unregistersymbol(pointer)
dealloc(pointer)  

 

七、匯編代碼編寫注意:

由于使用了OD的匯編編譯器, 其匯編代碼格式較CE嚴格
不過我已經(jīng)加入了匯編代碼自動修正功能
例如原先必須寫為 mov dword ptr [exa+ebx*4+0c],0c8 的代碼
已經(jīng)可以直接寫為 mov [eax+ebx*4+c],c8

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

1). 出現(xiàn)"Unknown identifier"編譯錯誤時:
    可能為匯編編譯器無法正確識別寄存器, 指令, 與數(shù)值
    解決方法為, 所有數(shù)值, 如果是A到F等英文字母開頭的, 前面加一個0
    如c要寫成0c, A8B300要寫成0A8B300
   
2). 出現(xiàn)"Command does not support given operands"
    或"Unrecognized command"錯誤時:
    可能為數(shù)據(jù)長度錯誤
    一般情況, 如果沒有指名長度, 則將一律視為4字節(jié)長度
    例如 mov [esi+30],3f800000
    將自動轉換為 mov dword ptr [esi+30],3f800000 再送給編譯器
    若出現(xiàn)這個編譯錯誤, 則請自行指定正確的數(shù)據(jù)長度
    數(shù)據(jù)長度的表示法有以下幾種:
        單字節(jié) byte ptr
        雙字節(jié) word ptr
        四字節(jié) dwrod ptr

       


八、目前不支持的CE AA功能:

loadlibrary
loadbinary
include

 


九、外部代碼區(qū):

CE的AA腳本分為三個區(qū)段: [ENABLE], [DISABLE], 外部代碼(outer codes)區(qū)
外部代碼區(qū)指的是在[ENABLE]之前的區(qū)域, 或可稱為前置區(qū)
放在這里的代碼, 為無論選擇[ENABLE]或[DISABLE], 都會被運行
會放在這里的一般是aobscan

 


十、本AA引擎專有功能:

assert2(地址,字節(jié)數(shù)組,"選填錯誤信息")
  功能同 assert, 可選填錯誤信息
  例: assert2(00081048,12 ff 3c 78,"Wrong Game Version!")

aobscan2(名稱,字節(jié)數(shù)組,起始地址,結束地址,第幾個命中目標,"選填錯誤信息!")
  功能同 aobscan, 設定項目較多, 若不要顯示錯誤信息, 則使用 "" 表示無信息
  例1: aobscan2(aobstart,12 34 56 78,00400000,7FFFFFFF,1,"Wrong Game Version!")
  例2: aobscan2(aobstart,12 ff 3c 78,0,7FFFFFFF,1,"")
  上例2等同于aobscan
 
 

十一、其他注意事項:

AA引擎以腳本內容分辨不同的腳本
一個腳本運行[ENABLE]之后, 在運行[DISABLE]之前
不能對該腳本進行任何改變, 包含任何空白回車或注釋
否則會被視為不同腳本, 則dealloc等命令將無法正確運作

 

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


<< GetAddress 函數(shù)說明 >>

接受地址表達式, 返回最終地址

地址表達式目前支持:

1. 基地址+-*運算


2. 指針表達式 [[[xxxxx+xx]+xx]+xx]+xx
例:
[[0040de00]-4]+c


3. 模塊基址+偏移, (本功能需要Vista或XP SP1以上支持)
不分英文大小寫, 若要區(qū)分大小寫可使用 " " 包住模塊名
例:
game.exe
game.exe+27D0
game.dat+38c
"Game.exe"+27D0
kernel32.dll


4. 可使用由AA腳本生成的符號(人造指針)
在AA腳本中加入一個自定義符號后, 可直接使用
假若該符號為pointer
例:
pointer         // 取得pointer符號自身被alloc分配的地址
[pointer]       // 取得pointer內存放的人造指針地址


5. 支持游戲空間中存在的Win API符號名
例:
messageboxA     // 取得MessageBoxA函數(shù)的地址
exitprocess
GetAsyncKeyState
loadlibrary
GetProcAddress
freelibrary


6.以上混用
例:
[[game.exe+27D0]-4]+c


7.可注釋, 方式有三種:  //單行   /*多行*/   {多行}
  但地址表達式只能有一行


注意事項:

1. 全十六進制, 十進制以#或(int)表示
例:
[[#196608]-#16]+#12


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

 

 


 

軟件標簽: 通用DLL

需要配合AA直譯器使用:http://elephantinaurance.com/soft/41455.html

軟件截圖

CE自動匯編:AA引擎通用DLL v1.20 b13綠色版

其他版本下載

發(fā)表評論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評論 > 字數(shù): 0/500

TOP
軟件下載