超簡易數據閱讀註釋
痾...今天剛好提示了一位網友...啊我既然都跟他說了,那我乾脆再來發個教學文衝衝人氣吧= =
[Enable]
Registersymbol(AwesomeMan) //CE申請名稱AwesomeMan,不必須
Alloc(AwesomeMan,64) //申請記憶體空間
Registersymbol(Invincible) //CE申請名稱Invincible,不必須,在這段數據中可用label(標籤)取代
Alloc(Invincible,64)
00D3D794: //Call的esp暫存點
DD AwesomeMan //Long寫入我們的數據
AwesomeMan:
Cmp [Esp],005EA13F //比對暫存器中是否為我們要修改之位置
Jne IsrectEmpty //不是的話跳還原點
Mov [Esp],Invincible //是的話就將數據位址移入暫存器
Jmp IsrectEmpty //還原
Invincible: //一個標籤(申請的空間)
Test Eax,Eax //原本的記憶體位置,抄下來,Test處裡
Jmp 005EA143 //我們實際修改之位置,Nop掉他的跳轉達到無敵的效果,此處使用jmp
[Disable]
00D3D794:
DD IsrectEmpty //還原(此文api點所以在CE當中能夠使用他的名)一般會是一個地址adr
Dealloc(AwesomeMan) //釋放申請之記憶體
UnRegistersymbol(AwesomeMan) //取消申請的名
Dealloc(Invincible)
UnRegistersymbol(Invincible)
順便調節一下心情= 口 =
有甚麼解釋不清楚、錯誤等都可以跟我說
KNowlet 手打發佈於 knowlet3389.blogspot.com
一般我們所謂的數據,其實就是給CheatEngine使用的修改目標記憶體之組合語言(應該可以這樣說吧?)
那我們舉這版(TwMS v146.1)的完全無敵(物理)數據當作範例
以下大小寫沒有差異
[Enable]
Registersymbol(AwesomeMan) //CE申請名稱AwesomeMan,不必須
Alloc(AwesomeMan,64) //申請記憶體空間
Registersymbol(Invincible) //CE申請名稱Invincible,不必須,在這段數據中可用label(標籤)取代
Alloc(Invincible,64)
00D3D794: //Call的esp暫存點
DD AwesomeMan //Long寫入我們的數據
AwesomeMan:
Cmp [Esp],005EA13F //比對暫存器中是否為我們要修改之位置
Jne IsrectEmpty //不是的話跳還原點
Mov [Esp],Invincible //是的話就將數據位址移入暫存器
Jmp IsrectEmpty //還原
Invincible: //一個標籤(申請的空間)
Test Eax,Eax //原本的記憶體位置,抄下來,Test處裡
Jmp 005EA143 //我們實際修改之位置,Nop掉他的跳轉達到無敵的效果,此處使用jmp
[Disable]
00D3D794:
DD IsrectEmpty //還原(此文api點所以在CE當中能夠使用他的名)一般會是一個地址adr
Dealloc(AwesomeMan) //釋放申請之記憶體
UnRegistersymbol(AwesomeMan) //取消申請的名
Dealloc(Invincible)
UnRegistersymbol(Invincible)
KNowlet 手打發佈於 knowlet3389.blogspot.com
我問一下 物品定位 可以直接用 無敵ICS 數據 下去改?
回覆刪除我改用物品定位 一下就斷線@@
要是有哪個大大可交一下
即時通:w10203040w
004db83b ff 15 6c d7 d3 00
- call dword ptr[00D3D76C]
004db841 85 c0
- test eax,eax
004db843 75 18
- jne 004DB85D
004db845 83 4d fc ff
- or dword ptr [ebp-04],FF
[ENABLE]
registersymbol(AwesomeMan)
alloc(AwesomeMan,64)
registersymbol(Invincible)
alloc(Invincible,64)
00d3d76c:
DD AwesomeMan
AwesomeMan:
cmp [esp],004DB841
jne IsRectEmpty
mov [esp],Invincible
jmp IsRectEmpty
Invincible:
test eax,eax
jmp 004DB845
[DISABLE]
00d3d76c:
DD IsRectEmpty
dealloc(AwesomeMan)
unregistersymbol(AwesomeMan)
dealloc(Invincible)
unregistersymbol(Invincible)
問題1
刪除你的還原部分整個錯
應該是PtInRect
問題2
此數據應該是
[Enable]
004DB7F4:
db 90 90
[Disable]
004DB7F4:
jne 004db845
所以你改的那個點應該不會有甚麼效果吧
我是重jne 004db845 這個下去找的= =
刪除請問大大
回覆刪除物品定位V146.3 CRC 我已測試可以用
[Enable]
004DB867:
db 90 90
[Disable]
004DB867:
jne 004DB8b8
004DB8AE FF 15 6C E7 D3 00 call dword ptr [00d3e76c]
004DB8B4 85 C0 test eax,eax
004DB8B6 75 18 jne 004db8d0
004DB8B8 83 4D FC DD or dword ptr [ebp-04],ff
要轉換為 ICS 的 但是 我測試後 發現不能撿起物品 不知道是哪裡出錯 可否請大大指導
//146.3物品定位ICS
[ENABLE]
registersymbol(AwesomeMan)
alloc(AwesomeMan,64)
registersymbol(Invincible)
alloc(Invincible,64)
00d3e76c:
DD AwesomeMan
AwesomeMan:
cmp [esp],004db8b4
jne PtInRect
mov [esp],Invincible
jmp PtInRect
Invincible:
test eax,eax
jmp 004db8b8
[DISABLE]
00d3e76c:
DD PtInRect
dealloc(AwesomeMan)
unregistersymbol(AwesomeMan)
dealloc(Invincible)
unregistersymbol(Invincible)
我說過了,這個ICS改的東西很顯然是錯的,並非物品定位
刪除我們先來看物品定位的CRC
004DB867:
db 90 90
這是指說跳過jne 004DB8b8這個跳躍,也就是不讓他跳轉的意思
再來看你寫的ICS
還原成CRC以後是這樣
004DB8B6:
db 90 90
你看看~改的位置就不一樣了
感謝洋蔥大回覆
刪除我已經了解您的意思了
但是我又遇到一個問題..
我發現 004DB867 (物品定位CRC) 用memory view 找
它附近沒有CALL的值 沒有ESP暫存的位置
我研究了一下http://knowlet3389.blogspot.tw/2012/05/twms-v146ics_17.html
用裡面的ADD找也找不到 用它既有的ESP的去蒐OpCode 雖然有兩個但是毫不相干 一無所獲
煩請大大解惑
感謝您!
請問洋蔥大
回覆刪除V131
[enable]
registersymbol(MouseRushStart)
alloc(MouseRushStart, 512)
label(RetMSRush)
MouseRushStart:
cmp [00acf52c],0
je RetMSRush
mov ebx, [00acf52c]
mov ebx, [ebx+17a8] //17a8
cmp esi, ebx
jne RetMSRush
mov eax, [00acf93c] //00acf93c
mov eax, [eax+978]
mov ebx, [eax+84]
mov eax, [eax+88]
mov [edi-4], ebx
mov [edi],eax
RetMSRush:
mov ebx,[ebp+14]
test ebx,ebx
jmp 007C75BB //007C75BB
007C75B6: //007C75B6
jmp MouseRushStart
[disable]
007C75B6:
db 8b 5d 14 85 db
unregistersymbol(MouseRushStart)
dealloc(MouseRushStart)
-----------------------------------------
這一段要如何去查呢?
cmp [00acf52c],0
je RetMSRush
mov ebx, [00acf52c]
mov ebx, [ebx+17a8] //17a8
cmp esi, ebx
jne RetMSRush
mov eax, [00acf93c] //00acf93c
mov eax, [eax+978]
mov ebx, [eax+84]
mov eax, [eax+88]
mov [edi-4], ebx
mov [edi],eax
還是已經被 AB 了 ?
Pointere更新
回覆刪除我看了一下,那應該是人物的Pointer
下面那個是滑鼠Pointer
Invincible: //一個標籤(申請的空間)
回覆刪除這個是可以隨便打一些英文?
對,Label(標籤名稱)
刪除請問洋蔥大大,
回覆刪除這些地址該怎麼去搜尋呢?
只能從舊的數據更新來嗎?
我指的是00d3d794: //Call的Esp暫存點 這部分
先謝謝您的熱心解惑唷:)
http://knowlet3389.blogspot.tw/2012/08/ics.html
刪除大大您好
回覆刪除想請問您一開始的address: 00d3d794最原本是做什麼作用呢
以及005EA13F呢?(為何是它被拿來比對)
還有每個數據都要做test的處理嗎?
麻煩您了 謝謝!
http://knowlet3389.blogspot.tw/2012/08/ics.html
刪除00d3d794是個空間存著IsrectEmpty這API的地址
不是比對只是跳到005EA13F
Test是本來就在那的,其實不用寫也沒關係...
那麼大大
刪除Cmp [Esp],005EA13F //比對暫存器中是否為我們要修改之位置
這行的意思 是把005EA13F比對跟ESP裡面的值 為什麼呢?(小弟看的懂ASM,但不懂為何如此)
謝謝您的解釋!!
請問您有更方便的聯絡方式嗎?
作者已經移除這則留言。
回覆刪除Alloc(AwesomeMan,64) //申請記憶體空間 這邊記憶體大小是否會影響到能否使用?
回覆刪除理論上會影響到,如果不知道自己的代碼有多少bytes建議多申請些空間
刪除