讀書筆記之程式設計師的自我修養【day1】
第一天翻起這本書,其實按理來說學pwn的應該認真讀讀的,現在做個記錄吧。
first chapter
其實主要講的就是靜態連結的事和編譯一個elf檔案的過程
首先是.c檔案——>轉化為.i 檔案過程叫做編譯,也就是把我們的.c檔案轉化為彙編
接著是.i檔案——>轉化為.o檔案這個過程叫做彙編,就是把我們的組合語言轉化為我們的機器指令。
接著應該是一步比較奇怪的指令吧,叫做連結,我的理解就是連結兩個相互的程式和相互的庫吧,這一步是很早就有淵源的也是非常重要的一步,今天比較忙就做個開頭吧。
some command list
readelf: emmm...一般➕--help指令就出來的用的少記的不多
objdump:同上
主要是觀察elf檔案的格式啥的
相關推薦
讀書筆記之程式設計師的自我修養【day1】
第一天翻起這本書,其實按理來說學pwn的應該認真讀讀的,現在做個記錄吧。 first chapter 其實主要講的就是靜態連結的事和編譯一個elf檔案的過程 首先是.c檔案——>轉化為.i 檔案過程叫做編譯,也就是把我們的.c檔案轉化為彙編 接著是.i檔案——>轉化為.o
讀書筆記--《程式設計師的自我修養》第4章:靜態連結(1)
本章以 如何將a.c檔案與b.c檔案連結成一個可執行檔案 來探討如何進行靜態連結 其中a.c和b.c檔案如下: a.c檔案 extern int shared; int main() { int a = 100; swap(&a,&shared);
讀書筆記--《程式設計師的自我修養》第3章:目標檔案裡有什麼(3)
3.5 連結的介面–符號 在連結中,我們將函式名和變數統稱為符號,函式名和變數名就是符號名。 每一個目標檔案都有一個符號表,裡面記錄了目標檔案中所有用到的符號。 每一個符號都有一個對應的值,叫做符號值。對於變數和函式來說,符號值就是地址。 符號分為5類。 **(1)本目標檔案中定
讀書筆記--《程式設計師的自我修養》第3章:目標檔案裡有什麼(2)
3.4 ELF檔案結構描述 ELF檔案結構如圖所示: ELF目標檔案格式最前面是ELF檔案頭,它包含了描述整個檔案的基本屬性,如ELF檔案版本、目標機器型號、程式入口地址等。接著是ELF檔案各個段。 其中ELF檔案中與段有關的重要結構是段表。該表描述了ELF檔案包含的所有段的資訊
讀書筆記--《程式設計師的自我修養》第3章:目標檔案裡有什麼(1)
3.1、目標檔案的格式 1、目標檔案從結構上講,它是已經編譯後的可執行檔案格式,只是還沒有經過連結的過程,其中可能有些符號或有些地址還沒有調整。其實它本身就是按照可執行檔案格式儲存的。 2、現在PC平臺流行的可執行檔案格式主要是windows下的PE和Linux下的ELF,他們都是C
讀書筆記--《程式設計師的自我修養》第2章:編譯和連結
一、從原始碼到可執行檔案的過程 分為4個步驟:預處理(prepressing)、編譯(compilation)、彙編(assembly)和連結(linking)。如圖所示 1、預編譯 (1)首先,原始碼檔案和相關的標頭檔案,會被預編譯器預編譯為一個.i檔案。 對於C++程式來
讀書筆記--《程式設計師的自我修養》第一章:簡介
一、計算機軟體體系結構 二、作業系統和CPU 1、作業系統的功能:提供抽象的介面,管理硬體資源。 2、充分利用CPU的方法 (1)多道程式利用 編寫一個監控程式,當程式暫時無法使用CPU時,監控程式就把另外的正在等待CPU資源的程式啟動,充分利用CPU。 缺點:程式排程策略太
程式設計師自我修養的那些事兒
本篇部落格主要是:程式設計師的自我修養—連結、裝載與庫的一些學習筆記與心得。 1、首先得注意最大的坑:這本書基於32位系統講解,因此跟著書本的例子操作一遍的時候,記得要在32位的系統上進行,否則可能出現以下錯誤:Linux ubuntu 14.04 x86_64平臺 gcc編譯錯誤 Error:
關於《程式設計師自我修養》中提到的裝載方式
w6r559詬竿仲凡市閹《http://baobao.baidu.com/question/84d5ae2b2045cb2e1d6905e443eceb01?nV》 4740fb鞘倜猛俜春付《http://baobao.baidu.com/question/9e58cdb8a
讀書筆記 高效能程式設計師的修煉
初次邂逅...... 最近小編抽空看了一本書,書的名字叫做《高效能程式設計師的修煉》,從這本書的名字就能看出來,軟體開發遠不只是寫程式碼那麼簡單,你要學會的是高效能的工作,這讓小編想到了去年讀過的一本書《高效能人士的七個習慣》,有興趣的小夥伴可以看看
讀書筆記-《程式設計師生存定律》
《程式設計師生存定律》 1 程式設計的根基: 計算機體系結構-深入理解計算機系統 Randal E.Bryant 演算法和資料結構-演算法導論 Thomas H.Cormen 設計原則和模式-敏捷軟體開發:原則、模式與實踐 Rovert C.Martin
我的程式設計師學習路程【一】
大家好,我是Syc,很高興大家來到VC驛站 - WwW.CcTry.CoM 本論壇提供大量的免費C、C++、VC++ 視訊教程,免費電子書,精品原始碼!期待您的光臨! 書歸正傳,我是一名普通的C、C++嵌入式程式設計師,07年開始接觸VC++程式設計到現在,雖說年頭
我的程式設計師學習路程【原創】【二】
大家好,我是Syc,很高興大家來到VC驛站 - WwW.CcTry.CoM 本論壇提供大量的免費C、C++、VC++ 視訊教程,免費電子書,精品原始碼!期待您的光臨! 書接上文,2007年3、4、5這幾個月是我在公司做畢業設計的時間,題目是《用Socket實現簡單
讀書筆記之《高效程式設計師的45個習慣----敏捷開發之道》 摘錄
讀書筆記之《高效程式設計師的45個習慣----敏捷開發之道》摘錄 此次原創的意思是指這個文章中的內容是由筆者從《高效程式設計師的45個習慣----敏捷開發之道》書中摘錄,而不是別人摘錄的,但是內容並非筆者原創,所摘錄的內容的
【機器學習實戰系列】讀書筆記之AdaBoost演算法公式推導和例子講解(一)
最近在看整合演算法AdaBoost,推薦先看李航的統計學習方法第8章,然後再看機器學習實戰第7章,李航的書上的公式推導講的很詳細了,但是很多地方對於初學者來說,還是需要時間去理解和消化的。本文將從以下幾個方面來介紹AdaBoost演算法。一、AdaBoost演算法公式推導二、
讀書筆記之《Go程式設計語言》---第二章 程式結構
名稱 知識點: go中函式、變數、常量、型別、語句標籤和包的名稱遵循一個簡單規則:名稱開頭是一個字母或下劃線 go中的25個關鍵字 三十幾個內建預宣告的常量 實體第一個字母決定其可見性是否跨包,大寫開頭的是可匯出的,小寫開頭是不可匯出的 單詞組合命名使
讀書筆記之《編寫高質量程式碼:改善C#程式的157個建議》
最近,在閱讀書籍《編寫高質量程式碼:改善C#程式的157個建議》,感覺寫得很不錯,特將其中的建議整理了一下,待以後隨時檢視。 現只羅列了其中的部分建議,因為書籍還沒有閱讀完,會慢慢的完善補充。 1 正確操作字串 1.1 確保儘量少的裝箱 在使用其他值引用型別到字串的轉換並
【計算機網路】讀書筆記之《TCP/IP詳解卷1》《圖解TCP/IP》《計算機網路》三合一
最近把之前看過的三本關於網路的書一起做了一下總結。 第一本是謝希仁的《計算機網路》,這本算是為數不多的國內的好教材,裡面雖然有些內容過時,稍顯臃腫,但是有些章節講的非常不錯。 第二本是《圖解TCP/IP》,日本人寫的書,非常認真細緻,文字結合大量圖片通俗易懂,入門不錯,但是
讀書筆記之應用程式與作業系統之間的關係——《作業系統之真相還原》
這個知識點很好的解釋了為什麼一些程式不能跨平臺使用,比如windows與linux之間的應用程式一般不能通用,底層庫不同,可執行程式的格式也不同,後面章節中作者也點明瞭這個問題。此問題可見知乎上的討論:主要的原因是格式不同和API不同,前者更重要一些。http://www.
《瘋狂Java程式設計師基本修養》筆記(1-5)
第一章: 1. 陣列初始化的兩種方式: 靜態初始化:初始化時由陣列顯式指定每個陣列元素的初始值,由系統決定陣列的長度。 動態初始化:初始化時程式設計師只指定陣列長度,由系統為陣列元素分配初始值。