2017-07-27 16 views
0

在作弊引擎中避免搜索值並設置它們(我解釋了我需要的):我知道你可以找到adreses的指針,並創建培訓師,但問題是我的公司使用作弊引擎的應用程序更新很多,每次指針都會改變。 意思是,我必須每週多次創建新的培訓師。基本上,幾乎每天都有..如何在沒有創建培訓師的情況下自動化作弊引擎價值搜索/設置

我想自動化這個,因爲我需要的,是很容易的:

1)打開作弊引擎和選擇的應用程序的名字(example.exe)

2)查找與equel至100.0

3)等待2秒(這樣我就可以改變應用程序的東西)

4)發現已更改爲200.0

浮點值浮點值

5)等待2秒(這樣我就可以在應用程序改變的東西)

6)發現,現在已經在這一點上改變爲300.0

7)只會有發現3個值的浮點值。所以我需要選擇最後一個並將其凍結到500.0,所以即使應用程序將其更改回300.0,它也會再次設置爲500.0。

正如你所看到的,手動完成這項工作非常煩人,而且我幾乎不想每天都創建3個培訓師。只是當天使用它們像3x。

所以我的問題是,是否可以自動化呢?

我不是要求完整的代碼,但一些詳細的信息與鏈接將高度讚賞,因爲我已經使用作弊引擎很多,我知道很多關於編程,我有0經驗和關於作弊引擎的知識腳本。

+0

當我用來製作魔獸機器人時,這可以通過映射出內存中的各種結構來完成。例如,我們會發現字符列表存儲在某個結構的偏移量處,並且從那裏開始,我們可以爲其成員項目繪製出vtable ... – Thebluefish

+0

您是否使用作弊引擎執行此操作? – PragmaticEd

+0

我使用作弊引擎將它們映射出來並進行手動工作,但它並不是真正適合「正確」完成這類工作的工具。 – Thebluefish

回答

0

是否可以自動執行此操作?是的,它會。您可以通過至少創建一個作弊引擎腳本或創建教練來自動執行此操作。你的問題還表明,你想在沒有創建培訓師的情況下做到這一點,所以不需要。

Cheat Engine LUA或簡單的作弊引擎腳本框架包括你想要做的一切功能:

openProcess() //to get process access rights for the process 
MemScan::firstScan() //to scan for 100.0f 
MemScan::nextScan() //to filter/rescan the results 
sleep() //to pause execution 
memrec_freeze() //to freeze 

您所請求的鏈接是官方作弊引擎論壇的LUA and Auto Assembler Tutorial section

當您正在進行的遊戲更新頻繁時,指針成爲扭轉和更新每個補丁的負擔是正確的。解決方案是使用字節簽名掃描陣列來定位訪問您想要訪問的變量的彙編指令。不要擔心CE您也可以參考,AOBScan()。

0

大多數情況下,您可以創建一個處理更新的腳本。例如,一旦找到地址,請右鍵單擊並確定「查找訪問此地址的內容」。等待一些東西來改變這個值,彈出的窗口會顯示改變該地址的代碼。右鍵單擊其中一個結果並打開反彙編程序。比方說,它的行movsd xmm0,[ecx]這裏:

8B 01 - mov eax,[ecx] 89 06 - mov [esi],eax EB 54 - jmp Game.exe+45951 F2 0F10 01 - movsd xmm0,[ecx] F2 0F11 06 - movsd [esi],xmm0

選擇該行,按CTRL + A打開自動彙編窗口。然後從模板菜單中選擇'AOB注入'。將它保存到你的表格並關閉窗口,然後打開新的腳本。在頂部附近會有一條以aobscanmodule開頭的線。如果您發現錯誤,則無法確定該內存位置的唯一簽名。如果沒有錯誤,那麼當遊戲更新並且地址改變時,它應該仍然能夠找到它。應該有一個部分,看起來像這樣:

code: movsd xmm0,[ecx] movsd [esi],xmm0 jmp return

這是重新定位代碼。遊戲中的原始代碼用一個jmp替換到一個新分配的內存區域,在該區域中組裝代碼,然後jmp return返回到原始內存區域中的代碼之後。

您需要知道一些裝配。指令movsd xmm0,[ecx]將ecx指向的內存位置中的浮點值加載到xmm0寄存器中。此訪問您所關心的存儲位置,所以你可以只設置像這樣的值:

code: mov [ecx],(float)500.0 // set value to 500.0 movsd xmm0,[ecx] movsd [esi],xmm0 jmp return

現在,只要程序試圖運行代碼訪問該存儲位置,這反而跳到新內存位置,將該地址處的值更新爲500.0,然後運行原始代碼並跳回。

aobscanmodule行確實顯示錯誤時,這意味着有太多太類似的代碼段。邏輯回顧並轉發幾行彙編並查找十六進制字節,忽略如果遊戲更新可能會改變的地址。例如,當遊戲更新時,代碼中沒有任何內容可能會改變,沒有指針,只有一條相當接近的jmp指令。

要特別小心,您可能希望停止查找代碼訪問該地址的窗口,然後右鍵單擊該代碼行並選擇「查找此指令訪問的地址」。如果不止一個地址出現在窗口中,那麼在沒有更多幫助的情況下你會被擰緊,因爲它是一個通用的代碼塊,用於獲取更多的值,而不僅僅是你關心的那個。

相關問題