关于作者

用户名:HackGou
笔名:HackGou
地区:
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



Debian§Gentoo§BSD

Sec Res

访问统计:
文章个数:16
评论个数:12
留言条数:1




Powered by BlogDriver 2.1

憨狗国度

 

憨狗自说自话之理想国度

文章

在Windos上象Linux一样工作
平时而学习啦或者看看文档啦当然喜欢在Debian/FreeBSD上玩,
看录像啦玩游戏啦喜欢在Windows下搞,久了琢磨着想办法增强windows的shell——cmd.exe以让它也能够象bash那样十八般兵器样样能行......

平时而学习啦或者看看文档啦当然喜欢在Debian/FreeBSD上玩,
看录像啦玩游戏啦喜欢在Windows下搞,久了琢磨着想办法增强windows的shell——cmd.exe以让它也能够象bash那样十八般兵器样样能行。心动不如行动。

俗话说磨刀不误砍柴功,先找点工具最好能够找到那些*NIX上常见的工具的Win32版本:

- 作者: HackGou 2005年01月9日, 星期日 23:18  回复(1) |  引用(0) 加入博采

把我的大头贴添作Grub的背景图

第一次看见Grub的时候是RH8的时候,漂亮的Splash背景、可爱的小红帽Tux,漂亮极了,可是Debian下的Grub可不那么靓,看看我怎么让Grub拥有我自己的SplashImage


本文所用补丁为0.93的补丁。如果安装了其他版本的grub,请先卸掉。
下载grub0.93并打上patch,编译并安装,可以使用如下脚本:

mkdir grub-src
cd grub-src
wget http://ruslug.rutgers.edu/~mcgrof/grub-images/grub-debian-sources/grub_0.93+cvs20030224.orig.tar.gz
wget http://ruslug.rutgers.edu/~mcgrof/grub-images/grub-debian-sources/grub_0.93+cvs20030224-2.diff.gz
tar zxvf grub_0.93+cvs20030224.orig.tar.gz
gunzip grub_0.93+cvs20030224-2.diff.gz
patch -p0 < grub_0.93+cvs20030224-2.diff
cd grub-0.93+cvs20030224
./configure
make
make install


将grub的安装到/dev/hda上:
grub-install /dev/hda

二。准备splashimage选项要求的文件,当然就是我的大头贴啦:
1. 文件类型 :xpm.gz
2. 图象大小:640x480
3. 颜色深度:14 色

三。压缩图象并更改grub.conf
1. 用gzip压缩xpm格式的图片,放到/boot/grub下
 hackgou:~# gzip  /boot/grub/love.xpm 
 hackgou:~# ls /boot/grub/*.gz
/boot/grub/love.xpm.gz /boot/grub/open.c.xpm.gz
2.编辑/etc/grub.conf加入
splashimage=(hd0,1)/boot/grub/love.xpm.gz
现在可以重新启动系统,欣赏你的成果了。
  
Tips:
如何获取14色图片:
使用GIMP的14色调色板:打开你的图象文件,用Alt+I(或则图象->模式->索引)打开调色板优化选项对话
框,在生成优化调色板中填入14,然后确定,关闭对话框,这样就生成了你所需
的14色图片保存文件。

 

- 作者: HackGou 2005年01月8日, 星期六 17:05  回复(4) |  引用(0) 加入博采

The GPG Public Key
The GPG Public Key
附件 HackGou@yeah.net.txt:http://blog.blogchina.com/upload/2005-01-08/20050108082829968058.txt

- 作者: HackGou 2005年01月8日, 星期六 08:28  回复(1) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: HackGou 2005年01月7日, 星期五 05:33  回复(0) |  引用(0) 加入博采

一生里和你爱的人做完这50件事

什么是幸福?很难回答!

看看这儿,如果能够做完了,你便会觉得什么是幸福。


 我想幸福,也许就是这么一件、一件积累起来的......                    
