以下這是EMSv0.28 的 SpeedAttack- [ENABLE]
- alloc(speedattack,300)
- label(speed)
- label(normal)
- label(returnhere)
- speedattack:
- pushad
- mov eax,[0079AC20]
- mov edx,[eax+13C4]
- mov ecx,04
- mov eax,edx
- shr edx,0f
- idiv ecx
- dec ecx
- cmp edx,ecx
- popad
- jne normal
- speed:
- jmp 0042CA23
- normal:
- add eax,0a
- mov [ebp+0c],eax
- jmp returnhere
- 0042C987:
- jmp speedattack
- db 90
- returnhere:
- [disable]
- 0042C987: // 83 C0 ?? 89 45 ?? 83 BB
- add eax,0a
- mov [ebp+0c],eax
- dealloc(speedattack)
複製代碼 基本上,要使用外掛,我們目前有兩種方式
一種是用CRC,一種是用EIP
何謂 CRC 的方式呢!?
就是,改變程式在記憶體的內容,所以程式執行到的指令就是我們已經改好的了! (這樣子就達成我們所需的目的了!!)
何謂 EIP 的方式呢!?
就是,當程式 run 到某個位址時,跳到我們指定的位址 (此位址我們已將script寫入),執行到的指令就是我們已經寫入好的了!
(用這種方式要注意,當我們寫入的 script 執行完後,必須再跳回原程式的下一個位址,否則會造成斷線)
ps:用EIP方式另一個注意事項就是,因為這種方式是使用 "中斷點" 的功能來達到我們的目的
(原本中斷點是用來 debug 用的)
因為CPU有限制四個中斷點,所以這也就是我們為什麼只能用四個代碼的原因!
因為我們目前使用CRC的方式,會被偵測到是外掛
所以我們只能用EIP的方式,來達到我們的目的 。
Q:如果找出我們要打入 EIP 是哪個位址呢!? 又是要輸入哪個的位址呢!?
A:直接從 [ENABLE] 下的 script 找,找到像這樣子的區段。
0042C987:
jmp speedattack
由此我們能看出,這段 script 是在 0042C987 的地方 jmp 到 speedattack (位址) 去執行。
感謝 dollwu 、 soso741011 兩位大大指教~
補上囉^^
在 [ENABLE] 的地方補上, registersymbol(speedattack)
在 [DISABLE] 的地方補上,Unregistersymbol(speedattack)
這樣子,就能找出來了yociexp170.gif
夠簡單吧!!
這算是要學會轉國外數據的第一個步驟~
這是轉好後的樣子
如有轉錯,請會的大大指點一下^^
(未經實測,所以不知能不能用 yociexp178.gif )- [ENABLE]
- //Address:0042C987
- //EIP:speedattack ←還沒轉
- registersymbol(speedattack)
- alloc(speedattack,300)
- label(speed)
- label(normal)
- speedattack:
- pushad
- mov eax,[7FA070]
- mov edx,[eax+1200]
- mov ecx,04
- mov eax,edx
- shr edx,0f
- idiv ecx
- dec ecx
- cmp edx,ecx
- popad
- jne normal
- speed:
- jmp 0042CA23 (未轉成TWMS)
- normal:
- add eax,0a
- mov [ebp+0c],eax
- jmp 42c987的下一個address (還沒轉)
- [disable]
- unregistersymbol(speedattack)
- dealloc(speedattack)
複製代碼
[ 本文章最後由 IcantLove 於 2007-8-24 17:19 編輯 ] |