2016wapjpc 发表于 2017-7-27 12:50

【笔记】进程的创建

当系统启动后,创建了桌面进程explorer.exe,当运行一个exe时,就是explorer.exe的子进程。

1创建进程,调用 create process创建进程,在高2g有进程的名字,计数器,空的句柄表。当调用 create process时,
会在这张表上写下它的内核地址,及所对应的句柄。
2分配4g的虚拟空间,peloader

3,create thread, context.eip = imagebase+oep,程序跑起来。

VOID TestCreateProcess()
{
        STARTUPINFO si = {0};
        PROCESS_INFORMATION pi;

        si.cb = sizeof(si);

        TCHAR szCmdline[] = TEXT(" http://www.52pojie.cn");

        BOOL res = CreateProcess(
          TEXT("c://program files//internet explorer//iexplore.exe"),
                szCmdline,
                NULL,
                NULL,
                FALSE, //不允许inherit parent
                CREATE_NEW_CONSOLE,
                NULL,
                NULL,
                &si,   //默认形态
                &pi      //process_information结构,handle and id
                );

        printf("%d %d %d %d \n",pi.hProcess,pi.dwProcessId,pi.hThread,pi.dwThreadId);
}
int main(int argc, char* argv[])
{
    TestCreateProcess();

        getchar();
        return 0;
}

页: [1]
查看完整版本: 【笔记】进程的创建