免殺(必備彙編基礎 壹)

2021-07-02 20:56:57 字數 1577 閱讀 4651

彙編又作

為一門必學的基礎出現~ 總之,彙編真的是很重要很重要。關於彙編的概述我們這裡不多講,但是要想更好的學習程式設計,還有諸如破解之類的

技術,匯

編是必備的基

礎,大神必啃。

暫存器:顧名思義,暫存器就是暫時儲存資料的地方,暫存器被設計在cpu內部,對於乙個彙編程式設計師來說,cpu中最主要的部分就是暫存器了。暫存器是程式設計師能通過指令讀寫的部件,程式設計師通過改變暫存器的值間接的控制cpu。現在我們的系統和硬體已經有支援64位,但是現時期的軟體基本上都是32位的,所以32彙編是主流。我只學過16位彙編,而且只學了一半,這次藉著書了解一下32位彙編。8086是16位cpu,而80386是有8個通用暫存器:eax、ebx、ecx、edx、esp、ebp、edi、esi,它們也可以作為16位使用。

堆疊:堆疊是連續的記憶體單元,訪問方式遵循「先進後出」原則,棧是一種特殊的儲存方式,特殊在最先進入這個空間的資料卻是最後出去的。但是堆和棧不是同乙個概念,棧一般由編譯器自動分配釋放,儲存函式的引數值、區域性變數值等;而堆,一般由程式設計師分配釋放,程式結束時可能由os(系統)**。

對於cpu這個只認識0和1的「大白」來說,它怎麼判斷哪些是資料哪些是**呢?這就需要用到我們的暫存器了,在16位彙編下,我們利用ds作為段暫存器,通過[0]的方法來指示**存放的位址。而用cs作為段暫存器,通過ip偏移指示cpu下乙個讀取的指令···還有許多,在32位cpu中的暫存器,實際上並沒有多大的改變,只是變成了32位,各暫存器的功能基本上都差不多。

記憶體單元:cpu儲存記憶體中的指令或者是資料是通過記憶體位址進行定位的,指令和資料存放在乙個或多個記憶體單元中,cpu要訪問記憶體單元,必須給出記憶體單元的位址。記憶體位址實際上並非全是線性的,而在cpu面前卻是一條線性的空間,每乙個記憶體單元有其唯一的位址。早在16位的8086cpu,記憶體位址對應著記憶體的實體地址,而在80386架構的作業系統中,可以對應實體地址也可以不要。

80386的定址機制:在16位cpu的年代,記憶體定址需要兩個暫存器來實現,乙個暫存器中記錄著段位址,另乙個暫存器記錄著偏移位址,段暫存器儲存的是基位址,而另乙個暫存器存放的是相對於基位址的偏移值。定址中有乙個很重要的機構,我們稱之「血汗工廠」,它負責將兩個暫存器的位址合成乙個位址。可能有人不知道,8086cpu是16位的,可是它定址卻能達到20位,這是為什麼呢?這得益於血汗工廠,段位址*16+偏移位址=記憶體位址。段位址和偏移位址都是十六進製制的,所以段位址乘以16就等於左移了一位,例如段位址為2000h,偏移位址為0h,2000h*16+0=20000h。書中沒說得這麼詳細,原諒我心血來潮。

80386與8086差不多,但是在保護模式下,80386處理器可以使用所有的物理記憶體。段基址可以是32位,也可以不是16的倍數,同時它的最大長度為4g,這與8086完全不同,在形成邏輯位址時用段基址直接加上段內偏移位址。

大端小端:cpu對位元組順序的處理方式有兩種,分別是大端和小端;大端方式:資料的高位被存放在低位位址,資料的低位被存放在高位位址;小端方式:資料的高位被存放在高位位址,資料的低位被存放在低位位址。

jmp指令:這個是在免殺過程中頻率非常高的指令,叫跳轉指令。

格式:jmp 記憶體位址 跳到指定記憶體位址繼續執行。jmp有兩種情況,一種是絕對跳轉一種是相對跳轉,絕對跳轉是直接跳轉到該記憶體位址,而相對跳轉是跳轉到相對於該指令位址後××位元組的位址。

免殺 彙編指令大全

1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊.popa 把di,si,bp,sp,bx,dx,cx,ax依次彈...

彙編64講(搞免殺 破解必看)

希望大家喜歡 每個課程有1個小時 學完包你會免殺,免的出神入畫.mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mms mm...

cs免殺 使用python進行免殺

使用python版本為python3.6 32位版本,64位版本測試會報錯。安裝pyinstaller,pywin32 pip3 install pyinstaller pip3 install pywin32 使用cobalsstrike生成c語言shellcode。shellcode 放這個位置...