171103 逆向 記憶體與外掛程式(培訓提綱)

2021-08-10 07:18:03 字數 1383 閱讀 4890

1625-5 王子昂 總結《2023年11月3日》 【連續第399天總結】

a. 協會記憶體與外掛程式培訓提綱

b. 後天給協會培訓,於是先寫一下提綱記錄一發,順便自己也複習一下相關的東西

記憶體和偵錯程式

學習c++的時候老師一定說過,變數都是儲存在記憶體中的

每個變數獨佔一塊空間,在宣告的時候系統為其分配

例如int型別的變數獨佔4位元組的空間,char型別的變數獨佔1位元組的空間

前段時間學習程式設計的時候,經常有同學來問問題,例如我覺得我寫的沒錯為什麼結果不對啊?這樣執行為什麼會報錯啊,等等

事實上除錯(debug)寫好的程式是一項非常重要的技能

除了最簡單的在**中新增log輸出(cout就可以)以外,偵錯程式也是很好用的工具:

下斷以後可以靈活的跟蹤程式執行路徑,包括單步執行、跳過函式等等

左下角的監視視窗還可以看到所有變數的值,方便地看出變數的變化是否如期

同時可以自己新增,例如:

還有記憶體轉儲視窗,可以直接顯示記憶體

可惜ce的轉儲視窗只能檢視,不能修改

貌似vs的記憶體視窗是可以直接修改的

cheatengine

與小時候用過的金山遊俠修改器類似,通過值的變化來追蹤變數的位址

我們以植物大戰殭屍為例,很輕鬆就能找到變數的位址

手動修改非常簡單,但是如果需要更進一步的修改,例如自動變化呢?

就讓我們通過程式來解決吧

ce中可以看到位址,那麼同理構造乙個指標,然後修改其值的方法是不行的

編譯器會報錯,因為系統決定每個程序只能控制自己的記憶體,不能隨便訪問、寫入其他程序的記憶體

因此需要下面介紹的功能

dll注入

動態鏈結庫(dll)是exe的補充元件,與exe共享記憶體

它可以被exe呼叫,也可以反過來呼叫exe

最初目的其實是為了函式的通用

不過由於注入後就具有了該程序記憶體的許可權,因此可以用來製作外掛程式

我們將之前的程式改為dll,然後注入(注入可以自己寫程式,也可以通過現成的程式)

即可注意呼叫的函式需要是匯出函式,否則會報錯

但是也可以通過dllmain來操作,這個函式與main類似,當dll被載入時會自動呼叫它

注入後即可看到程式的變數產生變化

c. 明日計畫

上海大學生網路安全競賽

Apache Hive走向記憶體計算,效能提公升26倍

apache hive 2.1 已於幾個月前發布,它引入了記憶體計算,這使得hive計算效能得到極大提公升,這將會影響sql on hadoop 目前的競爭局面。據測試,其效能提高約26倍。apache hive 2.1新引入了6大效能,包括 1 llap。apache hive 2.0引入了lla...

大小端模式和直接向記憶體賦值

一 大小端模式 大端模式 資料的低位儲存於記憶體的高位位址,資料的高位儲存於記憶體的低位位址。小端模式 資料的低位儲存於記憶體的地位位址,資料的高位儲存於記憶體的高位位址。在32位處理器中,儲存int型資料需要4個位元組。資料0x12345678 大端模式和小端模式儲存示意圖如下。需要注意的是 無論...

向記憶體中快取 知識點 記憶體與外存的關鍵區別

it168 編譯 計算機記憶體和外部儲存之間的主要區別是易失性和非易失性,以及效能和容量之間的差別。易失性vs非易失性。記憶體,例如隨機訪問記憶體 ram 是具有易失性的。這意味著當系統斷電時,資料就會丟失。與之相反,外部儲存是非易失性的,因此即使沒有電源,它也能儲存資料。效能和容量。在大多數情況下...