彙編免殺基礎知識

2022-12-17 03:33:02 字數 4539 閱讀 9164

作者:灰鴿子工作室**:灰鴿子工作室加入日期:2008-8-18點選率:408

一.機械碼,又稱機器碼.

ultraedit開啟,編輯exe檔案時你會看到

許許多多的由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f組成的數碼,這些數碼就是機器碼.

修改程式時必須通過修改機器碼來修改exe檔案.二.需要熟練掌握的全部彙編知識(只有這麼多)

不大容易理解,可先強行背住,混個臉兒熟,以後慢慢的就理解了cmp a,b比較a與bmov a,b把b的值送給aret返回主程式

nop無作用,英文「no operation」的簡寫,意思是「do nothing」(機器碼90)***機器碼的含義參看上面

(解釋:ultraedit開啟編輯exe檔案時你看到90,等同於彙編語句nop)call呼叫子程式

je或jz若相等則跳(機器碼74或0f84)jne或jnz若不相等則跳(機器碼75或0f85)jmp無條件跳(機器碼eb)jb若小於則跳ja若大於則跳jg若大於則跳

jge若大於等於則跳jl若小於則跳jle若小於等於則跳pop出棧push壓棧

三.常見修改(機器碼)74=>75 74=>90 74=>eb75=>74 75=>90 75=>ebjnz->nop

75->90(相應的機器碼修改)jnz -> jmp

75 -> eb(相應的機器碼修改)jnz -> jz

75->74 (正常) 0f 85 -> 0f 84(特殊情況下,有時,相應的機器碼修改)四.兩種不同情況的不同修改方法1.修改為jmp

je(jne,jz,jnz) =>jmp相應的機器碼eb(出錯資訊向上找到的第乙個跳轉)jmp的作用是絕對跳,無條件跳,從而跳過下面的出錯資訊

************出錯資訊,例如:註冊碼不對,sorry,未註冊版不能...,"function not**aible in demo"或"command not **aible"或"can't s**e in shareware/demo"等(我們希望把它跳過,不讓它出現)。。。。。。

************正確路線所在2.修改為nop

je(jne,jz,jnz) =>nop相應的機器碼90(正確資訊向上找到的第乙個跳轉)nop的作用是抹掉這個跳轉,使這個跳轉無效,失去作用,從而使程式順利來到緊跟其後的正確信

息處************正確資訊,例如:註冊成功,謝謝您的支援等(我們希望它不被跳過,讓它出現,程式一定要順利來到這裡)。。。。。。

************出錯資訊(我們希望不要跳到這裡,不讓它出現)它們在存貯器和暫存器、暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.

mov傳送字或位元組.movsx先符號擴充套件,再傳送.movzx先零擴充套件,再傳送.

push把字壓入堆疊.pop把字彈出堆疊.

pusha把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊.popa把di,si,bp,sp,bx,dx,cx,ax依次彈出堆疊.

pushad把eax,ecx,edx,ebx,esp,ebp,esi,edi依次壓入堆疊.popad把edi,esi,ebp,esp,ebx,edx,ecx,eax依次彈出堆疊.bswap交換32位暫存器裡位元組的順序

xchg交換字或位元組.(至少有乙個運算元為暫存器,段暫存器不可作為運算元)cmpxchg比較並交換運算元.(第二個運算元必須為累加器al/ax/eax )xadd先交換再累加.

(結果在第乙個運算元裡)xlat位元組查表轉換.

── bx指向一張節的表的起點, al為表的索引值(0-255,即0-ffh);返回al為查表結果. ( [bx+al]->al )2.輸入輸出埠傳送指令.

in i/o埠輸入. (語法: in累加器, )out i/o埠輸出. (語法: out ,累加器)

輸入輸出埠由立即方式指定時,其範圍是0-255;由暫存器dx指定時,其範圍是0-65535.3.目的位址傳送指令.lea裝入有效位址.

例: lea dx,string ;把偏移位址存到dx.

lds傳送目標指標,把指標內容裝入ds.例: lds si,string ;把段位址:

偏移位址存到傳送目標指標,把指標內容裝入es.例: les di,string ;把段位址:

偏移位址存到傳送目標指標,把指標內容裝入fs.例: lfs di,string ;把段位址:

偏移位址存到傳送目標指標,把指標內容裝入gs.例: lgs di,string ;把段位址:

偏移位址存到傳送目標指標,把指標內容裝入ss.例: lss di,string ;把段位址:

偏移位址存到ssi.4.標誌傳送指令.

lahf標誌暫存器傳送,把標誌裝入ah.

sahf標誌暫存器傳送,把ah內容裝入標誌暫存器.pushf標誌入棧.popf標誌出棧.pushd 32位標誌入棧.popd 32位標誌出棧.二、算術運算指令

add加法.adc帶進製加法.inc加1.

aaa加法的ascii碼調整.daa加法的十進位制調整.sub減法.sbb帶借位減法.dec減1.

nec求反(以0減之).

cmp比較.(兩運算元作減法,僅修改標誌位,不回送結果).aas減法的ascii碼調整.das減法的十進位制調整.mul無符號乘法.

imul整數乘法.

以上兩條,結果回送ah和al(位元組運算),或dx和ax(字運算),aam乘法的ascii碼調整.div無符號除法.idiv整數除法.以上兩條,結果回送:

商回送al,餘數回送ah, (位元組運算);或商回送ax,餘數回送dx, (字運算).aad除法的ascii碼調整.

