軟體安全 顯示選中程序的API函式

2021-08-01 21:33:14 字數 2075 閱讀 7721

1.顯示當前的所有程序:

//顯示所有程序 

void getallprocess(handle handle)

//通過程序號選中程序

int processid;

printf("請輸入你需要的程序號:");

scanf("%d",&processid);

//再次呼叫 process32first 函式,獲取程序列表

process32first(handle,info);

//重複呼叫 process32next,直到函式返回 false為止,對比程序號,找出指定程序

while(process32next(handle,info)!=false)

bool i = module32first(hfilename,&pes);

char* ppath=pes.szexepath;

printf("processdir: %s\n",ppath);

printf("processname:%s\nprocessid:%d\n",info->szexefile,info->th32processid);

//false=可繼承,info->th32processid=程序id

} }

closehandle(handle);

return;

}

2.通過程序路徑獲取該程序,對映到本程序,從而再獲取本程序載入的api函式 :

int main()

else

//建立乙個新的程序對映到核心物件

if(!hfilemap)

else

//對映檔案檢視到呼叫程序的位址空間,返回值是對映檢視的開始位置

lpvoid lpmemory=mapviewoffile(hfilemap,file_map_read|file_map_write,0,0,0);

hmodule hmodule = ::getmodulehandlea(null);

image_dos_header* pdosheader=(image_dos_header*)hmodule;

image_optional_header* popntheader=(image_optional_header*)((byte*)hmodule+pdosheader->e_lfanew+24); //這裡加24

image_import_descriptor* pimportdesc=(image_import_descriptor*)((byte*)hmodule

+popntheader->datadirectory[image_directory_entry_import].virtualaddress);

while (pimportdesc->firstthunk)

printf("\n");

pimportdesc++;

}

//停止當前程式的乙個記憶體對映

unmapviewoffile(lpmemory);

//關掉該新建的檔案對映

closehandle(hfilemap);

//關掉原檔案控制代碼

closehandle(hfile);

system("pause");

return 0;

}

3.依舊存在的問題:

4.部分結果截圖:

,有更為詳細的介紹,希望一起交流、學習,一起進步~

linux中程序的狀態

1.使用命令 top c 來檢視程序狀態 redhat localhost top c r工作中的程序 s可中斷的睡眠狀態 i空閒狀態 idle o程序正在處理器執行 b程序正在等待更多的記憶體頁 d不可中斷的睡眠狀態 t暫停狀態或跟蹤狀態 x出狀態,程序即將被銷毀 z殭屍程序1 task runn...

python中的程序 Python中程序

程式 程式 編寫完的 稱為程式。程序程序 又稱重量級程序,正在執行中的程式稱為程序。程序的執行會占用記憶體等資源。多個程序同時執行時,每個程序的執行都需要由作業系統按一定的演算法 rr排程 優先數排程演算法等 分配記憶體空間。並行與併發 並行 在多核系統中,每個cpu執行乙個程序,可以理解為cpu的...

linux系統中程序的建立

linux系統的程序建立時區別於其他的系統的,它並沒有提供spawn機制。而是把乙個程序的建立分成了兩步 fork和exec 先建立乙個程序,再讓子程序執行新的程式。首先系統呼叫fork 函式,若呼叫成功則產生乙個新的程序,值的一提的是該函式會產生兩個返回值。當父程序呼叫的時候返回0,子程序呼叫的時...