上一页 1 2 3 4 5 6 7 8 ··· 36 下一页
摘要: 看上去很像,但又有一些区别,前几天有人问我,当时有点糊涂,这里总结一下。 全局变量取地址用mov offset 例如:mov dword ptr [ebp-14h],offset ConsoleTest+0x94620(00494620) 局部变量取地址用lea 例如: 0042fb24 8d45f8 lea eax,[ebp-8] 0042fb27... 阅读全文
posted @ 2011-11-29 15:43 Fan Zhang 阅读(1267) 评论(0) 推荐(0)
摘要: 不管是USB或者8042或者虚拟的Keyboard/Mouse,设备栈最上层都是Kbdclass或者Mouclass,操作系统会专门有个现成不停的向设备栈发送Read IRP。 kd> !devstack 80d8eaa0 !DevObj !DrvObj !DevExt ObjectName > 80d8eaa0 \Driver\Kbdclass... 阅读全文
posted @ 2011-11-28 14:20 Fan Zhang 阅读(1243) 评论(0) 推荐(0)
摘要: 内核API是KdDisableDebugger。如果Enable就把第一次字节改成C3(Ret) 阅读全文
posted @ 2011-11-25 17:28 Fan Zhang 阅读(233) 评论(0) 推荐(0)
摘要: 先说两个典型的应用 1. IoCompleteRequest内部实现,实现在任意上下文的时候,插入kernel APC,把IO操作结果返给相应的线程。 2. Set/Get 上下文的内部实现。 User mode APC:在系统进入Alert状态才会Deliver ,可以参考KeWaitXXXX系列函数,KeTestAlertThread可以返回是否Altert状态。 Kernel ... 阅读全文
posted @ 2011-11-23 15:41 Fan Zhang 阅读(489) 评论(0) 推荐(0)
摘要: class Number { int number; public: explicit Number(int n){number = n;} operator int() //注意一定不能声明返回值 { return number; } }; int main () { ... 阅读全文
posted @ 2011-11-10 13:11 Fan Zhang 阅读(171) 评论(0) 推荐(0)
摘要: 在Ring0下,fs指向PCR,而PRCB是PCR的一个扩展。 可以用!pcr和!prcb命令查看,例如: kd> !pcr KPCR for Processor 0 at ffdff000: Major 1 Minor 1 NtTib.ExceptionList: 80551158 NtTib.StackBase: 80551970 ... 阅读全文
posted @ 2011-09-06 18:44 Fan Zhang 阅读(1026) 评论(0) 推荐(0)
摘要: dg 选择子 例如查看任务寄存器 kd> r tr Last set context: tr=00000028 kd> dg 0x28 P Si Gr Pr Lo Sel Base Limit Type l ze an es ng Flags ---- ------... 阅读全文
posted @ 2011-09-06 18:03 Fan Zhang 阅读(199) 评论(0) 推荐(0)
摘要: 局部变量是存储在堆栈上的,而栈的大小是固定的。如果局部变量过大,或者函数调用嵌套太深,栈都会被用光。 在Debug版本或者check版本里,编译器会自动插入一段代码帮程序员校验可用堆栈。 void Foo() { 0042F580 55 push ebp 0042F581 8B EC mov ebp,esp 0042F583 B8 D4 00 40 00 mov eax,4000D4h 0042F... 阅读全文
posted @ 2011-08-03 15:23 Fan Zhang 阅读(224) 评论(0) 推荐(0)
摘要: 首先要确定是哪个应用程序,然后查看这个应用程序的call stack !process 0 0 列出所有应用程序 !process xxxx 列出应用程序里的所有线程的call stack .thread xxxx 切换到想要调试的线程 设置断点 阅读全文
posted @ 2011-08-03 15:15 Fan Zhang 阅读(329) 评论(0) 推荐(0)
摘要: CPU内部的cache和内存有时候不吻合,虽然CPU是知道的,但是DMA却不知道这些。这就需要在DMA传输之前,强制CPU把cache写回内存。这个命令是KeFlushIoBuffers。 在x86和x64的CPU中,CPU会自动做这个事情,所以对于x86和x64CPU来说,KeFlushIoBuffers是空的。 对于Itanium来说,它不会自动做这些,KeFlushIoBuffers就应该是... 阅读全文
posted @ 2011-06-17 17:24 Fan Zhang 阅读(533) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 36 下一页