|
放个很简单的注册机模板
干吗要模仿呢?都是人家组织专有的... |
|
|
|
关于 nt 内核物件位置的问题
[转贴] 创建进程分析(未完) G:\NT\private\ntos\ps\create.c NtCreateProcess() PsCreateSystemProcess() PspCreateProcess() KeGetPreviousMode() Previous:以前的 NtCreateProcess()和PsCreateSystemProcess()通过调用PspCreateProcess()来完成的。 PspCreateProcess()代码开始有一句PreviousMode = KeGetPreviousMode(); PreviousMode是个局部变量在PspCreateProcess()中经常用到比如ObReferenceObjectByHandle()和ObCreateObject()里面 KeGetPreviousMode() 在G:\NT\private\ntos\ke\i386\i386pcr.asm中定义如下 ;++ ; ; KPROCESSOR_MODE ; KeGetPreviousMode() ; ; Return Value: ; ; PreviousMode of current thread. ; ;-- cPublicProc _KeGetPreviousMode 下面的这句是取得当前线程结构的指针 mov eax,PCR[PcPrcbData+PbCurrentThread] ; (eax) -> Thread 下面的这句是取得PreviousMode的值 movzx eax,byte ptr [eax]+ThPreviousMode ; (eax) = PreviousMode stdRET _KeGetPreviousMode stdENDP _KeGetPreviousMode PCR是什么东东呢?看看wowocock的话语吧: 对于运行在用户模式下,也就是运行在ring3下的程序,fs 段是当前线程的 TEB 所在地址空间。对于运行在内核模式下,也就是运行在ring0下的程序,fs 段是从地址 FFDFF000 开始,大小为 0x2000 的PCR那部分地址空间。 在察看 Windows 2000 内核代码时,你会经常遇到像 MOV EAX, FS:[18h] 这样的指令。这些指令用于取出属于 TEB 或 KPCR 的成员的值,或者是属于其他包含在 FS 段中的结构体的成员的值。它们中的大多数都指向其他的内部结构。 KPCR 是一个非常重要的数据结构,该结构包含很多线程相关的数据项,因此,它位于自己的内存段中,该内存段的地址由 CPU 的 FS 寄存器给出。 Windows NT 4.0 和 Windows 2000 都将 FS 指向处于内核模式的线性地址 0xFFDFF000 。段FS中还包含内核的进程控制块( Kernel's Processor Control Block, KPRCB ), KPCR 结构的 Prcb 成员指向 KPRCB 结构的首地址,紧随其后的是一个 CONTEXT 结构,该结构包含当前线程的底层 CPU 信息。 KPCR 、 KPRCB 和 CONTEXT 结构定义在 ntddk.h 头文件中。 KGDT_R0_PCR 0x0030 内核模式的 FS 寄存器(处理器控制区域) KGDT_R3_TEB 0x0038 用户模式的 FS 寄存器(线程环境块) 进程地址空间中的可确认的内存区域 起始地址 结束地址 大小 类型 / 描述 0xFFDFF000 0xFFDFF053 54 KPCR/ 处理器控制区(内核模式 FS 段) 0xFFDFF120 0xFFDFF13B 1C KPRCB/ 处理器控制块 0xFFDFF13C 0xFFDFF407 2CC CONTEXT/ 线程 CONTEXT ( CPU 状态) 在线性地址0xFFDFF120处可找到KPRCB结构,指向该结构的指针存放在KPCR结构(Kernel’s Processor Control Region)的Prcb成员中。KPCR结构的定义可在Ntddk.h中找到,该结构位于线性地址0xFFDFF000处。内核模块通过FS寄存器可以很容易的访问该结构体。从地址:FS:0处读取等价于从线性地址DS:0xFFDFF000处读取。系统将最基本的CPU信息保存在地址 0xFFDFF13C处(紧随KPRCB结构之后)的包含线程和进程状态信息的 CONTEXT 结构中。 由于Windows 2000内核将线性地址0xFFDFF000映射到了CPU的FS的内核模式段的0x00000000,所以系统总是能在地址:FS:0x0、FS:0x120和FS:13C处找到当前的KPCR、KPRCB和CONTEXT结构。 ObCreateObject()说明 ObCreateObject ()函数,该函数为对象表头和对象体分配内存,并初始化常见的对象参数。不过,ObCreateObject()对它创建的对象是什么类型却丝毫不知,因此,调用者必须给定对象体所需内存的确切字节数。因此,找出对象实际大小这一问题就转化为针对此类对象所调用的ObCreateObject()。 |
|
|
|
[求助]有没有查看程序使用哪些api的工具
在OD中右键->搜索->所有模块间的调用 |
|
关于 nt 内核物件位置的问题
我也在找RING 0级的系统process资料 |
|
|
|
寻找 察看当前钩子链内容 的工具
论坛搜索用户"一块三毛钱" |
|
[求助]有没有查看程序使用哪些api的工具
Ollydbg |
|
HideOD 0.13(隐藏OD插件)
确实没躲开China的那个demo... |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值