如何解除安裝其它程序中載入的指定DLL

2021-06-16 02:30:19 字數 1741 閱讀 5799

如何解除安裝其它程序中載入的指定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字元顯示樹狀結構,清楚地表達程式間的相互關係。如果不指定程式識別碼或...