windows开发
文章平均质量分 63
joeleechj
这个作者很懒,什么都没留下…
展开
-
临界区的内部结构与实现
做windows开发的人都知道临界区是应用层同步对象,相对于其它内核同步对象来说,等待临界区的开销比较小,其原因在于临界区采用忙等(自旋)的方式来避免线程切换。这些原理性知识大家都比较清楚,但对于它的实现细节就不是每个人都了解了。我在这方面也曾经存在困惑,后来通过分析它的结构以及相关几个API的实现,总算有了比较清楚的认识。 在windows系统内部, 临界区的结构体叫做_RTL_原创 2011-12-18 08:43:44 · 4480 阅读 · 3 评论 -
总结win7平台的dep机制-由phoneme jit功能异常说起
最近在编译j2me的开源原创 2014-04-25 21:19:50 · 1596 阅读 · 0 评论 -
windows同步原理与调试(PPT)
最近在公司做了一次关于windows同步方面的培训,以下是本次培训的PPT文字。 Windows同步原理与调试 richard 2012.10.9 主要内容与讲解方式..用户态同步技术 ..内核态同步技术 ..使用windbg调试用户态线程死锁 ..讲解不面面俱到,不讲API使用 ..讲原理的同时穿插windbg的使原创 2012-10-11 23:01:25 · 1069 阅读 · 0 评论 -
基于网络的内核调试
驱动调试需要用到两台机器,目前主要是通过串\口、usb或者1394接口来连接。对于软设备驱动来说就多了一种选择,通过vmware等虚拟化软件来虚拟测试机。但有些情况下必须在真实的双机环境进行,如真实设备驱动的调试,以及其他驱动无法在虚拟机上运行的情况,这时就要考虑用什么接口来连接了。串口的优点是它属于标配,几乎每个PC主板上都有,串口线也便宜,另外就是所有的windows系统都支持串口调试,所以很原创 2012-12-11 23:13:15 · 2881 阅读 · 0 评论 -
修改ebp带来的问题一例
一般情况下我们很少去修改ebp,即使使用汇编也只是用到eax 、ebx等几个通用寄存器,ebp和esp都是让编译器自动安排的。但有时ebp的修改就成为必须,如进行inline hook的时候,这时就要小心因为ebp的修改而带来的bug,以下为示例代码: NTSTATUS My_PsCreateSystemThread(原创 2012-12-28 23:11:01 · 1412 阅读 · 0 评论 -
Nt系列函数与Zw系列函数的关系
常有人搞不清这两组函数的关系,因为调用接口和实现功能一样,有些人就认为他们是同一个函数的不同名称。实际上他们是有区别的,借助windbg这个工具,我们就可以一探究竟。 在ring3层,这两组函数确实是同一个函数,用u命令对NtReadFile以及ZwReadFile反汇编发现,他们的起始地址是一样的。调用ntdll.dll这个动态库的函数时,声明成这两种形式都可以,不过按照微软的原创 2013-01-28 22:29:09 · 3308 阅读 · 0 评论 -
从EXE的资源段提取sys文件-转载自(rootkit:subverting the windows kernel)
Windows PE executables allow multiple sections to be included in the binary file. Each section can be thought of as a folder. This allows developers to include various objects, such as graphics files,转载 2011-12-30 20:33:14 · 1204 阅读 · 0 评论 -
GetLastError函数实现
MSDN上说这个函数返回的是当前线程最近一次错误码,这个错误码是通过调用SetLastError函数设置的,具体实现其实相当简单,也就两句汇编代码 mov eax, dword ptr fs:[18h] mov eax, dword ptr [ecx + 34h] 首先获得TEB指针,然后读TEB起始偏移0x34位置的值,查阅TEB结构得知,这个值就是LastErro原创 2012-10-25 21:53:21 · 1573 阅读 · 0 评论 -
win7编程接口的一些变化
原文链接:http://www.nirsoft.net/articles/windows_7_kernel_architecture_changes.htmlWindows 7 introduces a new set of dll files containing exported functions of many well-known WIN32 APIs. All these file转载 2012-11-03 15:41:33 · 13447 阅读 · 0 评论 -
windows在ISR中不能睡眠的原因
对于这个问题,本人也做了一些思考,也看了很多网上的讨论,目前也没有确定的结果。现把思路总结一下,以后有新的理解时随时更新。1. 睡眠导致蓝屏? 阅读wrk代码可以知道,蓝屏其实是系统在判断irql后主动进入的结果,这是一种系统设计,是规则而不是原因。2. 中断没有上下文? 其实中断是有上下文的,就是被中断线程的上下文,中断其实是借用了该线程的内核堆栈。我们可以理解为线原创 2015-07-22 12:42:59 · 602 阅读 · 0 评论