冰楓論壇

標題: 萌新想了解數據詳細 [打印本頁]

作者: www406s16    時間: 2020-2-21 21:27
標題: 萌新想了解數據詳細
萌新我用KNowlet Engine 打開對應版本的CEM搜尋以下代碼
發現call後面的操作碼都剛好都對應數據
想問mov eax,f 這個要看哪個東西獲得
假如數據後 沒有call的話 又要怎麼解決
(有取得此數據的aob了)

冰楓 發文001.png (93.79 KB, 下載次數: 16)

冰楓 發文001.png


作者: qwas963563    時間: 2020-2-21 21:29
mov eax,F
等於 15 下
你可以改成 3
就是 3 下
改成 4
就是 4下
以此類推
作者: Doem    時間: 2020-2-21 21:51
這個call想成正常遊戲中去計算某種攻擊次數的function

改成mov eax,f 是因為你想固定結果都是15,那也就不需要經過計算
直接把計算過程忽略然後塞數值就好, 所以才直接把call指令取代掉

至於為何是塞eax留著給你思考 XD
作者: www406s16    時間: 2020-2-21 22:56
Doem 發表於 2020-2-21 21:51
這個call想成正常遊戲中去計算某種攻擊次數的function

改成mov eax,f 是因為你想固定結果都是15,那也就不 ...

我比對了版上這3個由不同人發出來的數據
// TwMS v222.1 CRC 凱內心靈領域 永恆壞滅 15下 (冰楓論壇 love6610716)
// TwMS v222.2 CRC 凱內心靈領域 永恆壞滅 15下 (冰楓論壇 btb)
// TwMS v222.3 CRC 凱內心靈領域 永恆壞滅 15下 (冰楓論壇 smilelin0419)
其中Enable部分 有db B8 0F 00 00 00 跟 mov eax,f 這兩種
為何使用eax的部分 我還沒有去思考以及爬文
只有找到eax是累加器也可以當作變址寄存器
但這個db B8 0F 00 00 00 我覺得應該可以跟 mov eax,f 達成一樣的效果
爬文一下db 是初始值
初始值 B8 0F 00 00 00 我只有猜到這個0F 應該是代表15下
那前面的 B8 以及後面的 00 00 00 是代表什麼?
作者: Doem    時間: 2020-2-22 01:44
本帖最後由 Doem 於 2020-2-22 01:46 編輯
www406s16 發表於 2020-2-21 22:56
我比對了版上這3個由不同人發出來的數據
// TwMS v222.1 CRC 凱內心靈領域 永恆壞滅 15下 (冰楓論壇 love ...

會塞在EAX的原因是, 在x86 calling convention, EAX通常用來存放返回值, , 簡單來說就是約定俗成的規定
可以參考: https://zh.wikipedia.org/wiki/X8 ... 8%E7%BA%A6%E5%AE%9A

另外為什麼有些是 DB B8 0F 00 00 00
DB 只是表示法而已, 代表接下來要寫入Byte資料 (我猜是 Data Byte的縮寫吧??)
另外你可能會看到DD 接DWORD的資料, 如DD 00400000, 這一樣的道理,  想成方便程式判斷的標記就好

後面的B8 0F 00 00 00就相當於 MOV EAX,0F的Opcode,
根據 https://c9x.me/x86/html/file_module_x86_id_176.html, 你能發現MOV有很多不同指令格式

其中這個範例就是適用於 MOV r32,imm32這種格式 (將32位的常數放到32位的register中)
而它所對應的Opcode是 B8 +rd (對應就是B8 0F 00 00 00, 因為是32 bits(4 Bytes)資料所以原本是0x0000000F)

至於為什麼是倒過來的, 是因為x86是Little-endian




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