1.布置一间书房,要一整面墙的大书柜,和你一起慢慢把它装满        
2.和你背靠背,一边听我们都喜欢的CD,一边看各自的书,坐在木地板上
3.洗澡的时候,帮你刮胡子                                        
4.你吃饭吃的香的时候,放下筷子看你一会儿                        
5.和你一起去西藏                                                
6.和你一起去一趟北欧                                            
7.偷偷用你的牙刷刷牙                                            
8.当你下班回来说累极了,说饿得站不稳了的时候,抱抱你,然后做一桌子好吃的给你                                                        
9.和你一起照看我们的父母                                        
10.至少有一次在大自然的怀抱里和你作爱                           
11、不为什么地亲亲你                                            
12、让你做我所有作品的第一读者                                  
13、每年春天一起去放风筝                                        
14、经常抱抱你,也要你抱抱                                      
15、每天早上唤醒你,或者被你唤醒                                
16、常常看见你的笑,还有你点头时候边摇头的样子                  
17、和你一起逛街,买菜,回家一起做饭                            
18、在街上走时和你保持身体的接触,不管是牵着手还是挽着你的胳膊,还是被你揽着肩膀,搂着腰。总之不要和你分开                          
19、和你一起看着我们的孩子长大                                  
20、保持敏感细腻而知道感激的心,在很老的时候仍然会为你特意做给我的红糖荷包蛋掉眼泪,然后抱着你把眼泪蹭在你衬衫的胸前                
21、和你心平气和地讨论问题,尽量不赌气,不吵架                  
22、听我叫笨笨,叫一切我给你起的怪名字,开心的答应我            
23、夜里醒来的时候,亲亲你,不吵醒你                            
24、在你需要的任何时候,把我的手伸向你                          
25、帮你洗头发的时候,不让洗发水刺到你的眼睛                    
26、你看专业书的时候不打扰你                                    
27、跟你抢电脑,然后把配置更好的那一台让给你用                  
28、接听你从海边打来的电话,和你一起听海风,听浪花冲到你脚上时你开心的大叫                                                          
29、买菜的时候顺便买束花回家                                    
30、你生病的时候轻声和你说话,喂你吃药前先试试水温,在你床前握着你的手念苏东坡、辛弃疾的词给你听                                    
31、始终随身带着一张你的照片,有孩子以后就带全家的              
32、每次过马路时都牵着你的手                                    
33、只要你在家,我就不用钥匙开门,我只按门铃,我要你给我开      
34、常常想着给你惊喜                                            
35、半夜故意踢开被子,等你醒了给我盖好                          
36、学做更多好吃的菜,做好和你一起吃                            
37、打雷的时候和你抱在一起睡                                    
38、每天都给我买牛奶喝                                          
39、当我们吵架以后,我也许不想跟你说话,但是我要你给我倒杯茶,因为你可能会口渴                                                      
40、头发要一直保留到可以盘起来那么长,插一把簪子,每天晚上你来拔
41、和你在同一天里看了日出,再看日落                            
42、躺在你的腿上看伤感的爱情片,让眼泪打湿你的裤裤              
43、靠在阳台栏杆上的时候,享受你从背后抱着我的感觉            
44、跟你说谢谢和对不起的时候,都用真心说                        
45、突然下雨的时候给你送把伞或者去接你下班                      
46、忘记了存折、IP卡密码的时候大声的叫你                        
47、你和小孩在公园里疯的时候,我在长椅上看着你们微笑            
48、认真听你说话                                                
49、万一我有意外,我从高中开始记的所有日记都留给你              
50、每天早晨在你身边醒来,都要感谢上帝让我活着,并且让我们在一起

- 作者: HackGou 2005年01月7日, 星期五 01:49  回复(4) |  引用(0) 加入博采

手动干掉这个QQ尾巴

同事上了会儿网,没想到我回来开QQ时,居然发现中毒了!呵呵,典型的QQ尾巴。

没办法了,好久没有中毒过,也没有后备的杀毒软件,只好手工来干了......


