程式注入之DLL注入
前言
DLL注入是我在大一的時候接觸的一種技術,那時候還不懂,最近結合小程式詳細的理解了一下。
DLL注入是將程式碼注入到一個遠端程式中,並讓遠端程式呼叫LoadLibrary()函式,從而強制遠端程式載入一個DLL程式到程式中。而當DLL被載入時就會執行DLL中的DllMain()函式,所以就會為惡意程式碼的執行提供機會,而因為DLL本身是由感染後的程式載入的同時PE檔案也並沒有對系統進行過多的敏感操作,所以這種技術具有相當強的一種隱蔽性。
圖解
程式分析
這裡的程式是由一個PE檔案和一個DLL檔案構成,毫無疑問,DLL檔案是需要注入的,裡面也會有相應的惡意程式碼,執行一下之後,啟動explorer.exe就會出現異常,每分鐘都會出現彈窗。
首先我們來分析一下主要的PE檔案。進入main()函式是這樣的
首先載入了psapi.dll並且匯入了三個函式,EnumProcessModules(),EnumProcesses(),GetModuleBaseNameA()。
然後獲取DLL的路徑,呼叫EnumProcesses()獲取記憶體中所有程式的PID,形成一個陣列,讓陣列中的每一個程式的pid成為引數傳入sub_401000()。
所以我們進入sub_401000(),這個函式長這樣
應該是對pid相應的程式名與explorer.exe進行比對,如果相同就返回1,進入後面的操作
獲取explorer.exe的控制程式碼,使用VirtualAllocEx()函式動態的在explorer.exe中分配一塊記憶體,成功之後指向那塊記憶體的指標會儲存在lpParameter中,與程式控制程式碼一起作為引數傳入WriteProcessMemory(),寫入的資料就是DLL的路徑。
然後Kernel32.dll中的LoadLibraryA()函式載入DLL也會被CreateRemoteThread()函式強行呼叫,從而執行DLL注入。
而我們看到DLL中就會有彈窗的相關程式碼。
DLL注入技術是比較經典的技術,我本身也覺得比較厲害,所以還是值得一學
程式與內容源自《惡意程式碼分析實戰》一書12-1
相關文章
- C++ DLL注入和程式碼注入C++
- 技術分享 | DLL注入之遠執行緒注入執行緒
- WINDWOS 系統程式DLL檔案注入。
- sql注入之union注入SQL
- C# DLL注入技術C#
- 8 - DLL注入和解除安裝
- sql注入之堆疊注入及waf繞過注入SQL
- iOS逆向之 程式碼注入iOS
- 常見程式注入的實現及記憶體dump分析——反射式DLL注入(上)記憶體反射
- 常見程式注入的實現及記憶體dump分析——反射式DLL注入(下)記憶體反射
- C++ DLL注入工具完整原始碼C++原始碼
- Windows提權實戰————4、DLL注入Windows
- QueueUserApc實現DLL注入的測試
- 使用微軟Detours庫進行DLL注入微軟
- sql注入之型別及提交注入SQL型別
- IOC注入技術之編譯時注入編譯
- Windows訊息鉤取(簡單DLL注入)Windows
- 程式碼注入
- Java之JNDI注入Java
- 遠端執行緒注入dll,突破session 0執行緒Session
- Spring注入:配置注入(set注入和構造器注入)與註解注入Spring
- Java安全之JNDI注入Java
- SQL 注入:聯合注入SQL
- COM 程式注入技術
- 封神臺MYSQL 注入 - Dns注入MySqlDNS
- 遠端執行緒注入DLL突破session 0 隔離執行緒Session
- php注入之完全版PHP
- SQL Server 之 SQL 注入篇SQLServer
- Sql注入之WAF繞過SQL
- win10最強注入工具,遠端執行緒注入、訊息鉤子注入、輸入法注入、EIP注入、登錄檔注入、APC注入(APC好像不能用)Win10執行緒
- Spring 原始碼分析之 bean 依賴注入原理(注入屬性)Spring原始碼Bean依賴注入
- C10-08-寬位元組注入-mysql注入之getshell-sqlmapMySql
- 封神臺Oracle注入- 報錯注入Oracle
- 32位程式注入64位程式
- DLL解除安裝(建立遠端執行緒解除安裝強制注入的dll)執行緒
- iOS逆向 程式碼注入+HookiOSHook
- git版本資訊注入go程式GitGo
- 程式注入後門工具Cymothoa