如何解除安裝其它程序中載入的指定dll
2008-02-17 12:46
#include
void __fastcall unloaddll(string str_proce, string str_dllname)
flag = process32next(snapshot,&pinfo);
}
closehandle(snapshot);
if (dw_pid == null)
dword dwhandle = 0;
handle hprocess1 = openprocess(process_create_thread|process_vm_operation|process_vm_write,false, dw_pid) ;
if (!hprocess1)
return ;
// 向目標程序位址空間寫入dll名稱
dword dwsize, dwwritten;
dwsize = str_dllname.length() + 1;
lpvoid lpbuf = virtualallocex( hprocess1, null, dwsize, mem_commit, page_readwrite );
if ( !writeprocessmemory( hprocess1, lpbuf, (lpvoid)str_dllname.c_str(), dwsize, &dwwritten ) )
lpvoid pfun = getprocaddress(getmodulehandle("kernel32"), "getmodulehandlea");//getmodulehandlea;
handle hthread = createremotethread( hprocess1, null, 0,(lpthread_start_routine)pfun,
lpbuf , 0, null);
if (hthread == null)
// 等待getmodulehandle執行完畢
waitforsingleobject( hthread, infinite );
// 獲得getmodulehandle的返回值
getexitcodethread( hthread, &dwhandle );
// 釋放目標程序中申請的空間
virtualfreeex( hprocess1, lpbuf, dwsize, mem_decommit );
closehandle(hthread);
// 使目標程序呼叫freelibrary,解除安裝dll
pfun = getprocaddress(getmodulehandle("kernel32"), "freelibrary");
hthread =createremotethread( hprocess1, null, 0, (lpthread_start_routine)pfun,(lpvoid)dwhandle, 0, null);
// 等待freelibrary解除安裝完畢
waitforsingleobject(hthread, infinite);
closehandle(hthread);
closehandle(hprocess1);
}
//
void __fastcall tform1::button1click(tobject *sender)
解除安裝掉指定程序中的指定模組
解除安裝掉指定程序中的指定模組,一般用來清除dll木馬 注 1,對於多次呼叫了loadlibrary的程序,需要多次呼叫該函式才能夠保證從該程序完全解除安裝 2,只有程序建立後動態載入的dll呼叫該函式才能夠達到效果 如果指定程序的引入表中包含了欲解除安裝的模組,呼叫雖然能夠成功,但是該模組的函式資...
如何檢視開啟指定檔案的程序
解決方案二 借助 proc 相關鏈結 有時候你會發現某些檔案在不停的增長嚴重占用了磁碟空間,你想找到罪魁禍首是誰,該怎麼做呢?涉及到的命令 fuser 本部分以archlinux系統為例 在archlinux上,fuser命令是屬於psmisc包中的,因此執行下面命令安裝 sudo pacman s...
Linux下如何顯示指定父程序號的程序樹
ps ahp linux 命令,預設情況下 bsd 體系沒有,ports 裝一下 功能說明 以樹狀圖顯示程式。語 法 pstree acghlnpuuv h 程式識別碼 程式識別碼 使用者名稱 補充說明 pstree指令用ascii字元顯示樹狀結構,清楚地表達程式間的相互關係。如果不指定程式識別碼或...