cbw位元組轉換為字. (把al中位元組的符號擴充套件到ah中去)cwd字轉換為雙字. (把ax中的字的符號擴充套件到dx中去)cwde字轉換為雙字.

(把ax中的字符號擴充套件到eax中去)cdq雙字擴充套件. (把eax中的字的符號擴充套件到edx中去)三、邏輯運算指令

and與運算.or或運算.xor異或運算.not取反.

test測試.(兩運算元作與運算,僅修改標誌位,不回送結果).shl邏輯左移.

sal算術左移.(=shl)shr邏輯右移.sar算術右移.

(=shr)rol迴圈左移.ror迴圈右移.

rcl通過進製的迴圈左移.rcr通過進製的迴圈右移.

以上八種移位指令,其移位次數可達255次.移位一次時,可直接用操作碼.如shl ax,1.移位》1次時,則由暫存器cl給出移位次數.如mov cl,04

shl ax,cl四、串指令

ds:si源串段暫存器:源串變址.esi目標串段暫存器:目標串變址.cx重複次數計數器.al/ax掃瞄值.

d標誌0表示重複操作中si和di應自動增量; 1表示應自動減量.z標誌用來控制掃瞄或比較操作的結束.movs串傳送.

( movsb傳送字元. movsw傳送字. movsd傳送雙字. )cmps串比較.

( cmpsb比較字元. cmpsw比較字. )scas串掃瞄.

把al或ax的內容與目標串作比較,比較結果反映在標誌位.lods裝入串.

把源串中的元素(字或位元組)逐一裝入al或ax中.

( lodsb傳送字元. lodsw傳送字. lodsd傳送雙字. )stos儲存串.是lods的逆過程.

rep當cx/ecx<>0時重複.

repe/repz當zf=1或比較結果相等,且cx/ecx<>0時重複.repne/repnz當zf=0或比較結果不相等,且cx/ecx<>0時重複.repc當cf=1且cx/ecx<>0時重複.

repnc當cf=0且cx/ecx<>0時重複.五、程式轉移指令

1>無條件轉移指令(長轉移)jmp無條件轉移指令call過程呼叫ret/retf過程返回.

2>條件轉移指令(短轉移,-128到+127的距離內)(當且僅當(sf xor of)=1時,op1ja/jnbe不小於或不等於時轉移.jae/jnb大於或等於轉移.jb/jnae小於轉移.

jbe/jna小於或等於轉移.

以上四條,測試無符號整數運算的結果(標誌c和z).jg/jnle大於轉移.jge/jnl大於或等於轉移.jl/jnge小於轉移.jle/jng小於或等於轉移.

以上四條,測試帶符號整數運算的結果(標誌s,o和z).je/jz等於轉移.jne/jnz不等於時轉移.jc有進製時轉移.jnc無進製時轉移.jno不溢位時轉移.

jnp/jpo奇偶性為奇數時轉移.jns符號位為"0"時轉移.jo溢位轉移.

jp/jpe奇偶性為偶數時轉移.js符號位為"1"時轉移.3>迴圈控制指令(短轉移)loop cx不為零時迴圈.

loope/loopz cx不為零且標誌z=1時迴圈.loopne/loopnz cx不為零且標誌z=0時迴圈.jcxz cx為零時轉移.

jecxz ecx為零時轉移.4>中斷指令int中斷指令into溢位中斷iret中斷返回

5>處理器控制指令

hlt處理器暫停,直到出現中斷或復位訊號才繼續.wait當晶元引線test為高電平時使cpu進入等待狀態.esc轉換到外處理器.

lock封鎖匯流排.nop空操作.stc置進製標誌位.

clc清進製標誌位.cmc進製標誌取反.std置方向標誌位.

cld清方向標誌位.sti置中斷允許位.cli清中斷允許位.

六、偽指令

dw定義字(2位元組).proc定義過程.endp過程結束.segment定義段.

assume建立段暫存器定址.ends段結束.end程式結束.

2019北京二模分類彙編一 基礎知識

2012北京市語文中考各區二模試題彙編 基礎知識 12東城2 1.下列詞語中加點字的讀音完全正確的一項是 a.愜意 qi 瞥見 pi 廣袤 m o 高屋建瓴 l n b.貯藏 zh 履行 l 哺育 b 中流砥柱 d c.蓓蕾 b i 踱步 du 翹首 qi o 隨聲附和 h d.鳥瞰 k n 郵購 ...

北京初三語文期末單項彙編 基礎知識部分

基礎知識彙編 海淀 一 基礎運用 共13分 為了讓同學們更好地了解北京文化,學校組織了 文化符號尋蹤北京 主題活動。請根據要求,完成1 5題。1.尋蹤千年古剎潭柘寺,探尋北京文化淵源。下面是同學找到的一段關於潭柘寺的文字。閱讀這段文字,完成 1 3 題。共5分 先有潭柘寺,後有北京城。這是一句人們 ...

影視基礎知識

一 影視構成的基本單位 第一節景和鏡頭的基本含義 1.景 指銀幕和螢幕的單個畫面影象,是一種瞬間的空間呈現。2.景別 不同的畫面叫 景別 即攝影機和攝像機從各自不同的視距對拍攝物件進行拍攝時,所獲得的各種大小和內容不同的畫面。景和景別都是一種空間概念,即一種空間上的瞬息呈現。3.鏡頭 主要是乙個時間...