您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何實現Windows 10進程鏤空技術,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在Win10 x64環境下替換正常的進程,是一個比較高超的技術。使用該技術,可以內存執行病毒、木馬。在文件層面實現免殺。可以把一個木馬使用DES加密,放在資源里。執行時,從資源里釋放出來,在內存里進行DES解密,注入到一個系統的進程中。
1. VisualStudio 2015 企業版
2. 普通程序 Notepad.exe (C:\windows\system32\Notepad.exe)
3. 木馬程序 MalWare.exe
4. 源碼下載地址,http://www.isafe.cc/article.asp?id=77
5. EXE下載地址,http://www.isafe.cc/article.asp?id=77
創建一個掛起的進程notepad.exe->讀取線程上下文->讀取進程內存->讀取Notepad.exe原始入口點->卸載Notepad.exe占用的內存->將MalWare.exe二進制放入內存緩沖區->在Notepad.exe進程中分配一個內存空間->將MalWare.exe注入到Notepad.exe的進程里->修改Notepad.exe的區段->修改Notepad.exe的入口點->恢復主線程->成功注入。
BOOL WINAPI CreateProcess( _In_opt_ LPCTSTR lpApplicationName, _Inout_opt_ LPTSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTESlpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTESlpThreadAttributes, _In_ BOOL bInheritHandles, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCTSTR lpCurrentDirectory, _In_ LPSTARTUPINFO lpStartupInfo, _Out_ LPPROCESS_INFORMATIONlpProcessInformation);
a.) lpApplicationName 這個參數是可執行文件的路徑。例如
c:\programfiles\sub dir\program.exe
c:\program files\a.exe
netstat
b.) lpCommandLine 這個表示應用程序的參數。例如 -an
c.) lpProcessAttributes 進程屬性結構體變量
d.) lpThreadAttributes 線程屬性結構體變量
e.) bInheritHandles 指定當前進程內句柄不可以被子進程繼承
f.) dwCreationFlags 進程創建標識符,CREATE_SUSPENEDE 表示創建一個掛起的進程。
g.) lpEnvironment 指向一個新進程的環境塊。如果此參數為空,新進程使用調用 進程的環境。
h.) lpCurrentDirectory 指向一個以NULL結尾的字符串,這個字符串用來指定子進程的 工作路徑。這個字符串必須是一個包含驅動器名的絕對路徑。如果這個參數為NULL,新進程將使用與調用進程相同的驅動器和目錄。
i.) lpStartupInfo 指向一個用于決定新進程的主窗體如何顯示的STARTUPINFO結 構體。
j.) lpProcessInformation保存進程所有信息的結構體變量。
CreateProcess函數用于創建一個進程,cAppName為C:\\Windows\\notepad.exe,是程序文件的路徑,第6個參數為CREATE_SUSPENDED,表示創建一個掛起的進程。最后2個參數si,pi保存了進程的相關信息(進程的句柄,線程的句柄等)。
GetThreadContext函數用于獲取線程上下文。
Pi.hThread為線程句柄,
context線程信息結構體。
ReadProcessMemory函數用于讀取另一個進程的內存。這里dwVictimBaseAddr存放讀取的數據,大小為4個字節。
原型
BOOL ReadProcessMemory(HANDLE hProcess,LPCVOIDlpBaseAddress,LPVOID lpBuffer,DWORD nSize,LPDWORDlpNumberOfBytesRead);
第一個參數hProcess,要讀取的進程句柄。
第二個參數lpBaseAddress,要讀取的進程的內存首址。開始地址。
第三個參數lpBuffer,接收數據內容的緩沖區。
第四個參數 nSize,從內存中讀取的字節數。
第五個參數lpNumberOfBytesRead,已經讀取的字節數。
函數返回0表示調用失敗。
pfnNtUnmapViewOfSection函數用于卸載進程占用的內存
VirtualAllocEx函數用于在指定進程中分配一個內存空間。
函數原型:
LPVOIDVirtualAllocEx(HANDLE hProcess,LPVOIDlpAddress,SIZE_T dwSize,DWORDflAllocationType,DWORD flProtect);
第一個參數hProcess,需要在其中分配空間的進程的句柄。
第二個參數lpAddress,分配的內存首址。
第三個參數 dwSize,分配的內存大小。
第四個參數flAllocationType,內存區域的類型。
第五個參數flProtect,內存保護屬性。
WriteProcessMemory函數用于向Notepad.exe進程寫入任何數據。
函數原型:
BOOL WINAPI WriteProcessMemory( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten );
第一個參數hProcess,待操作的進程句柄。
第二個參數 lpBaseAddress,要寫入數據的起始地址。
第三個參數lpBuffer,要寫入數據的緩沖區首址。
第四個參數 nSize, 要寫入數據的長度。
第五個參數lpNumberOfBytesWritten,已寫入的數據長度。
SetThreadContext()函數用于恢復線程上下文,這里指定了新的入口點地址 Rcx
ResumeThread ()函數用于啟動掛起的線程。
必須用Visual Studio 2015進行編譯。源碼下載(http://www.isafe.cc/article.asp?id=77)
在“解決方案資源管理器”中,右鍵->重新生成
在輸出窗口中看到成功1個(注意這里生成的是一個Release版的64位程序)
源碼下載(http://www.isafe.cc/article.asp?id=77)
打開VS2015,點擊菜單[文件]->[打開]->[項目/解決方案]。
打開Malware.vcxproj工程文件,進行編譯,模式為Release,平臺為x64。
在輸出窗口中,提示成功1個。
將ProcessReplacement.exe拖入虛擬機。
雙擊,提示
看樣子是缺少什么文件?將VS2015環境下的文件vcruntime140.dll,復制到虛擬機
雙擊執行ProcessReplacement.exe
小編介紹的Win10 x64進程鏤空技術,可以在文件層面實現木馬免殺。
上述就是小編為大家分享的如何實現Windows 10進程鏤空技術了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。