use bridges to antibanned for tor on debian/ubuntu linux

Posted 2 CommentsPosted in Misc

tor was banned recently by “some fucking reason”,all tor tcp connections stay at SYN_SENT state,that is,the packets is eated somewhere,so the connections can’t be established.oh fuck! to reslove this fucking matter,following the steps list below. step 1: send a mail with subject and content all “get bridges” to bridges@torproject.org,after a moment,the bridges list will be […]

延迟中断请求级(lazy IRQL)

Posted Leave a commentPosted in Misc

因为访问可编程中断控制器(PIC)是相对较慢的操作,需要访问I/O总线来改变中断请求级(IRQL)的硬件抽象层(HAL),比如为了访问中断控制器(PIC)和32位高级配置电源接口(ACPI)系统,实现了一个性能优化 ,谓之延迟中断请求级(lazy IRQL),来尽量避免可编程中断控制器(PIC)访问。当中断请求级(IRQL)上升以后,硬件抽象层(HAL)在内部记录该中断请求级(IRQL)而不是来改变中断屏蔽(interrupt mask)。如果一个低优先级的中断随之而来,硬件抽象层(HAL)为前面的中断设置合适的中断屏蔽(interrupt mask),也就是实实在在的提升中断请求级(IRQL),从而延迟这个低优先级的中断直到中断请求级(IRQL)降低。这样以来,当中断请求级(IRQL)升高时如果没有低优先级的中断发生,硬件抽象层(HAL)并不真正的去修改可编程中断控制器(PIC)。

windows内核函数命名规则(system routine naming convention)

Posted Leave a commentPosted in Misc

windows内核函数命名的一般格式为: <Prefix><Operation><Object> Prefix指示导出该例程的组件,Operation指出对对象或资源做什么样的动作,Object标示操作的对象或资源。比如ExAllocatePoolWithTag是一个执行体(Executive)例程,用来从分页池(paged pool)或非分页池(nonpaged pool)中分配内存。KeInitializeThread是一个分配并且设置内核线程对象(kernel thread object)的内核例程。

条件跳转指令Jcc(Jump condition code)

Posted 1 CommentPosted in Misc

关于条件跳转指令,特别是用于有符号数比较的Jcc指令,网上的文章多有讹误,这次彻底的厘清一下,以备忘。 在介绍条件跳转指令之前,介绍一下EFLAGS寄存器中的状态标志(Status Flag)是有必要的,Jcc中的cc(condition code)即表示需要测试的状态标志或状态标志组合。EFLAGS寄存器的低16位在8086时代叫做FLAGS寄存器,又称作程序状态字PSW(Program Status Word)。

负数补码(two’s complement)的原理及证明

Posted Leave a commentPosted in Misc

在本文里面,com指代complement, neg指代negative,并且本文涉及的是”2的补码”(two’s complement)而不是”1的补码”(one’s complement) 学过计算机的大部分人都知道负数在计算机内部是用补码表示的,但是大部分的教材和文章里面都只是简单的告诉你负数的补码等于其反码加一云云,至于为什么是这样,则基本上都语焉不详。 负数用补码表示的好处就是减法可以转化为加法,简化硬件设计,CPU只用一个加法器就可以进行加减法运算了。 下面我就尝试着来证明一下,为什么负数的补码等于反码加一。 理解下面的推导要求读者必须了解模数的概念和求模运算。

64位运算中的REX指令前缀

Posted Leave a commentPosted in Misc

64bits CPU引入了REX指令前缀。 REX前缀的主要功能有以下几点: 指定通用寄存器和SSE寄存器,当然主要是来指定扩展的寄存器,如R8-R15寄存器等 指定64位操作数 指定扩展控制寄存器 一直以来都不知道这个REX缩写词是由哪个或哪几个单词缩写来的,今天突然想明白了,REX应该就是Register EXtension,因为REX的主要功能就是用来索引扩展寄存器的。 关于REX前缀更详细的介绍,请参考Intel® 64 and IA-32 Architectures Software Developer’s Manuals