linux下64位彙編的系統呼叫 1

2021-06-30 16:45:26 字數 736 閱讀 7601

現在基本上系統都是64位了,而64位系統下的彙編和32位有了較大的變化,無論是系統呼叫的介面還是c標準庫的介面都和32位彙編有所不同;下面簡單談一下在64位linux下如何利用彙編直接呼叫系統呼叫。

需要準備的有:

1.一台linux機器:我的系統是ubuntu 14.10 x64版;

2.還要乙個彙編器;我沒有使用gas,而是使用了跨平台的nasm;

3.乙個偵錯程式;這裡選擇的不多,要不就是gdb,要不就是lldb,不過這裡選擇前者。

4.乙個編輯器,linux下有很多優秀的語法編輯器,這裡用的是sublime,不過可選的還有很多,比如geany,scite,atom等等,大家可以自便。

5.最好還要乙個c的編譯環境,這樣方便參考;linux下可選的貌似也不少我常用的有code::blocks和codelite,這裡選擇後者:一方面其動態除錯的彙編支援還不賴,另一方面其本身版本迭代比較快,至少比codeblocks要快得多。

6.還有神馬!?如果可以搞到的話,ida pro也有linux版本哦!其靜態除錯的功能那是超級優秀啊!正版價高達幾百美刀啊!不過網上可以覓到xx版本的,不過ida一貫的做法是將32和64位反彙編器分開啊,貌似64位的xx版逆向器比較難搞到。

下面講一下linux彙編中基本的嘗試新問題,首先linux下32位和64位的syscall table呼叫號是完全不同的,對於本貓的系統來說呼叫號檔案可以用:

locate unistd_32

linux下64位彙編的系統呼叫 1

現在基本上系統都是64位了,而64位系統下的彙編和32位有了較大的變化,無論是系統呼叫的介面還是c標準庫的介面都和32位彙編有所不同 下面簡單談一下在64位linux下如何利用彙編直接呼叫系統呼叫。需要準備的有 1.一台linux機器 我的系統是ubuntu 14.10 x64版 2.還要乙個彙編器...

linux下64位彙編的系統呼叫 3

背景知識基本交代清楚了,下面我們實際寫乙個小例子看一下。的功能很簡單,顯示一行文字,然後退出。我們使用了syscall中的write和exit呼叫,查一下前面的呼叫號和引數,我們初步總結如下 write 即sys write 呼叫號為1,需傳遞3個引數 unsigned int fd const c...

linux下64位彙編的系統呼叫 5

include include include include include include include include include include int main void return 0 前面介紹過幾個linux下的整合除錯環境,這裡我們還是用codelite而不用codebloc...