在乙個程序中建立並啟動乙個新程序,無論是對於病毒木馬程式還是普通的應用程式而言。這都是乙個常見的技術,最簡單的方法無非是直接通過呼叫win32 api函式建立新程序。使用者層上,微軟提供了winexec、shellexecute和createprocess等函式來實現程序建立
//************************************
//函式名: cstartdlg::winexec_start
//返回型別: bool
//功能: 以winexec的方式建立程序
//引數1: char * pszexepath exe檔案路徑
//引數2: uint uicmdshow 顯示方式
//************************************
bool cstartdlg::winexec_start(char *pszexepath, uint uicmdshow)
return
false;
}
//************************************
//函式名: cstartdlg::shellexecute_test
//返回型別: bool
//功能: 以shellexecute的方式建立程序
//引數1: cstring pszexepath exe檔案路徑
//引數2: uint uicmdshow 顯示方式
//************************************
bool cstartdlg::shellexecute_start(cstring pszexepath, uint uicmdshow)
return
false;
}
//************************************
//函式名: cstartdlg::createprocess_start
//返回型別: bool
//功能: 以createprocess方式建立程序
//引數1: char * pszexepath exe檔案路徑
//引數2: uint uicmdshow 顯示方式
//************************************
bool cstartdlg::createprocess_start(char*pszexepath, uint uicmdshow)
; process_information pi;
bool bret =false;
si.cb = sizeof
(si);
si.dwflags = startf_useshowwindow; //
指定wshowwindow成員有效
si.wshowwindow =uicmdshow;
bret = createprocess(null, (lpwstr)pszexepath, null, null, false, create_new_console, null, null, &si, &pi);
if(bret)
return
false;
}
程序狀態 API
1.列舉當前主機中的程序,包括程序pid,控制代碼,程式映像路徑等.2.列舉當前程序的執行緒,包括tid,控制代碼等 3.列舉程序載入的模組,包括模組映像路徑,控制代碼,位置等.4.獲取程序的記憶體使用情況,包括模組映象路徑,控制代碼,位置等.5.獲取程序的堆分配資訊,包括程序的堆,在堆上分配的記憶...
程序相關API
1 每個程序都有一張私有的控制代碼表,系統有一張全域性控制代碼表 2 程序id在所有程序都有意義 演示 3 此 開啟乙個軟體,並列印程序id和控制代碼 include stdafx.h include windows.h 開啟子程序函式 bool createprocess ptchar route...
程序相關API
示例 include include include intmain else if pid 0 return0 include include include intmain else if pid 0 printf d n data return0 執行結果 return fork 57080 ...