MOV(寫入、動態)的使用
1.mov當成"寫入"來使用
-----------------
A:
dd 0
B:
dd 1
mov A,B→白話來說,就是把B寫入A.不過現在我們已經知道B=1 A=0,我們也可以翻譯成:把0(A)改變為1(B)
此時我們可以了解到,我們運用上面所介紹的cmp,我們可以了解到:
-----------------
A:
dd 0
B:
dd 1
mov A,B
cmp A,B
je C
此時,只要一讀取到這個部份,則會一直跳入到C程式(因為你已經把B寫入到A,所以A=B)
--------------------------------------------------------------------
2.mov當成"動態"來使用
﹟push=推入某某記憶體
﹟eax=EAX暫存器,反之ebx=EBX、edx=EDX...
這個是使用在pointer上面
push eax //推入到一個記憶體,就是告訴程式說 以下開始是我對pointer做壞事的開始
mov eax,[pointer] //這個是pointer的位置(mov就拿來當成"動態"來看待囉~意指:動態的pointer這個位置)
mov eax,[eax+offset] //offset就是上面的pointer的偏移量(ex: 像是eax+18就是紅點人數,但是呢,不同 pointer,同樣是eax+18,卻是時間)
mov eax,0 //這行的意思就是說,把這個pointer的這個偏移量,寫入"0"(這個mov要看成寫入)
pop eax //結束這個壞事
範例:
停止呼吸的POINTER 00AA8944 OFFSET:374
若是我們要把它做成停止呼吸的功能,只要照以下這樣寫~
push eax
mov eax,[00AA8944]
mov eax,[eax+374]
mov eax,0
pop eax
這個加入數據就是停止呼吸的功能了
※這個位置,數字越大,就會越喘,數字愈小則越不喘,固寫入0,則為停止呼吸