文章列表
 
您正在查看 "windows内核探索" 分类下的文章

2009-08-04 16:06
ring0不调api徒手设置硬件断点
by flyingkisser
09.2.12
时间比较有限,捡关键的说说

1.如何写dr0,dr7,一般用NtSetContextThread,
为了不调API,这个问题就成了如何定位到指定线程的context,办法是:
先由tid拿到ethread
kthread.InitialStack-29ch就是,如果这个地址无效,就使用ethread->TrapFrame
这时拿到的地址指向结构KTRAP_FRAME,修改它对应的drx就行了。
为什么是_KTHREAD.InitialStack-29ch,自己逆向一下PspGetSetContextSpecialApc就知道了。
xp下是29ch,其
 
2009-03-02 23:34
typedef struct _SYSTEM_SERVICE_TABLE
{
    PNTPROC    ServiceTable ;    // array of entry points
    PULONG    CounterTable ;    // array of usage counters . be NULL
    ULONG    ServiceLimit ;    // number of table entries
    UCHAR*  
 
2009-02-26 12:45
 
2009-01-08 9:21
内核dll,如下图所示:

如图中的hookhelp.dll就是一个内核dll,跟他相关联的,是几个内核文件。而不是ntdll等。

接下来我们用Radasm自己建一个这样的dll。步骤如下:

1. 用Radasm向导建立一个空的Driver(.sys)工程。
2. 用public声明要导出的dll函数
3. 在工程中添加一个.def文件
     这个.def文件的格式跟我们在rin
 
2008-12-10 20:19

一直以来,都比较懒,喜欢用syser或者softice调试程序。但是随着windbg的强大,以及对windows高度的兼容性,还是学习学习吧。目前深度的windows系统下安装softice和syser都会造成机器死掉及蓝屏。也只有windbg好用。网上搜了下,整理了下具体步骤。

步骤:

1. 下载http://msdl.microsoft.com/download/symbols/packages/windowsxp/WindowsXP-KB936929-SP3-x86-symbols-full-ENU.ex

 
2008-11-07 11:24
(由于百度文章字数限制,这里只好分成上下篇了。呵呵)
其后面还隐藏着很多信息。
KdVersionBlock 对应的结构体应该是KDDEBUGGER_DATA32

DBGKD_DEBUG_DATA_HEADER32 STRUCT
    List        LIST_ENTRY    <> 
 
2008-11-07 11:23
Windows XP和Windows 2003引入了一个新内核变量:KdVersionBlock, KdVersionBlock是KPCR的一个成员。 KdVersionBlock是位于ffdff034位置,如下:
lkd> dt _kpcr ffdff000
nt!_KPCR
   +0x000 NtTib            : _NT_TIB
   +0x01c SelfPcr          : 0xffdff000 _KPCR
   +0x020 Prcb     
 
2008-10-28 14:50
SCSI指令都是以指令描述块(CDB,Command descriptor block)的格式来表示,其用到的结构体如下:
typedef struct _SCSI_PASS_THROUGH_DIRECT
    {
        USHORT Length;            +0
        UCHAR ScsiStatus;         +2
      
 
2008-10-23 13:45

在内核中我们进行文件操作,可以使用IoCreateFile也可以用ZwCreateFile。 但究竟这两者有什么差别呢?下面是这两个函数的格式如下:
NTSTATUS
IoCreateFile(
OUT PHANDLE
FileHandle,
IN ACCESS_MASK
DesiredAccess,
IN POB
 
2008-08-14 0:29
异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。

1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。
2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通知I/O管理器,它已经结束处理一个异步I/O请求时,I/O管理器排队一个apc到发起请求的线程。然后线程在一个较低IRQL级别,来执行APC. APC的作用是从系统空间拷贝I/O操作结果和状态信息到线程虚拟内存空
 
   
 
 
文章存档
 
     
 
最新文章评论
  

回复QQ 405360001:是啊,能不能把注释写上来.
 

请问你的QQ号多少呀, 想请教些问题,或者你有论坛吗?
 

请教,在scsi信息中,能否获取到设备的分区类型。
 

文不对题呀! 另外,开始写Python代码前要先学一大堆IDE、装JRE,下载几百M的东西,
 

问题一解决,是版本的问题
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu