摘要:
双链表:LIST_ENTRY:typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; follow: next entry, header if it is the last entry in the list struct _LIST_ENTRY *Blink; before: previous entry, header if it is the first entry in the list} LIST_ENTRY, *PLIST_ENTRY;链表空是,header->Flink ==... 阅读全文
摘要:
之前关于kernel mode,user mode之间的切换,有个问题一直有些疑惑。一个进程有没有办法,从user mode切换到kernel mode去执行自己的代码。我知道答案肯定是不行,但是为啥不行,一直不太清楚。今天看了点东西,算是有了解答。首先,cpu有ring0,ring1,ring2,ring3这4个级别,windows只用了ring0,ring3,其实kernel mode = ring0, user mode=ring3.Ring3下有些指令是不能执行的,如:lgdt,lldt,ltr...系统有维护一张GDT的table(call gate,调用门),user mode想切 阅读全文
摘要:
关于Hook,有一本书讲的比较清楚,最近刚刚看完,《Rootkits: Subverting the Windows Kernel》http://www.amazon.com/Rootkits-Subverting-Windows-Greg-Hoglund/dp/0321294319总结下来,Hook的方法有以下几种:1.修改各种table,IAT/IDT/SSDT涉及到函数调用的原理,OS,每个bin文件都会维护各种Table,函数调用,系统调用,中断响应都会reference这些table来确定跳转的目的地址。所以,通过修改这些table的信息,可以达到一些hook的目的2.修改函数入口的 阅读全文
摘要:
1. How to build chromiumFollow the steps on:http://www.chromium.org/Home需要安装Win7 x64的OS,PC的配置尽可能高端一点,我的laptop还可以,i5-3360M + 8G内存,共花了2个多小时才编译过chrome project。不是整个solution,如果选build整个solution的话,还吃不准要多久。Install summary:Install MS的Tolls:安装VS 2010 express + SP1 + patch for SDK7.1 (相当于安装VS 2010 express,再打了两 阅读全文
摘要:
Tali Garsiel's site:http://taligarsiel.com/Webkit Main FlowChromium Project:http://www.chromium.org/Home 阅读全文
摘要:
之前不小心用了Win8自带的Disk Management 来调整磁盘分区的大小,当时跳出来一个warning窗口,说如果继续操作会变成dynamic disk,然后xxxx.我心想都是Windows自带的东西,不管如何总有办法恢复吧,大不了重装好了,然后麻烦事就开始了。Shrink disk之后,发现Disk Management里面各个分区显示成黄颜色的dynamic volume了,dynamic volume会有很多不方便,一块磁盘不能安装多个os了。看msdn上面教你convert dynamic volume to basic volume很简单,但它不提一个前提,就是不能操作在当 阅读全文
摘要:
Advanced Configuration and Power Management Interface(ACPI)是由Intel,Microsoft等厂家订的一套Spec,规范了OS,APP对于电源的管理。ACPI涉及很广,这里仅涉及一些System Power Management, Device Power Management.System PM:S0: working modeS1: CPU停止工作, CPU,RAM继续供电,cache flush到Ram,Device若无必要则处于Power off状态S2:, re-fresh ram, cache数据丢失,CPU断电.S3: 阅读全文
摘要:
Win8,WinBlue对P2P这块很重视,加了很多P2P的功能,性能的测试。自己对WIFI的协议比较了解,不过对TCP协议没接触过,在tune WIFI throughput的时候,遇到了TCP ACK windows size的影响。TCP windows size太小的话,一次性灌到wifi的包数量太少,导致没法充分利用WIFi的吞吐量。如果只有64k的windows size,那么一次性灌到diver只有40来个Packet(每个包1.4k左右)。40来个包对于WiFi来说,两次aggregation,4ms不到就传完了,所以TCP stack反而成了bottle neck。TCP的W 阅读全文
摘要:
由于最新的Windows 8对于WiFi 传输有Latency的要求,最近一直在忙这件事。MS要求Peer到Peer之间的Lantency要小于几十个毫秒吧。这段时间可以划分为一下这几个部分:APP-->Driver--(Air)-->Driver in Rx side-->APP in Rx side。我发现在Receiver这一端,经常会发生Driver Indicate Packet给OS到APP收到这个包,有时候会有大的延时。因为用的是UDP,理论上应该没有window,sequence number这种概念,OS只要收到一个数据包就应该通知APP。根据Driver的 阅读全文