逆向對抗技術之ring3解除檔案控制代碼,刪除檔案

2022-03-20 19:35:44 字數 2287 閱讀 8711

目錄這些問題主要是工作中會遇到.包括後面的逆向對抗技術.有的可能只會提供思路.並且做相應的解決與對抗.

假設現在有乙個程序.開啟了你的檔案.而你現在無法關係.

其中乙個原因就是控制代碼被占用了. 因為控制代碼占用的原因你無法刪除.

這裡遇到了控制代碼占用.所以採用解除控制代碼的方法.

無法刪除例子如下.

我自己閃現了乙個解除檔案控制代碼並刪除檔案的方法. 需要使用未公開的api

原理很簡單.主要是使用zwqueryobject的 2號功能獲取控制代碼型別. 使用1號功能獲取控制代碼物件檔名. 使用duplicatehandle傳入duplicate_close_source巨集在拷貝的時候關閉其控制代碼占用.

步驟:1.隨便開啟乙個檔案.獲取其檔案控制代碼在作業系統的中型別

2.開啟程序.使用查詢控制代碼個數(這步可以略過,不查詢)

3.迴圈拷貝程序控制代碼,拷貝成功的使用zwqueryobject的2號功能遍歷出檔名

4.解析檔名是否跟你要解除的檔名一樣.

4.1 如果一樣.則呼叫duplicatehandle. 傳入duplicate_close_source

1.查詢檔案控制代碼型別

setp 1. 隨便開啟乙個檔案根據檔案控制代碼查詢檔案型別號.

dword dwsystemfilehandletype = 0;

tchar szpath[max_path] = ;

getmodulefilename(getmodulehandle(null), szpath, max_path * sizeof(tchar));

handle hfile = createfile(szpath, generic_read, file_share_read, null, open_existing, 0, null);

if (invalid_handle_value == hfile)

return 0;

dwsystemfilehandletype = nathndgethandletypewithhandle(hfile);

nathndgethandletypewithhandle內部實現.

因為自己封裝在專案工程中.所以直接拿出來了.想要自己用自己需要改改.

這個函式主要作用就是用 zwqueryobject的2號功能.遍歷出檔案型別號.

ushort cnativeapimanger::nathndgethandletypewithhandle(handle handle)

2.開啟程序獲得程序控制代碼
handle hprocess;

hprocess = openprocess(process_all_access,false, dwpid);

3.遍歷程序拷貝控制代碼.判斷檔案型別過濾.關閉控制代碼

這個屬於核心**

handle htarhandle;

for (int i = 0; i < 0x40000; i++) //65535

;if (pfileinfo->name.buffer == 0)

continue;

memcpy(pszbuffer, pfileinfo->name.buffer, pfileinfo->name.length);

widechartomultibyte(cp_acp, 0, pszbuffer, 0x256 * sizeof(tchar), szbuffer, 0x256, 0, 0);

string str = szbuffer;

str.substr(str.find_last_of("\\"));

if (str.find(occfilename) != string::npos)}}

}closehandle(hprocess);

return false;

nathndduplicatehandle其實內部就是對duplicatehandle函式的封裝.

關於結構網上也很多.我這裡也直接進行拷貝了.

.h跟.cpp都提供一下.看的容易.

提取碼:nxo3

20145329 《網路對抗技術》PC平台逆向破解

實踐是在非常簡單的乙個預設條件下完成的 1 關閉堆疊保護 2 關閉堆疊執行保護 3 關閉位址隨機化 4 在x32環境下 5 在linux實踐環境 shellcode概念 shellcode是一段用來獲取互動式shell的機器指令 x4 x3 x2 x1為大致估計的資料溢位並將覆蓋到堆疊上的返回位址的...

逆向技術疑惑

1 記憶體中類例項的記憶體情況,不明白有1 class ex2 int var1 public virtual int get sum int x,int y virtual void reset values class ex3 public ex2 int var2 public virtual...

網路對抗技術1

1 虛擬機器安裝與除錯 安裝windows和linux kali 兩個虛擬機器,均採用nat網路模式,檢視主機與兩個虛擬機器的ip位址,並確保其連通性。同時為兩個虛擬機器做乙個快照 2 windows基本命令 每個命令做完並附截圖 o ping 主機可達 dir顯示目錄 cd 進入目錄 arp a ...