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異常表
《加密與解密》學習筆記(二) - 加密算法和PE文件
又看了兩章,果然越來越難,準備先做些題,用到哪些知識再學。這次還把羅雲彬老師書中的TLS(線性局部存儲)給學了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.