原创 X86-64和ARM64用戶棧的結構 (5) --- mian()函數和子函數之間的棧

main函數及其子函數之間的棧 1 工具及實驗程序 本文的實驗在一個虛擬機中進行,虛擬機模擬的cpu是x86-64(Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz),運行的是64bit ubuntu,安裝

原创 const char **,char *const *,char ** const

1、告警 test_cpp.c #include <stdlib.h> #include <stdio.h> int main() { char c = 'c'; char *p = &c;

原创 X86-64和ARM64用戶棧的結構 (4) ---__libc_start_main到main

_start到__libc_start_main函數之間的棧 1、x86-64 X86-64的寄存器相對於X86有擴展,主要不同體現在: 通用寄存器:X86-64有16個64bit通用寄存器 狀態寄存器:1個64bit狀態寄存器RFLAG

原创 X86-64和ARM64用戶棧的結構 (2) ---進程用戶棧的初始化

用戶進程棧的初始化 在進程剛開始運行的時候,需要知道運行的環境和用戶傳遞給進程的參數,因此Linux在用戶進程運行前,將系統的環境變量和用戶給的參數保存到用戶虛擬地址空間的棧中,從棧基地址處開始存放。若排除棧基地址隨機化的影響,在Linux

原创 具有潛力的語言

所有人都聽說過“應該學好 C”,“Java 是 Web 開發者的首選”等等,它們幾乎成爲了真理。那麼問題來了,難道就沒有其他語言能擠走這些老傢伙,使他們不再受歡迎?還是說十年後我們還是依靠着不斷升級的 Objective C 和 PHP

原创 X86-64和ARM64用戶棧的結構 (0) ---目錄

X86-64和ARM64用戶棧的結構 (1) ---背景介紹 X86-64和ARM64用戶棧的結構 (2) ---進程用戶棧的初始化 X86-64和ARM64用戶棧的結構 (3) ---_start到main() X86-64和ARM6

原创 dentry與inode有什麼聯繫和區別

我們在進程中要怎樣去描述一個文件呢?我們用目錄項(dentry)和索引節點(inode)。它們的定義如下:struct dentry {struct inode                                *d_inode

原创 我的友情鏈接

51CTO博客開發

原创 除去文件中顯示的^M符號

除去文件中顯示的^M符號 背景 在windows下編輯的文件,在Linux下使用vim打開有時會出現^M符號。 原理 本節內容參考[1] vim被配置爲fileformat=unix,而你打開的文件都是dos格式的。unix格式的換行符爲0

原创 linux中VM虛擬內存區域及mmap方法實現

linux中VM虛擬內存區域及mmap方法實現        文件映射是虛存的中心概念, 文件映射一方面給用戶提供了一組措施, 好似用戶將文件映射到自己地址空間的某個部分, 使用簡單的內存訪問指令讀寫文件;另一方面, 它也可以用於內核的基本

原创 X86-64和ARM64用戶棧的結構 (3) ---_start到main

_start到main()函數之間的棧 1、x86-64 X86-64的寄存器相對於X86有擴展,主要不同體現在: 通用寄存器:X86-64有16個64bit通用寄存器 狀態寄存器:1個64bit狀態寄存器RFLAGS,僅僅低32bit被

原创 ARMv8 UAO PAN

PAN  背景介紹 作用 特權執行不能訪問用戶空間的memory UAO 背景介紹 作用

原创 vim 相關配置說明

顯示目錄樹插件NERDTree

原创 X86-64和ARM64用戶棧的結構 (4) --- mian()函數和子函數之間的棧

mian()函數和子函數之間的棧 待完善 x86-64 ARM64

原创 進程間通信--信號(進程間通信唯一的異步方式

進程間通信--信號(進程間通信唯一的異步方式)   原文地址:進程間通信--信號(進程間通信唯一的異步方式) 作者:Deem_passion一、信號的介紹 信號是在軟件層次上對中斷機制的一種模擬,是一種異步通信方式。信號可以直接進行用戶空間