教程:魚c解密系列
教材:《加密與解密》
多位元組資料存放順序與cpu有關,微處理器的儲存順序有正序和逆序(即大端儲存和小端儲存)。
常見的intel系列使用的編碼方式為逆序,某些risc架構的cpu(例如ibm的power-pc)屬於正序。
例如將12345678h寫入以1000h開始的記憶體中:
little-endian是逆序,而big-endian是正序;正序(大端)是高位位元組存入低位址,低位位元組儲存高位址;而逆序(小端)是高位位元組儲存高位址,低位位元組儲存低位址,反序排列。
ascii碼(8位)即美國資訊互換標準**,我們的計算機只認識1和0,如果我們想表示乙個單詞,那麼cpu不認識這個單詞只認識0和1,所以它需要一些標準,哪些表示a哪些表示b。
unicode(16位)字元編碼的編碼範圍是:0-65535,它包含三套編碼方式如:utf-8,utf-16和utf-32。
unicode和ascii的關係:ascii字元編碼是unicode字元編碼的一部分。
我們中國主要是採用unicode字元編碼格式,在美國一句英文最多可以用到26個英文本母,因此ascii編碼就足夠用了,但是我們中國漢字博大精深,用ascii碼最多可表示256個字元,而我們的漢字怎麼可能只限於256呢,因此就出現了unicode編碼。
win api簡介:windows api就是windows應用程式介面,是針對windows作業系統家族的系統程式設計介面,它被設計為各種語言的曾旭呼叫,也是應用軟體與windows系統最直接的互動方式。windows程式設計是怎麼回事?windows的程式設計師在系統中開發了許多的函式,方便我們直接呼叫,例如說我們利用c寫乙個關機的程式,那我們可以呼叫windows提供的api函式,然後這些函式讓系統去關機。這些函式發展到xp的時候已經有兩千多個了,我們沒有必要去背,需要的時候直接查即可。
看神圖↑,我們寫的應用程式要對硬體進行操作,那麼就需要呼叫win api函式,api函式通過系統服務介面傳遞給驅動程式,驅動程式再利用hal呼叫硬體抽象層,硬體抽象層再去控制硬體。
動態鏈結庫:動態鏈結庫就是把一些經常會共用的**製作成dll檔案,當可執行檔案呼叫到dll檔案內的函式時,windows作業系統才會把dll檔案載入儲存器內。dll檔案本身的結構就是可執行檔案,當程式需求函式才進行鏈結,通過動態連線方式,儲存器浪費的情形就可以大幅度降低。
三個主要的動態鏈結庫:
①kernel32.dll控制著系統的記憶體管理、資料的輸入輸出操作和中斷處理,當windows啟動時,kernel32.dll就駐留在記憶體中特定的寫保護區域,使別的程式無法占用這個記憶體區域;
②user32.dll是windows使用者介面相關應用程式介面,用於包括windows處理,基本使用者介面等特性,如建立視窗和傳送訊息;
③gdi32.dll是windows gdi圖形使用者介面相關程式,包含的函式用來繪製影象和顯示文字;
控制代碼:是整個windows程式設計的基礎,乙個控制代碼是指使用的乙個唯一的整數值,用於標誌應用程式中的不同物件和同類物件中的不同的例項,諸如,乙個視窗、按鈕、圖示等等,這些都是通過控制代碼來訪問相應的物件的資訊。
windows具體執行機制:包括我們的nt、2000、xp和win 7都是nt架構,nt架構從核心到kernel32、user32、gdi32都是純32位實現的,nt架構標準字符集重頭開發,統一使用unicode字符集,相容ascii字符集。
剩餘的都是一些windows api方面的知識,太多了不好打,請自行刷教程。
shell必備基礎知識
shell指令碼 規範的shell指令碼的一般組成。環境宣告 重定向出輸出 只收集前面命令的正確輸出 重定向輸入 覆蓋 追加 2 只收集前面命令的錯誤輸出 收集前面命令的錯誤與正確的輸出 2 將錯誤的變成正確的輸出 2 將正確的變為錯誤的輸出 dev null 黑洞路徑變數 以不變的名稱存放的可能會...
linux系統基礎必備知識
linux作業系統 gnu linux gun 是開源組織 linux是指linux核心 核心 系統核心程式 相當於人的大腦 負責系統程式和硬體分配及排程 shell 對外提供作業系統溝通的介面 對內實現對核心進行保護 rhel8中預設使用的shell是bash 型別rhel8中預設使用的shell...
加密解密基礎知識
簡單介紹下面三個加密知識 hash雜湊值 對稱加解密 非對稱加解密 一 hash雜湊值 生成摘要資訊。如md5演算法。無論多大容量的檔案,資料,都可以使用該演算法生成摘要資訊。用途 當資料發生變化是,摘要資訊就會不同,以此來保證資料的一致性。二 對稱加解密 利用相同的金鑰來進行加密和解密。例如des...