木马编程天天练 步入第2天 进程管理
来源:互联网 发布:域名 服务器价格 编辑:程序博客网 时间:2024/05/01 13:56
1.进程枚举
----------------------------Snapshot函数
举例代码:
#include<windows.h>
#include<Tlhelp32.h>
#include<stdio.h>
int main()
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
HANDLE hProcessSnap;
BOOL bMore;
int count = 0;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf("CreateToolhelp 函数调用失败/n");
return 0;
}
bMore = Process32First(hProcessSnap,&pe32);
printf("%20s/t%10s/n","进程名","PID");
printf("======================================/n");
while(bMore)
{
count++;
printf("%20s/t%10d/n",pe32.szExeFile,pe32.th32ProcessID);
bMore = Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
return 0;
}
-----------------------EnumProcess函数
举例代码:
#include<windows.h>
#include<stdio.h>
#include<psapi.h>
#pragma comment(lib,"psapi.lib");
BOOL UpdateProcessPrivilege(HANDLE hProcess,LPCTSTR lpPrivilegeName = SE_DEBUG_NAME);
void main()
{
UpdateProcessPrivilege(GetCurrentProcess());
DWORD processcount;
DWORD cbNeeded;
DWORD ProcessId[1024];
EnumProcesses(ProcessId, sizeof(ProcessId), &cbNeeded);
processcount=cbNeeded/sizeof(DWORD);
HMODULE hModule;
char szPath[MAX_PATH];
for (DWORD i=0;i<processcount;i++)
{
//打开进程
HANDLE hProcess=OpenProcess(
PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
FALSE, ProcessId[i]);
memset(szPath,0,sizeof(szPath));
if (hProcess)
{
EnumProcessModules(hProcess,
&hModule, sizeof(hModule), &cbNeeded);
GetModuleFileNameExA(hProcess,
hModule, szPath, sizeof(szPath));
printf("ProcessID: %d (%s)/n",ProcessId[i],szPath);
}
else
printf("Failed!!!/n");
CloseHandle(hProcess);
}
getchar(); // 暂停.
}
BOOL UpdateProcessPrivilege( HANDLE hProcess, LPCTSTR lpPrivilegeName)
{
HANDLE hToken;
int iResult;
TOKEN_PRIVILEGES TokenPrivileges;
if (OpenProcessToken( hProcess, TOKEN_ALL_ACCESS, &hToken ) )
{
LUID destLuid;
if (LookupPrivilegeValue( NULL, lpPrivilegeName, &destLuid ) )
{
TokenPrivileges.PrivilegeCount = 1;
TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
TokenPrivileges.Privileges[0].Luid = destLuid;
if ( iResult =AdjustTokenPrivileges( hToken, FALSE,
&TokenPrivileges, 0, NULL, NULL )) {
return TRUE;
}
}
}
return FALSE;
}
2.进程关闭
ExitProcess
TerminateProcess
3.枚举进程模块
代码示例:
int Modlist(DWORD Pid)
{
HANDLE SnapP;
struct tagMODULEENTRY32 modsnap;
DebugPrivilege(SE_DEBUG_NAME,TRUE);
SnapP = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Pid);
if(SnapP == (HANDLE)-1)
{
sprintf(Temp,"Fail To CreateToolhelp32Snapshot/r/n");
SendMessage(Socket,Temp);
return 1;
}
modsnap.dwSize = sizeof(tagMODULEENTRY32);
if(Module32First(SnapP,&modsnap))
{
sprintf(Temp,"The Process[%d] Module Infomation:/r/n/r/nModuleName ModulePath/r/n",Pid);
strcat(Temp,"-------------------------------------------------------------------------------/r/n");
printf("%s",Temp);
do
{
sprintf(Temp,"%-21s%s/r/n",modsnap.szModule,modsnap.szExePath);
printf("%s",Temp);
}
while(Module32Next(SnapP,&modsnap));
sprintf(Temp,"/r/nList Process Module Compeleted/r/n");
}
else
sprintf(Temp,"Fail To Process32First/r/n");
printf("%s",Temp);
DebugPrivilege(SE_DEBUG_NAME,FALSE);
CloseHandle(SnapP);
return 0;
}
- 木马编程天天练 步入第2天 进程管理
- 木马编程天天练 进入第3天 服务管理
- 木马编程天天练 第6天 用户账户管理
- 木马编程天天练 第4天 网络通信
- 木马编程天天练 第5天 程序自删除
- 木马编程天天练 开始第1天 获取系统信息
- java天天练2
- 木马编程DIY第10篇之网络进程监视
- 第2章 进程管理
- 第2章 进程管理
- java天天练
- 天天天天天天天
- 程序天天练(2):字符串中删除子字符串
- 木马编程DIY之注册表管理
- 发的规划的法规天天天天天天天天天天天天天天天天天天天天天天天天天天天
- 程序天天练(1)
- 考研高数天天练
- 六级天天练(11.19)
- How to Write a Useful Bug Report
- How to create good test case template
- X-Window系统介绍
- 重写operator new 和 operator delete
- 深入讲解数据库设计的相关概念
- 木马编程天天练 步入第2天 进程管理
- 如何配置软件测试环境
- BCGControlBar 的使用方法(转)
- iSCSI Target and Initiator
- 黑盒测试的测试用例设计方法(经典理论知识,推荐)
- C#反射之Assembly.Load,Assembly.LoadFile 与 Assembly.LoadFrom方法介绍
- a
- 【转】流传硅谷的一则冷笑话 - 皇马啸西风的一亩三分地 - JavaEye技术网站
- 新文章