ps
Name         Pid Pri Thd  Hnd    Mem     User Time   Kernel Time   Elapsed Time
Idle           0   0   1    0     16   0:00:00.000   0:18:00.914    0:25:10.632
System         8   8  45  132    272   0:00:00.000   0:00:13.719    0:25:10.632
SMSS         196  11   6   33    388   0:00:00.020   0:00:02.453    0:25:10.632
CSRSS        224  13  10  243   6732   0:00:01.351   0:00:09.203    0:24:51.054
WINLOGON     244  13  17  378   2376   0:00:00.460   0:00:00.991    0:24:47.158
SERVICES     272   9  22  361   6820   0:00:36.632   0:00:01.742    0:24:44.444
LSASS        284   9  17  252   5020   0:00:00.320   0:00:00.280    0:24:44.394
LLSSRV       480   9   9   74   1864   0:00:00.030   0:00:00.020    0:24:01.963
svchost      528   8  10  230   3304   0:00:00.060   0:00:00.100    0:24:01.332
svchost      568   8  17  214   4332   0:00:00.200   0:00:00.420    0:24:00.461
WinMgmt      604   8   4  113    768   0:00:03.935   0:00:00.280    0:24:00.110
totalcmd     840   8   3   89   2732   0:00:00.731   0:00:00.931    0:22:47.175
Maxthon      904   8  19  826  25036   0:02:14.733   0:00:42.040    0:19:48.188
regedit      844   8   1   24   1828   0:00:00.701   0:00:01.371    0:11:13.848
cmd          448   8   1   25   1100   0:00:00.050   0:00:00.090    0:07:19.732
conime       684   8   1   17    912   0:00:00.010   0:00:00.020    0:07:19.471
Explorer     848   8  13  233   8024   0:00:00.941   0:00:02.163    0:03:57.321
ps           872   8   2   87   1372   0:00:00.040   0:00:00.030    0:00:00.050


那个848有点问题,本来的Explorer是没有这么回事的。

