C DLL遠端執行緒注入後,怎麼用指標直接讀取記憶體值?

時間 2021-08-12 16:14:02

1樓:Irons Du

你已經遠端注入了麼?

如果是,那麼你的真正問題是:需要學習C++物件模型。

如果不是,則你需要學習遠端注入的技術,網上很多,或者書籍《黑客程式設計入門》

2. 如果0x481a78c3起始位址對應的記憶體是包含了string物件的話,你可以用它*((string*)0x481a78c3)去解釋它,從而讀取出string,否則你就要找到string物件的位址。

3. MessageBox照樣可以在console命令列終端程式裡使用,可以參考MSDN,或者可以自己在網上找資料依葫蘆畫瓢吧。

2樓:馬謙

1、強制轉換,自然是轉換為你想要的型別。(char*)…或(wchar*)…

2、如果是char*,就呼叫MessageBoxA,如果是wchar*,就呼叫MessageBoxW。MessageBox自然不是c語言自帶的,但確實是c語言寫的函式,因為當年windows作業系統主體就是用c語言寫的。

如果是其他string,已有答覆,這裡不重複。

3樓:Aman

問的不是很清楚,讓我們從頭捋一遍;假設

你使用 GetProcAddress 獲取了 kernel32.dll 中 LoadLibraryA 的位址

你使用 VirtualAllocEx 和 WriteProcessMemory 將你的 inject.dll 的路徑寫入了目標程序的位址空間中

你使用 CreateRemoteThread 在目標程序中建立了執行緒,並以 LoadLibraryA 為執行例程、以 inject.dll 的路徑為引數,成功載入了你的 inject.dll

現在,你在 inject.dll 通過某種方式得到了乙個 string 的位址(並儲存在乙個 DWORD 變數中),希望通過 MessageBox 將其顯示出來

你沒有提到 string 是乙個 C-style null-terminated string 還是乙個 C++ std::string,如果是 C string 的話它應該能直接傳入 MessageBoxA 中:

DWORD

addr

=...;

MessageBoxA

(NULL,(

const

char*)

addr,""

,MB_OK

);這裡我們假設是 std::string(因為你在問題裡打了 C++ 標籤)。我們知道,不同的 C++ 編譯器中 std::

string 的實現不同,記憶體布局不同。假設目標程序使用 msvc 編譯,那麼你需要了解它使用了哪個版本的 msvc(以及使用了 Release 還是 Debug 的版本的)執行時庫(可以用 msvc 或 WinDbg 等偵錯程式掛載到目標程序上檢視,也可以用 msvc 自帶的 dumpbin 工具檢視 imports)。

於是我得到兩個思路:

搞清目標程序使用的編譯器和版本後,進而搞清它的 std::string 的記憶體布局,並根據該布局找到實際的 null-terminated string 的位址(注意 std::string 的設計上可能存在針對短字串的優化)

搞清目標程序使用的編譯器和版本後,用相同的編譯器編譯你的 inject.dll,保證 std::string 的記憶體布局是跟目標程序一致的,這樣就能在 inject.

dll 中直接使用 std::string::c_str() 了:

void

showMessageBox

(DWORD

addressOfStdString

)兩種方法有各自的優勢和劣勢,僅供參考。

4樓:心宇

如果你只是想讀寫遠端程序記憶體資料的話完全不需要遠端執行緒注入。

ReadProcessMemory

WriteProcessMemory

這倆api直接可以完成你的需求。

用vim開啟後中文亂碼怎麼辦?

set encoding cp936 可以解決中文檔案亂碼問題基本上適配所有編碼的配置 setencoding utf 8nobomb settermencoding utf 8set fileencodings utf 8,gbk,utf 16le,cp1252 iso 8859 15 ucs b...

人物像在玻璃後的效果怎麼用ps做的

天邊魚 1 人物 2 加淡藍色圖層 3 淡藍色圖層調透明度 4 淡藍色圖層新建蒙版 5 用畫筆在蒙版上塗出來想暴露的位置 6 Ctrl點蒙版,獲得選區。7 Ctrl alt I 反選,點到人物那個圖層8 濾鏡,高斯模糊。9 隨便找個雨滴素材放進去。10 寫字。 小麥丫 都閃開,這個逼讓我來裝!素材1...

用鋼絲球刷鍋後粘鍋怎麼辦(鐵鍋)?

小梅優選 鐵絲球把鐵鍋表面的油膜給清洗掉了,所以炒菜會粘,需要重新開次鍋 1.鐵鍋清洗乾淨,小火燒幹水分,多倒點食用油晃動鍋體,讓油充分浸入鍋體的每一部分,再倒出多餘的食用油,放入事先準備好的一小塊豬油或者肥肉,小火燒熱,來回擦拭鍋體,保證鍋的每一部分都泡了個油澡,多重複幾次此動作,我一般是把放進去...