iOS DNS防劫持一點記錄

2022-07-09 09:34:36 字數 723 閱讀 2830

dns 概念:

dns 網域名稱解析系統,解析成相應的伺服器ip, dns劫持是指在劫持的網路範圍內攔截網域名稱解析的請求,分析請求的網域名稱

由於dns請求報文是明文狀態,可能在請求過程被監測,然後偽裝dns伺服器傳送帶有假ip位址的響應報文,從而使主機訪問假的伺服器。

localdns

localdns 是常見ios本地的dns解析方式,不依賴http請求 , 在網路發起請求時,通過nsurlprotocol 攔截請求網域名稱 進行本地解析 獲得 ip 位址 , 實際開發中可使用httpdns解析網域名稱獲得ip位址,也可以自己設定ip池。

nsurlprotocol

上面提到 nsurlprotocol 是網路攔截的關鍵,可通過子類化來定義新的或已存在的url載入行為 如:

. 攔截載入請求,返回特定資料

.對發出請求的header進行格式化

.過濾請求和返回中的敏感資訊

因為專案需要攔截wkwebview 載入,通過ip直連的方式防止dns劫持,首先hook wkwebview 註冊 nsurlprotocol子類

+ (void)wk_registerscheme:(nsstring *)scheme 

}+ (void)wk_unregisterscheme:(nsstring *)scheme

}

具體nsurlprotocol子類實現請看dmeo

參考: nsurlprotocol

oracle一點記錄

檢視資料庫例項名 service name sql select instance name from v instance 如何知道oracle客戶端是32位還是64的。windows下啟動sqlplus,看到是sqlplus32即32位,看到sqlplus即是64位。pl sql在64為客戶端不...

hook api的一點記錄

hook api方法不外乎有修改匯入表和修改目標函式 讓其調整到hook函式處執行。這裡僅僅說下後者。後者主要實現為 通過鉤子將 注入到目標程序 簡單點就通過鉤子載入dll的方式來hook 複雜點的話就 使用建立遠端執行緒的方式來進行 然後通過修改要注入的目標函式其實幾個位元組 一般來說是5個位元組...

kvo 的一點記錄

observevalueforkeypath ofobject change context 呼叫方法是裡 object 被觀察物件 observer 觀察物件 forkeypath裡面帶上property的name,如uiview的frame center等等 options 有4個值,分別是 n...