listdlls 848
explorer.exe pid: 848
Command line: Explorer.exe C:\WINNT\system32\msapi.exe

  Base        Size      Version         Path
  0x00400000  0x3e000   5.00.3700.6690  C:\WINNT\Explorer.exe
  0x77f80000  0x7b000   5.00.2195.6685  C:\WINNT\system32\ntdll.dll
  0x796d0000  0x62000   5.00.2195.6710  C:\WINNT\system32\ADVAPI32.DLL
  0x77e60000  0xd8000   5.00.2195.6688  C:\WINNT\system32\KERNEL32.DLL
  0x786f0000  0x71000   5.00.2195.6701  C:\WINNT\system32\RPCRT4.DLL
  0x77f40000  0x3c000   5.00.2195.6660  C:\WINNT\system32\GDI32.DLL
  0x77df0000  0x65000   5.00.2195.6688  C:\WINNT\system32\USER32.DLL
  0x70bd0000  0x65000   6.00.2800.1106  C:\WINNT\system32\SHLWAPI.DLL
  0x78000000  0x45000   6.01.9844.0000  C:\WINNT\system32\msvcrt.dll
  0x71710000  0x84000   5.81.4916.0400  C:\WINNT\system32\COMCTL32.DLL
  0x75e00000  0x1a000   5.00.2195.6655  C:\WINNT\system32\IMM32.DLL
  0x78f90000  0x248000  5.00.3700.6705  C:\WINNT\system32\SHELL32.dll
  0x77a30000  0xf7000   5.00.2195.6692  C:\WINNT\system32\OLE32.DLL
  0x72c50000  0x90000   2000.02.3511.0000  C:\WINNT\system32\CLBCATQ.DLL
  0x77990000  0x9b000   2.40.4522.0000  C:\WINNT\system32\OLEAUT32.dll
  0x71000000  0x149000  6.00.2800.1106  C:\WINNT\system32\SHDOCVW.DLL
  0x71160000  0xfd000   6.00.2800.1106  C:\WINNT\system32\browseui.dll
  0x76ee0000  0x77000   5.00.2195.6604  C:\WINNT\system32\NETSHELL.dll
  0x74fb0000  0x14000   5.00.2195.6601  C:\WINNT\system32\WS2_32.DLL
  0x74fa0000  0x8000    5.00.2134.0001  C:\WINNT\system32\WS2HELP.DLL
  0x70340000  0x41000   6.00.2800.1106  C:\WINNT\system32\webcheck.dll
  0x76670000  0x18000   5.00.2195.6601  C:\WINNT\system32\stobject.dll
  0x766e0000  0x8000    5.00.3502.6601  C:\WINNT\system32\BATMETER.DLL
  0x6d990000  0xac000   5.00.2195.6622  C:\WINNT\system32\SETUPAPI.DLL
  0x794d0000  0x62000   5.00.2195.6711  C:\WINNT\system32\USERENV.DLL
  0x76690000  0x7000    5.00.3502.6601  C:\WINNT\system32\POWRPROF.DLL
  0x77530000  0x30000   5.00.2161.0001  C:\WINNT\system32\WINMM.DLL
  0x00ef0000  0x204000  2.00.2600.1183  C:\WINNT\system32\MSI.DLL
  0x01330000  0x25000                   C:\WINNT\system32\msapi.dll
  0x74fd0000  0xa000    5.00.2195.6603  C:\WINNT\system32\wsock32.dll
  0x77810000  0x3e000   5.00.2195.6705  C:\WINNT\system32\cscui.dll
  0x77080000  0x23000   5.00.2195.6713  C:\WINNT\system32\CSCDLL.DLL
  0x79a90000  0x11000   5.00.2195.6611  C:\WINNT\system32\MPR.DLL
  0x750f0000  0xc000    5.00.2195.6601  C:\WINNT\System32\ntlanman.dll
  0x751a0000  0x15000   5.00.2195.6601  C:\WINNT\System32\NETUI0.DLL
  0x75160000  0x38000   5.00.2134.0001  C:\WINNT\System32\NETUI1.DLL
  0x75100000  0x4f000   5.00.2195.6601  C:\WINNT\System32\NETAPI32.DLL
  0x797b0000  0xf000    5.00.2195.6695  C:\WINNT\System32\SECUR32.DLL
  0x75150000  0x6000    5.00.2134.0001  C:\WINNT\System32\NETRAP.DLL
  0x750e0000  0xf000    5.00.2195.6666  C:\WINNT\System32\SAMLIB.DLL
  0x77930000  0x2a000   5.00.2195.6666  C:\WINNT\system32\WLDAP32.DLL
  0x77960000  0x24000   5.00.2195.6680  C:\WINNT\System32\DNSAPI.DLL
  0x77520000  0x8000    5.00.2195.6673  C:\WINNT\system32\wdmaud.drv
  0x773c0000  0x8000    5.00.2134.0001  C:\WINNT\system32\msacm32.drv
  0x773d0000  0x13000   5.00.2134.0001  C:\WINNT\system32\MSACM32.dll
  0x70200000  0x95000   6.00.2800.1106  C:\WINNT\system32\WININET.dll
  0x77400000  0x78000   5.131.2195.6661  C:\WINNT\system32\CRYPT32.dll
  0x773f0000  0x10000   5.00.2195.6666  C:\WINNT\system32\MSASN1.DLL
  0x718c0000  0x84000   6.00.2800.1106  C:\WINNT\system32\shdoclc.dll

 这个 0x01330000  0x25000                   C:\WINNT\system32\msapi.dll
没有版本号,没有其他什么信息可疑:

listdlls -d C:\WINNT\system32\msapi.dll

explorer.exe pid: 848
Command line: Explorer.exe C:\WINNT\system32\msapi.exe

  Base        Size      Version         Path
  0x01330000  0x25000                   C:\WINNT\system32\msapi.dll

什么时候有这个命令的啊??那个msapi.exe肯定绝非善类。

autorun

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
   Explorer.exe
        Windows Explorer
        Microsoft Corporation
        c:\winnt\explorer.exe
   C:\WINNT\system32\msapi.exe
果然在C:\WINNT\system32\msapi.exe下的作为每个用户的shell来启动。
del C:\WINNT\system32\msapi.exe
dir C:\WINNT\system32\msapi.exe

啊居然还在。还对他进行保护,可惜没法动态卸掉msapi.dll,没关系——瞒天过海!
cp c:\winnt\system32\calc.exe  C:\WINNT\system32\msapi.exe
psshutdown -r

然后,
del C:\WINNT\system32\msapi.dll
del C:\WINNT\system32\msapi.exe

搞定!

 

还是在Linux下好,从来没有这些担心。

