全球獨家視訊:特工隊 - 動態修改計算機系統呼叫
我們最近錄製一期特工隊節目,全球獨家的視訊節目,全程2.5小時,這個視訊節目是圍繞這樣一個實驗來進行的。我們在這期視訊節目中重點介紹:
-
ARM64體系結構中的記憶體管理
-
ARM64的頁表管理
-
ARM64 的Linux核心如何walk through頁表
-
ARM64的Linux核心系統呼叫是如何實現的?
-
如何面對當機?本實驗講會面臨4次不同的當機。
-
詳細分析當機的log
-
利用kdump來手撕當機問題
笨叔保證,在全球的視訊網站和培訓機構上也找不到這樣有深度和廣度的視訊,只有笨叔的旗艦篇視訊有喲!喜歡的趕緊點本文最後面的“閱讀原文”來訂閱吧。
這個實驗是醬楊紫的:
“ 假設你是一名安全人員,正在執行一項祕密任務,這項祕密任務就是要深入到敵軍的作戰指揮中心的計算機裡安裝一個竊聽的程式,簡單來說就是把計算機的系統呼叫動態替換掉。假設你的同事已經幫你把敵軍計算機的 root 密碼給破解了,接下來就看你如何動態修改系統呼叫了。 注意:編寫的核心模組不能讓敵軍的計算機重啟、 crash/panic ,否則就暴露行蹤,祕密行動失敗。
1 )編寫一個核心模組。
實驗環境: ARM64 體系結構,Linux 5.0 核心 。
要求替換系統呼叫表(sys_call_table )中某一項系統呼叫,替換成自己編寫的系統呼叫處理函式(例如:my_new_syscall() ),在新的系統呼叫函式中列印一句“hello, I have hacked this syscall ”, 然後再呼叫回原來的系統呼叫處理函式。
比如以ioctl 系統呼叫為例,它在系統呼叫表中的編號就是__NR_ioctl 。那麼需要修改系統呼叫表sys_call_table[__NR_ioctl] 的指向,讓其指向my_new_syscall() 函式,然後在my_new_syscall() 函式中列印一句話,呼叫原來的sys_call_table[__NR_ioctl] 指向的處理函式。
2 )解除安裝模組時候把系統呼叫表恢復原樣。
3 )用clone 系統呼叫來驗證你的驅動,clone 系統呼叫號是__NR_clone 。
”
這個實驗來自一個實際的專案,最開始是笨叔的VIP微信群裡一個朋友在國慶節期間問笨叔的一個問題。他們說這個問題困擾了他們好久,他們的實驗平臺是某鵬的ARM64伺服器晶片,怎麼折騰總是當機,於是救助與笨叔。笨叔看了看他們的程式碼,喝了一杯二鍋頭的時間就把這個問題fix了。後來,笨叔覺得這個問題對學習linux驅動和核心的小夥伴很有幫助,特別是對加深理解ARM64的體系結構,ARM64記憶體管理、系統呼叫、如何面對當機等問題,於是,笨叔在那個VIP朋友的問題基礎上做了修改和抽象,做成一個實驗share給大家。
笨叔讓 小笨笨同學來做這個實驗。
風華正茂的小笨笨同學
笨叔先給小笨笨介紹一些ARM64體系結構的知識。
小笨笨開始動手寫核心模組了,花了一個下午,寫好了一個驅動模組。
但是呢,這個驅動一跑起來就當機,而且整個過程會有4次不同的當機。
第一次當機,小笨笨同學就懵了。。。
在笨叔的指點下,fix了第一次當機。
重新編譯好核心模組之後,一跑,又馬上第二次當機了。
小笨笨同學這可傻眼了,在笨叔給他講解了系統呼叫的一些基本原理之後,馬上fix了第二次當機。這回小笨笨同學把ioctl系統呼叫號改成clone號, 重新編譯好核心模組之後,一跑,又馬上第三次當機了。
小笨笨同學這回哭了,叔叔,我不玩了~~~~
我把小笨笨同學哄著:小笨笨,不怕,我們來仔細分析當機log,你看看,你只把第一個page的只讀屬性改成了可寫,但是呢,因為clone系統呼叫號是220,每個系統呼叫號在系統呼叫表sys_call_table中佔8個位元組,但是呢,這個表沒有按照page大小對齊來存放的,所以呢,這個clone可能存放到了第2個page裡,你發現了嗎?小笨笨同學。
小笨笨同學看了看笨叔,
叔,好像是這麼回事。
叔,你真帥!
小笨笨很快就修改好了程式碼,上機一跑,好像不當機了。
笨叔:小笨笨,你這個驅動寫的好不錯,但是呢,我們需要在解除安裝模組的時候,把系統呼叫表恢復原樣。
小笨笨馬上去修改解除安裝模組函式,上機一跑,又當機了~~,這回小笨笨真的哭了:
叔,真的好難啊,為啥我一修改,就當機。
小夥伴,你有興趣和小笨笨一起來玩這個實驗嗎?
笨叔錄製了2個多小時的高清視訊來詳細講解這個實驗,有興趣的同學可以點選“閱讀原文”來訂閱笨叔的旗艦篇合集視訊。
另外我們精心製作了400多頁的實驗指導手冊,獨家供應,免費提供大家下載。
下載辦法:
登入“奔跑吧linux社群”微信公眾號,在微信公眾號裡輸入“實驗指導手冊”即可。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70005277/viewspace-2885055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 作業系統:計算機的生態系統作業系統計算機
- 計算機系統的啟動概述計算機
- 雪亮工程動態視訊監控系統建設動態人臉識別系統搭建
- 【計算機視覺】視訊格式介紹計算機視覺
- 計算機系統計算機
- windows10系統怎麼修改計算機名稱Windows計算機
- 雲端計算生態系統
- 作業系統動態庫呼叫過程作業系統
- 直播app系統原始碼,動態遇到視訊時開始自動播放APP原始碼
- 深入理解計算機系統學習- 計算機系統漫遊計算機
- 手機視訊監控系統
- 計算機組成原理-全套視訊教程計算機
- 系統狀態統計和檢視
- 轉:系統動態檢視速查
- 計算機“系統”視角中的未來願景計算機
- 研究顯示覆雜的視訊生態系統提供了機會
- 計算機基礎之計算機硬體系統計算機
- 「MoreThanJava」計算機系統概述Java計算機
- why to learn 計算機系統計算機
- 計算機系統漫遊計算機
- 計算機硬體系統計算機
- 計算機作業系統計算機作業系統
- 計算機系統的安全機制計算機
- AliRTC 開啟視訊互動 “零計算” 時代
- 全球Top 2!騰訊計算機視覺能力再突破計算機視覺
- 深入理解計算機系統計算機
- 計算機的作業系統計算機作業系統
- 視訊監控系統的設計
- 深入理解計算機系統系列(第一章--計算機系統漫遊)計算機
- 《頭腦特工隊2》觀影感悟
- 計算機系統 003 - 硬體體系計算機
- 視訊分享:做“有料”的計算機大學生計算機
- 計算機系統002 – 數值運算計算機
- 計算機系統002 - 數值運算計算機
- MAC修改主機名、計算機名Mac計算機
- 短視訊程式開發,Android:呼叫系統拍照和相簿Android
- Dynamic Wallpaper視訊動態桌布
- 檢視引數是否可以動態修改