ProcessHacker 源码分析1

本文介绍了ProcessHacker 2.33版本的主要更新,并详细分析了其wWinMain函数,涉及到COM初始化、线程环境块、进程环境块等关键概念。同时,文章提到了ProcessHacker的程序结构,包括用户程序和驱动程序部分,并引用了相关Windows内核分析的参考书籍。
摘要由CSDN通过智能技术生成

ProcessHacker 的版本在不断更新,版本2.33相应的开发环境也于是俱进地更新到了VS2013.之前研究的是2.88版本相应的是VS2010.

 下定决心好好研究 ProcessHacker 和 ReatOS的代码。结合的参考资料有:毛德操的《windows 内核情景分析》还用潘爱民的《windows内核原理与实验》、经典的《Windows Internal》系列书籍、零散资料。

 

 ProcessHacker主要分为两部分,用户程序部分ProcessHacker.exe和一个驱动程序kprocesshacker.sys .分析工作也自然地分为两部分.

先贴出main函数。

INT WINAPI wWinMain(
    _In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ PWSTR lpCmdLine,
    _In_ INT nCmdShow
    ) 
{
    LONG result;
#ifdef DEBUG
    PHP_BASE_THREAD_DBG dbg;
#endif


CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);/*This function initializes the Component Object Model (COM) for use by the current thread. 
Applications are required to use CoInitializeEx before they make any other COM library calls except for memory allocation functions.


*/
//(struct _TEB *) (ULONG_PTR)__readfsdword(PcTeb);
pTeb = (struct _TEB *) (ULONG_PTR)__readfsdword(PcTeb);//线程环境块 地址
pPeb = pTeb->ProcessEnvironmentBlock;//进程环境块
PhInstanceHandle = pPeb->ImageBaseAddress;//进程主模块地址
   // PhInstanceHandle = (HINSTANCE)NtCurrentPeb()->ImageBaseAddress;//handle。线程环境块,进程环境块,值得认真看看。与CPU相关,编译器内部函数 __readfsdword 查看FS段中内容
//TEB 在FS段 0x18位置处
    if (!NT_SUCCESS(PhInitializePhLib()))
        return 1;
    if (!PhInitializeAppSystem())
        return 1;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值