目錄這些問題主要是工作中會遇到.包括後面的逆向對抗技術.有的可能只會提供思路.並且做相應的解決與對抗.
假設現在有乙個程序.開啟了你的檔案.而你現在無法關係.
其中乙個原因就是控制代碼被占用了. 因為控制代碼占用的原因你無法刪除.
這裡遇到了控制代碼占用.所以採用解除控制代碼的方法.
無法刪除例子如下.
我自己閃現了乙個解除檔案控制代碼並刪除檔案的方法. 需要使用未公開的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 ...