引子:分析XP SP2之后的windows系统会经常看到连续的5个nop之后一个mov edi,edi指令,这条指令意义何在?

其实mov edi,edi就是两个字节的nop,作用同2个nop,那么为什么不直接两个nop呢?答案是节省了CPU时钟周期,提高了执行效率。

在vc7\include\listing.inc中详细定义了1到7个字节的类似宏:

;; LISTING.INC
;;
;; This file contains assembler macros and is included by the files created
;; with the -FA compiler switch to be assembled by MASM (Microsoft Macro
;; Assembler).
;;
;; Copyright (c) 1993, Microsoft Corporation. All rights reserved.


;; non destructive nops
npad macro size
if size eq 1
nop
else
if size eq 2
mov edi, edi
else
if size eq 3
; lea ecx, [ecx+00]
DB 8DH, 49H, 00H
else
if size eq 4
; lea esp, [esp+00]
DB 8DH, 64H, 24H, 00H
else
if size eq 5
add eax, DWORD PTR 0
else
if size eq 6
; lea ebx, [ebx+00000000]
DB 8DH, 9BH, 00H, 00H, 00H, 00H
else
if size eq 7
; lea esp, [esp+00000000]
DB 8DH, 0A4H, 24H, 00H, 00H, 00H, 00H
else
%out error: unsupported npad size
.err
endif
endif
endif
endif
endif
endif
endif
endm


;; destructive nops
dpad macro size, reg
if size eq 1
inc reg
else
%out error: unsupported dpad size
.err
endif
endm

回到文章开头,5个nop加上一个mov edi,edi指令巧妙的规避了inline hook实现细节上的一些复杂性。在早些时候,为实现稳定的inline hook,微软专门开发了detours库,其中API开头5个字节的宏定义文件大的让人几乎看不下去,而xp sp2之后这七个字节的设计诞生了一种简单高效的利用方法。

nop
nop
nop
nop
nop
mov edi,edi

只需要简单的改为

jmp xxxxxxx //hook函数地址 5BYTE
jmp short xxxxxxxx //上一个jmp的地址,往回跳5个字节 2BYTE

这样一来,多这么一条mov edi,edi的设计,省去了程序员在PE内部查找连续空间保存原始5字节代码的麻烦,提高了代码执行的稳定性。

2008-3
17

发表于: 二十三十, 过时音符   执笔:freshbug
关键字: ,

msn里一位自称熟女的美女姐姐用了这句话做签名,其实我想给她说,多年前,也有一个人,对我说过同样的话,由于胆子面子等诸多问题,最后还是羞于开口,只是淡淡地问了句,受伤了吗?

恩,我没有其他意思。

————————————————————

歌曲名称:他不爱我
歌手名称:莫文蔚
词曲:作词:杨立德
作曲:陈小霞
编曲:王豫民

他不爱我牵手的时候太冷清
拥抱的时候不够靠近
他不爱我说话的时候不认真
沉默的时候又太用心
我知道他不爱我
他的眼神说出他的心
我看透了他的心还有别人逗留的背影
他的回忆清除得不够乾净
我看到了他的心演的全是他和她的电影
他不爱我尽管如此他还是赢走了我的心

由于工作需要,要把现在的小本OS换成2kpro。

装操作系统本来是一件很简单的事情,由于是X61,又不太简单,fb瞎忙活了2天,终于搞定。

难点有以下几点:

1.没光驱,又不想花好几百银子专门去买个带USB启动的外置光驱。

2.2k比xp版本低,不能在xp下开始安装

3.光盘不好找,iso不好找。

经过无数次硬启动,在搞定2kpro后将步骤总结如下:

1.开电驴,拖一个喜欢的iso,必须是安装盘,如果您是想用ghost的看官,恩,放弃吧,只有蓝屏。

2.想办法让你的C盘先变成FAT32分区,NTFS在DOS不认。(找一个98或者2000的ghost文件用的时候g回去就行了)

3.拷贝smartdrv.exe和format.com到D盘。

4.解开第一步拖的iso,把文件全部拷贝到D盘,顺便搞一个序列号,记住。

5.ok,找个虚拟软驱或者什么能启动到纯dos下的东西。

6.如果你的C盘还是NTFS,这一步把你拖的98或者2000镜像拷贝回去,会直接蓝屏,没关系,C盘成FAT32了,再一次 重启到纯DOS。

7.开机F1,进bios,把硬盘从SATA改为Compatibility(十分重要,无数次在这里蓝屏)。

8.重启后先format c:/q(/q/s,/u任选,看性格而定),然后挂上smartdrv.exe(不挂上这玩意,24小时装不完)。

9.进安装盘的文件夹,敲i386/winnt.exe,ok,后面的事情就简单了。

10.一路next,装好系统后装SATA硬盘驱动,将BIOS里设置改回来,收工。

PS:请拔出网线,第一时间打SP4及最新补丁,第一时间上防火墙。

参考文章: X61/T61的SATA硬盘如何安装xp

2008-3
12

首先要说的是,噱头噱头,绝对的噱头。

新浪科技讯 3月8日下午,巨人网络CEO史玉柱在上海宣布,将给网游《巨人》的美女玩家“发工资”。史玉柱趁机再放豪言,称将把《巨人》打造成中国美女玩家最多的网游。

佩服过后开始鄙视,柱子确实是牛人,往下看。

史玉柱表示,为了让该款游戏的男女玩家比例更平衡,该公司将以“发工资”的方式来吸引美女玩家的加盟。“发工资”是巨人首款网游《征途》所开创的营销新模式,满足一定条件的玩家每个月可以从该款游戏中领取一定金额的游戏金币。

渐渐明白怎么回事了,游戏币而已。

据悉,女性玩家可以在公测开始后向系统上传照片与身份验证,巨人公司对玩家资料进行核实与评选,将对被认为是美女的玩家“发工资”,每个月500元游戏金币,一年价值6千元。

还顺便解决了自家公司里众宅男的私人问题。

看来史玉柱确实想把巨人打造成下一个劲舞团,做游戏圈钱无可厚非,但连起码的道德底线和公益心都没有了,在众目睽睽之下掩耳盗铃,估计柱子也是被逼急了。恩,我想说的是,从看到这则消息的时候起,老子鄙视你。

让你女儿也去玩玩劲舞团,玩玩巨人?

2008-3
11

发表于: 口碑效应   执笔:freshbug
关键字: ,

继自来也叔叔被断臂秒杀后 大蛇丸叔叔遭一刀封印

393话鼬叔叔也领便当走人了

第一部的看点现在就剩下纲手老太婆

纪念岸本10年来一丝不苟的辛勤劳动