- 作者: HackGou 2005年01月6日, 星期四 23:31  回复(2) |  引用(0) 加入博采

一棵开花的树

一棵开花的树
             席慕容
如何让你遇见我
在我最美丽的时刻
......


席慕容 一棵开花的树

如何让你遇见我
在我最美丽的时刻

为这
我已在佛前求了五百年
求佛让我们结一段尘缘
佛於是把我化做一棵树
长在你必经的路旁

阳光下
慎重地开满了花
朵朵都是我前世的盼望

当你走近
请你细听
那颤抖的叶
是我等待的热情

而当你终於无视地走过
在你身後落了一地的
朋友啊
那不是花瓣
那是我凋零的心

- 作者: HackGou 2004年12月14日, 星期二 22:05  回复(0) |  引用(0) 加入博采

终于有个Gmail了!
一直都希望......
出于对Google的偏爱,一直都希望得到Gmail的邀请函,可是没有什么渠道,没想到一年前订阅的Python-china list上的alang yin送兄弟们Gmail的邀请函,抱着试试的感觉,去了封Email。没想到早上十点钟就收到了Gmail的邀请函,顺利注册。HackGou AT Gmail DOT com

- 作者: HackGou 2004年12月14日, 星期二 10:47  回复(0) |  引用(0) 加入博采

汇编的点点总结
在20cn上讨论汇编时发的一个帖子。

哇塞!这么热闹啊??呵呵
我也来凑凑热闹!

1。说说仙人掌兄的问题吧:
   [QUOTE]而你给CPU一个地址然后它怎么找到对应的内存空间,[/QUOTE]

其实这个挺简单的:
先说说我们讨论的这个问题的大前提:我们现在讨论的是80×86时代的汇编(也是20位的dos时代,可别以为有非20位的dos哦/
:P),而非如今主流的32位平台,因为32位平台向下兼容,所以我们现在的话题[COLOR=red]有可能是对[/COLOR]的,因为很多
内容在32位下就不一定了。

开始主题:   [QUOTE]而你给CPU一个地址然后它怎么找到对应的内存空间,[/QUOTE]

