《加密與解密》學習筆記(二) - 加密算法和PE文件

又看了兩章,果然越來越難,準備先做些題,用到哪些知識再學。這次還把羅雲彬老師書中的TLS(線性局部存儲)給學了。
6加密算法
	6.1單向散列算法
		哈希算法,任意長度消息壓縮至固定長度,不可逆
		MD5,SHA,PIPE-MD,HAVAL,N-Hash
		6.1.1MD5(消息摘要算法)
			原理略
			結果
				將任意長度的字符串變幻成128位的大整數,不可逆
			錯誤用法
				if(MD5(用戶名) == 序列號)
					正確的註冊碼;
				else
					錯誤的註冊碼;
				//序列號明文,這樣就很容易破解
			工具:KANAL
			MD5變形
				改變初始化4個常數
				改變填充方法
				改變Hash變換的處理過程
		6.1.2SHA(安全散列算法)
			跟MD5很像
	6.2對稱加密算法
	6.3非對稱加密算法
	6.4CRC32、Base64
	6.5常用庫
		Miracl大數庫/C/C++
		FGInt/
		
10PE文件格式
	10.1PE的基本概念略
		基地址
		RVA
		FOV
	10.2MS-DOS頭略
	10.3PE頭
	10.4節
	10.5導入表、導入地址表
	10.6綁定導入表
	10.7導出表
	10.8重定位表
	10.9資源表
	10.10TLS初始化
---------------------------------
-補充:《PE》第九章線程局部存儲-	
---------------------------------
	9.1Windows進程與線程
		9.1.1Windows體系結構
			分層:用戶模式+內核模式
			API調用轉到ntdll.dll(橋樑)中,轉到內核ntoskrnl.exe中運行
		9.1.2.1內核模式進程創建
			創建進程
			創建線程綁定進程,否則進程無用,進程上可有多線程
		9.1.2.2
			創建進程,線程就跟着創建好了
	9.2線程局部存儲
		解決多線程變量同步問題,定義一套數據結構,不同的線程擁有不同的值
		在進程中創建全局表,通過線程ID去獲取/寫入數據
	9.3動態TLS——無法確定線程的數量
		調用TlsAlloc向進程申請索引,創建空間
		每個線程
			TlsSetValue
			TlsGetValue
		調用TlsFree收回空間
		//一個索引作爲參數,系統自己搞定多線程到底用哪個,全局變量最大40h(64Byte)
	9.4靜態TLS
		無需調用API函數,在PE文件內部定義變量,.tls,類似導入表,通過結構的描述,系統自動處理
		定位
			第10個
		組成
			IMAGE_TLS_DIRECTORY32
				StartAddressOfRawData	//TLS模板起始地址,VA,需有重定位信息,創建線程被複制	
				EndAddressOfRawData		//TLS模板結束地址,VA,需有重定位信息,不包括0
				AddressOfIndes			//TLS索引的位置
				AddressOfCallBacks		//TLS回調函數數組指針,一個線程創建時調用一次,結束時調用一次
				SizeofZeroFill			//填充0的個數
				Characteristics			//保留
	補充
		TLS數據初始化和TLS回調函數都在入口點之前執行,很多病毒或外殼程序利用這一點執行一些特殊操作
		程序結束時,回調函數又被執行一次。一般的TLS回調函數都是空的
---------------------------------
-補充------------OVER------------	
---------------------------------		
	10.12延遲加載導入表		
	10.13異常表		

發佈了38 篇原創文章 · 獲贊 3 · 訪問量 9344
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章