|
[求助]第5章定位kernel32.dll代码的疑惑?
唉,看来我前面找资料不够仔细,发现网上已经有详细讲述PEB的资料了.本论坛也有:http://bbs.pediy.com/showthread.php?t=52398 总之关键的一点,LDR_MODULE结构中三个链表的顺序是前向遍历. 附件中是我自己写的列出这三个链表所有模块的小例子,VC6编译,有需要的可以下载. |
|
[求助]第5章定位kernel32.dll代码的疑惑?
第1个问题: TEB+0x30处是PEB指针,而fs:[0]是指向当前TEB数据的,所以直接用 fs:[0x30] 得到PEB。 第2个问题: 一开始我也觉得奇怪,InInitializationOrderModuleList 是个 LIST_ENTRY 类型,LIST_ENTRY的定义如下: typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY; 那么[ecx]是前向指针,[ecx+4]是后向指针,也就是说[ecx+4]才应该是指向下一个成员的(即第2个成员:Kernel32.dll),但是用OD调试发现,此时ecx保存的已经是ntdll.dll信息了([ecx+8]的值即是ntdll.dll的基址),在网上查的资料好像对这一点也都讲的不清楚,所以我估计有可能是因为插入顺序的原因,即后面初始化的总是插入在链表前面,所以kernel32.dll的信息反倒应该用前向指针去访问。 |
|
Windows程序设计第五版PDF&CHM
晕,我以为是Windows核心编程第五版了。 |
|
Windows程序设计第五版PDF&CHM
PDF的下载不了。 |
|
[华章公司]《Windows编程循序渐进》宣传活动,暨第一届软件设计大赛(所有奖项已揭晓)
看不懂随便填好了:123。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值