在dos时代(硬件方面是386以下),因为16位的处理器无法访问(寻址)20位的地址总线提供的1M内存,于是就使用分段的办
法解决:每个段64K,
(为什么是64K??因为16位寄存器可以存储的最大范围就是2^16=2^6×2^10=64K。
按照最大段来计算,多少段?1M/64K=16个段),这样就可以利用两个16位寄存器来寻址这20位的1M内存(虽然,是浪费了12位
宝贵的寄存器位数,两个16位寄存器合起来的寻址能力是2^32=4G,现在只需利用其中2^20的寻址能力,但却变相实现了利用
两个16位寄存器来寻址20位1M的内存的功能),因此可以利用一个寄存器来表示段地址(那个64K的段从哪儿开始),另外一个
16位的寄存器来表示你要访问的数据在该64K的段内的什么地方。起前一个功能的寄存器就叫段寄存器(按段寄存器所指的段的
用途来分,这些段寄存器又分为:CS、DS、SS、ES等。而后一个功能则一般通过通用寄存器来实现的,通常后面这个用来在段
内寻址的地址就叫做段内偏移(offset),它也是16位的寄存器。

在具体寻址的时候是如何计算的呢?段寄存器和段内偏移地址直接相加?不是的,因为那样最多能够达到17位的寻址能力。正
确的做法是将段寄存器左移4位,然后加上段内偏移地址,这样就得到了20位的地址了,使用则20位地址就能够实现1M的存储空
间寻址了。

这个计算是谁来完成的呢??人工么?还是编译器编译的时候执行的呢??都不是。而是CPU内部的BIU(bus interface unit
,总线接口单元)来完成。它包括段寄存器(CS、DC、SS、ES)和地址产生器(当然不止两个部分,但是和内存寻址的就主要是
这两部分),当遇到一个寻址的指令后,地址产生器就执行逻辑地址(16位的段:16位的偏移)到20位的物理地址(PA)的计
算,计算的公式如前所述(段地址乘以16+偏移地址),这样就"找到对应的内存空间"。


2。  [QUOTE]一个汇编指令按理来讲对应的二进制代码应该是相同的[/QUOTE]
这个问题其实和汇编语句到底如何编译位机器语言有关,一条汇编语句包含两个部分:80×86指令和数据部分。其中数据部分
包括:立即数、寄存器等等。比如mov
dx,ax其中mov是指令部分。而dx,ax就是数据部分(也可以理解为汉语的动宾关系:指令为动词,数据部分为宾语,别问我谁是
主语啊?问我就告诉你:EU)。所以如果两条汇编语句的动宾(指令和数据部分)全相同,则他们的二进制代码也就完全相同
。这是以前在C51上亲自进行汇编语句到机器语句的手工翻译时所遵循的规律。因为C51上没有关于栈的操作,所以抱歉的说:
没有push指令方面的具体的翻译经验可以讨论。也无法直接回答你关于push指令不同的问题。但是现在我们参考Intel公司的指
令格式和编码来做做80×86指令系统的试验,先来看看两条关于堆栈操作(push ax)和立即数(mov
ax,1234)操作指令的编码格式来窥窥汇编语句到二进制代码转换的过程,以理解不同语句与其二进制代码的关系:
1。压栈:
PUSH
register 1111 1111 : 11 110 reg
register (alternate encoding) 0101 0 reg

2。弹栈:
POP
register 1000 1111 : 11 000 reg
register (alternate encoding) 0101 1 reg

3。立即数操作:
immediate to register 1100 011w : 11 000 reg : immediate data
immediate to register (alternate encoding) 1011 w reg : immediate data

4。寄存器域:

reg w=0  w=1 reg w=0  w=1
000 AL   AX 000 AL  EAX
011 BL   BX 011 BL   EBX

可以看出来Intel本身对同一指令都有两种不同的编码格式,但是无论我们选择哪一种格式编码,得到的二进制结果虽然不一样
,但是执行的结果却是一样的。好了,我们来段简单的汇编语句:
mov ax,1234
push ax
pop bx


我们先来手工翻译一下:

Mov ax,1234指令有两种翻译方法:

 汇编语句     ——>  二进制代码        ——>  16进制代码
法一:Mov ax,1234    ——>  11 000 000  1234  ——>  C0 1234
法二:Mov ax,1234    ——>  1011 1 000  1234  ——>  B8 1234

Push ax也有两种翻译方法:

      汇编语句     ——>  二进制代码        ——>  16进制代码
法一:push ax    ——>  1111 1111:11 110 000  ——>  FF:F0
法二:push ax    ——>  0101 0 000            ——>  50

Pop  bx也有两种翻译方法:

      汇编语句     ——>  二进制代码        ——>  16进制代码
法一:Pop bx    ——>  1000 1111:11 000 011  ——>  8F:C3
法二:Pop bx    ——>  0101 1 011             ——>  5B

那么根据我们的手工译码有两套方案:
方案一:
mov ax,1234     ——>  C01234
push ax         ——>  FF:F0
pop bx          ——>  8F:C3

方案二:

mov ax,1234     ——>  B81234
push ax         ——>  50
pop bx          ——>  5B


[CODE]
-a
148E:0100 mov ax,1234
148E:0103 push ax
148E:0104 pop bx
148E:0105

-u 100
148E:0100 [COLOR=red]B83412[/COLOR]        MOV     AX,1234  
;怎么样??和我们手工翻译的第二套方案一模一样吧。/:P
148E:0103 [COLOR=red]50[/COLOR]            PUSH    AX    ;还真是一点都不假呢!
148E:0104 [COLOR=red]5B[/COLOR]            POP     BX    ;真的呢!

-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0100   NV UP EI PL NZ NA PO NC
148E:0100 B83412        MOV     AX,1234
;为了验证正确性,再来执行一下??注意红色部分的变化
[COLOR=red]
-g 103
[/COLOR]

[COLOR=red]AX=1234[/COLOR]  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0103   NV UP EI PL NZ NA PO NC
148E:0103 50            PUSH    AX

[COLOR=red]
-g 104
[/COLOR]
AX=1234  BX=0000  CX=0000  DX=0000  [COLOR=red]SP=FFEC[/COLOR]  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0104   NV UP EI PL NZ NA PO NC
148E:0104 5B            POP     BX

[COLOR=red]
-g 105
[/COLOR]
AX=1234  [COLOR=red]BX=1234[/COLOR]  CX=0000  DX=0000  [COLOR=red]SP=FFEE[/COLOR]  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0105   NV UP EI PL NZ NA PO NC
148E:0105 0000          ADD     [BX+SI],AL                         DS:1234=00

[/CODE]
最后三条红色部分跟踪语句可以换成(t命令,更显专业):
[CODE]

[COLOR=red]
-t
[/COLOR]
[COLOR=red]AX=1234[/COLOR]  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0103   NV UP EI PL NZ NA PO NC
148E:0103 50            PUSH    AX
[COLOR=red]
-t
[/COLOR]

AX=1234  BX=0000  CX=0000  DX=0000  [COLOR=red]SP=FFEC[/COLOR]  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0104   NV UP EI PL NZ NA PO NC
148E:0104 5B            POP     BX
[COLOR=red]
-t
[/COLOR]

AX=1234  [COLOR=red]BX=1234[/COLOR]  CX=0000  DX=0000  [COLOR=red]SP=FFEE[/COLOR]  BP=0000  SI=0000  DI=0000
DS=148E  ES=148E  SS=148E  CS=148E  IP=0105   NV UP EI PL NZ NA PO NC
148E:0105 0000          ADD     [BX+SI],AL                         DS:1234=00

[/CODE]


写完了这些,基本上可以回答霜泉兄的问题吧,/:P.
大家看完了,如果我也写清楚到大家那个完全理解的地步了的话,不知道兄弟们是不是有种想写编译器的冲动啊?呵呵。其实
涉及的东西还远不止这些呢!

- 作者: HackGou 2004年12月6日, 星期一 21:40  回复(0) |  引用(0) 加入博采

getsernum得到的序列号怎么和dir的不一样呢?
看着自己的getsernum怎么和dir的不一样呢?修正了一下,随便发到20cn上去,
免得误人子弟 /:p

/******************************************************************
*                                                                                                                     *
*        FileNma: getSerNum.cpp                                                                          *
*        Des:  打印分区相关信息,并返回对应序列号                                                     *
*        cl getSerNum.cpp                                                                                    *
*                                                                                                                     *
*                                                                                                                     *
*        Author:HackGou   Email:HackGou_AT_yeah_DOT_net                                  *
*        Blog:http://hackgou.blogchina.com/                                                                   *
******************************************************************/


#include
#include
//#include

#define VOLNAMELEN MAX_PATH        
#define FILESYSNAMEBUFSIZE MAX_PATH

int main(int avgc,char * argn[])                    
{
char *Root = new char[5];
char VolumeName[VOLNAMELEN];
char FileSysNameBuf[FILESYSNAMEBUFSIZE];
DWORD dwSysFlags;
DWORD VolSerNum;
DWORD VolumeSerialNumber;
DWORD MaxComLen;

if ( avgc==1) {
                        //strcpy (Root,"c:");
                        Root="c:\\";
}
else {
                        Root=argn[1];
}
GetVolumeInformation(Root, //需要检查的跟目录名称
                        VolumeName,                //卷名称
                        VOLNAMELEN,                                                    //卷名称长度
                        &VolSerNum,                    //序列号
                        &MaxComLen,             //最大的文件名长度
                        &dwSysFlags,            //文件系统类型                        
                        FileSysNameBuf,         //文件系统类型(NTFS或者FAT32)
                        FILESYSNAMEBUFSIZE);    //文件系统类型长度

cout<< "根目录: " << Root << endl;

cout<< "卷名: "<< VolumeName << endl;
cout<< "序列号: " <<< VolSerNum << endl;
cout<< "支持的最大文件名长度: "<< dec << MaxComLen<< endl;
cout<< "文件系统类型: "<< FileSysNameBuf << endl;
cout<< VolSerNum <
return VolSerNum;

}

- 作者: HackGou 2004年11月14日, 星期日 02:17  回复(0) |  引用(0) 加入博采