adriano 的个人资料adriano网上的家照片日志列表 工具 帮助
尚未添加列表。

adriano网上的家

2007/6/8

双屏幕显示问题的解决

如要将窗体移到辅显示器上显示,只需一行代码:
this.DesktopLocation=Screen.AllScreens[1].Bounds.Location;
如果要在辅显示器上全屏显示:
this.FormBorderStyle=FormBorderStyle.None;
this.DesktopBounds=Screen.AllScreens[1].Bounds;
2007/5/10

Ora-01940错误

ORA-01940
2007-01-29 10:58

删除某个用户时报ORA-01940,是由于该用户还有session连接,因此先用sysdba用户kill该用户session,再删除该用户即可。示例如下:

SQL> drop user PDS cascade;
drop user PDS cascade
*
ERROR 位于第 1 行:
ORA-01940: 无法删除当前已连接的用户

SQL> select username,sid,serial# from v$session;

USERNAME SID SERIAL#
------------------------------ ---------- ----------
SYS 10141 53
ADRIANO 10234,24

已选择2行。

SQL> alter system kill session'10234,24';

系统已更改。

SQL> drop user ADRIANO cascade;

用户已丢弃

2007/4/24

今天干掉了北信源DeviceRegist.exe远程监控软件

   这东西的介绍如下:北信源DeviceRegist远程监控软件近期受到政府部门广泛采用,它集网络监控、数据传输监控、后台远程浏览控制对方PC机等功能,特别是它的远程进入对方PC机,可以浏览你的文件、安装的程序、近期机器工作的动作,使你PC机像个裸体的女人一样暴露在远程偷窥者(单位网管)面前,另外你的PC机如果同时内外网互连,立即将浏览外网页面的IP活动记录信息反馈到网管,即使你拔掉内网线再上外网是个最安全的办法,但你在外网的访问IP活动记录已被DeviceRegist记录下来,你重新上内网时会把你前面在外网的浏览信息反馈到内网服务器那里,网管可以查出你在外网的活动记录。从网络安全的角度,DeviceRegist制作的比较完美,但从偷窥别人隐私的角度,它的手段太毒辣了,甚至超过了其他的远程控制软件,用一般的卸载软件无法卸载它(它的几个内嵌文件基本上要系统管理员才能铲除掉),也无法用知名的网络防火墙软件拦截它(它已经贿赂这些软件巨头了)。“冰刃Icesword”、“完美卸载2007”、修改注册表、msconfig均不能铲除它,DeviceRegist有较强的抗卸载能力。

DeviceRegist的进程运行特征:启动windows任务管理器,可以看到vrvrf_c.exe、vrvedp_m.exe、vrvsafec.exe、watchclient.exe 。

这东西本质上是一个超级流氓监控木马,今天决定铲除之。

参考了别人的思路,在本机删除办法如下:

1) 进入命令行的安全模式,在system32子目录下将watchclient.exe 改名,ren 命令即可;

2)使用del  vrv*.* /s/q 删除所有vrv开头的文件,这会有4、5个删不掉 没关系! 进入3)

3)重启电脑,再次执行2)所有文件都删掉。进入4)

4)在服务里面禁用vrv开头的服务。

大功告成。

解决问题的思路: 木马也好、病毒也罢、总有一个物理上存在的实体文件(rootkit另说),厉害点的编写者可以使用系统服务等自我保护方式对这些实体文件进行保护。直接删除不行,我们采取更换方式,改掉这个破玩艺服务文件可执行路径,让保护方式失效。看北信源怎么保护,最后再干掉其他的小喽罗文件,收工!!

 

 

 

 

 

 



 

 

 



 

2007/2/3

落后是有道理的(2)


汉芯系列造假;;;;;;;
麒麟操作系统涉嫌抄袭;;;;;;;
课题程序里的被删掉的版权声明;;;;;;;;;;
这些事情想让我一阵一阵的恶心....

首先 我想声明 抄袭没有什么不好,技术这个东西;你不会自己编也编不出来,借鉴一下别人的当然可以。而且现在很多软件都是开放源代码的,随便你抄,随便你修改,linux就是这样才发展起来的。所以在这里抄袭并不是一个贬义词。人家苹果操作系统抄袭的不是很好么!!关键是抄袭了还要NB烘烘开始骗国人,*****还要立牌坊,巨额科研经费搞出这么一个东西,自己买了小车小房升官发财,还想捞一个好名声。这是什么时代了,已经是网络时代了,当大家是傻瓜么??不怕以后生小孩遭报应么?? 还有哪些做项目鉴定的所谓专家(包括一些院士),你们扪心自问,是自己真的不懂还是在帮助掩盖这些狗屁"自主知识产权"??? 外国人瞧不起中国人就在这里。明明是不行,你可以学么,学好点不就成了二流国家,比如说日本。代表代表代表都到哪里去了??掌握几个核心技术了??

落后是有道理的

 

2006/5/12

落后是有道理的(2)-听报告和讲座归来

说点具体的,学了计算机也不少年了,在忙碌的生活之余冷静下来想想越学越觉得可悲:中国无论从软件、硬件上都远远落在了别人后面,核心技术掌握了几个?能和美国人有10年差距就已经是谢天谢地了,保守估计是20年。落后就算了,还觉得自己挺nb,这个自主产权,那个巨大突破...当国家是白痴,当国人是笨蛋,反正自己搞到经费就一切OK.... CS和EE两个专业都是这样,别的行业我也mei接触过,不太了解。863的项目都这样,别的可想而知了。有兴趣的人可以上网搜索一下上海交通大学“汉芯”的系列造假事件。
    讲座更是搞笑,西安电子科技大学的前校长,头衔一大堆,提出了一个观点:从100多年前到建国,我们国力的衰退和科技的落后是两条平行线,因为国力落后,所以科技落后。我要说,这都是现象,并不是真正的原因。那我想请问,什么导致了我们国力的落后呢?从历史书上我们学到的教育是其侵略者的暴行导致了落后(注意这是把责任推给了别人),在当今世界中受到的教育是敌对国家和敌对势力的封锁和打压(同样是把责任推给了别人),也许还有原先基础不好(把责任推给了历史),请我再用一遍这个词,那就是“荒唐”!!!世界上的发达国家那个在200年前是先进的?中国人洋洋得意的清朝康乾盛世时,美国那时候可还还没开发完吧?
    我认为,中国的落后是全面的落后,我们的落后是有道理的!制度上的落后 观念上的落后 再大一点甚至是文化上的落后,这种固步自封老子天下第一的文化正在延缓制度的进步和观念的更新:“我们可是仅剩的文明古国,那里比你们差了?拥有几千年的文化和传统.....我们要和平崛起”这种夜郎自大的思维模式可以在这个国家可以到处见到,不正视自己民族自身的丑陋和缺点,不更新旧有观念和制度,我们仍然会重复几千年来得老路:历史上记录着的“伟大”领袖一个接一个地出,伟大理论一个接一个地提,除此之外就是国民不尽的苦难。 
   

2006/5/8

麒麟操作系统还是出事了

    早先下载过这个" 国家863计划的重大研究成果,拥有完全自主版权的内核,与Linux在应用上二进制兼容,并支持64位,是中国独立研发成功的、具有完全自主知识产权的服务器操作系统。"
使用过程中就产生了很大的疑问,感觉就是修改了人家的界面和部分内核,抄袭人家的连版权声明都没有,只是没有工具来证明这一点;有牛人测试了给捅出来了....
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
出来混,总是要还的
 
麒麟操作系统内核与FreeBSD5.3内核的相似性达到了99.45%
【独家】863成果麒麟操作系统涉嫌抄袭
原文作者的blog
 
立此存照
 
2006/3/29

eeye公司关于IE最新漏洞的非官方补丁

下载地址:
http://www.eeye.com/html/research/tools/JScriptPatchSetup.exe

March 27, 2006


Exploits Circulating for Internet Explorer Unpatched Vulnerability

eEye Digital Security is advising customers to the existence of exploit code that targets a critical security vulnerability in Microsoft Internet Explorer. The exploit pertains to an unpatched vulnerability that has been released on various public mailing lists.

Microsoft has released a security alert on this issue that can be found here:
http://www.microsoft.com/technet/security/advisory/917077.mspx

This issue affects any Windows operating system running Internet Explorer versions 5.01 SP4 through 6.0 SP2. The vulnerability results from the method in which Internet Explorer handles HTML Objects. This flaw allows for remote code to be executed on the target system. If successfully exploited, an attacker will only have the rights of the currently logged on user. System Administrators should be careful to not use Administrator accounts for general system use.

Currently, there have been numerous reports of this vulnerability being used on various websites in attempts to install Spyware and remote control "bot" software for use in Distributed Denial of Service (DDoS) attacks.

The recommended action required to protect systems against this attack is to disable Active Scripting from within Internet Explorer.

Following are the steps required to disable Active Scripting:



Protecting Your Systems

eEye Digital Security's Research Team has confirmed that eEye's Blink® host-based intrusion prevention solution protects from the exploitation of this Internet Explorer flaw without requiring invasive firewalling, or the presence of any patch. Current Blink customers should ensure that the Application Protection is enabled in their Blink policies.

Organizations that have not already deployed Blink and are interested in evaluating the technology can learn more on the eEye website:
http://www.eeye.com/html/products/blink/index.html

Downloading eEye's Temporary Patch

Additionally, eEye Digital Security's Research Team has released a patch for the vulnerability as a temporary measure for customers who have not yet installed Blink. This patch is not meant to replace the forthcoming Microsoft patch, rather it is intended as a temporary protection against this flaw. Organizations should only install this patch if they are not able to disable Active Scripting as a means of mitigation.

Organizations that choose to install this patch should take the steps required to uninstall it once the official Microsoft patch is released.

The patch can be found here:
http://www.eeye.com/html/research/tools/JScriptPatchSetup.exe

For support, bug reports, or feedback please email alerts@eeye.com.

2006/3/25

Benefits of Working at Juniper Networks

看完了 无语中.....

怎么像是共产主义?

Juniper: 高端网络设备生产商 行业中仅次于CISCO.

Benefits of Working at Juniper Networks

Juniper Networks offers a comprehensive and competitive benefits package designed to meet the varying needs of our employees. These benefits are an integral part of Juniper Networks total compensation package and provides employees and their family members valuable protection and financial options during employment with Juniper Networks. Juniper Networks competitive benefit package includes:

 

Savings Plans
Health Plans
Flexible Spending Accounts
Income Protection
Time Off
Additional Benefits

Savings Plans

401(k) Plan 退休保障基金

The 401(k) Plan is a retirement plan that allows employees to set aside a portion of income on a pre-tax basis for retirement. Employees are eligible on their first day of employment. Employees may allocate from 1% to 100% of their pre-tax income to the Plan, up to the IRS maximum limit. Juniper Networks matches 100% of all elective deferrals based on eligible pay, up to a maximum of $2,000 annually. Eligible pay is defined as base salary, overtime, bonus and commissions. All contributions, including the match, are immediately 100% vested.

Employee Stock Purchase Plan (ESPP)  低于市场价购买公司股票

The ESPP allows you to acquire shares of Juniper Networks common stock through payroll deductions from 1% to 10%. There are two offering periods per year - one beginning February 1 and the second beginning August 1. Employees may purchase Juniper Networks stock at 15% less than the fair market value as of the beginning or end of the offering period.


Health Plans 医疗保健计划

Health care coverage is available on the first day of regular employment for employees scheduled to work 30 or more hours per week. Employees may also cover their eligible dependents (spouses, domestic partners and dependents).

Medical:

  • Available Nationwide:
    • Blue Cross of California PPO

  • Available In selected states:
    • Blue Cross of California EPO (available in states outside California and New England states)
    • Health Maintenance Organizations (HMO)
    • Blue Cross of California HMO (California)
    • Blue Cross Blue Shield of Massachusetts HMO (New England States)
    • Kaiser (California and Virginia)

    Dental: 居然还有牙科

    • Delta Dental Premier USA

    Vision: 居然还有视力

    • Vision Services Plan (VSP)

Prescription Drug Program

Prescription Drug coverage is automatically provided to employees and eligible dependents that enroll in a Juniper Medical Plan.


Flexible Spending Accounts

Health Care FSA

Employees may use this account to be reimbursed for eligible out-of-pocket health expenses not covered by their health care plan. Employees may allocate between $250 and $3,000 each year to this account.

Dependent Care FSA

Employees may use this account to be reimbursed for eligible out-of-pocket expenses associated with caring for dependents while the employee or the employee's spouse work, including child care, elder care or care for an adult dependent who is incapable of self care. Employees may allocate between $250 and $5,000 each year to this account.


Income Protection  收入保护??

The benefits below provide income protection for employees scheduled to work more than 30 hours per week.

  • Basic Life Insurance
  • Supplemental Life Insurance
  • Accidental Death and Dismemberment Insurance (AD&D)
  • Business Travel Accident Insurance
  • Short Term Disability Insurance
  • Long Term Disability Insurance
  • Worker's Compensation Insurance


Time Off

Paid Time Off (PTO) 带薪休假

Juniper Networks provides paid time off (PTO) to both regular full-time and part-time employees. PTO is defined as paid time away from work for vacation, illness, outside activities, or personal business. You begin earning PTO on your first day at Juniper. PTO is based upon years of service and accrues bi-monthly.

Years of Service Annual PTO Accrual
Up to 1 year 15 days
1 year but less than 2 years 16 days
2 years but less than 3 years 17 days
3 years but less than 4 years 18 days
4 years but less than 5 years 19 days
5 years or more 20 days

Holidays

Juniper Networks provides 12 paid holidays each year. Nine holidays are fixed and three are floaters pre-designated by Juniper Networks prior to the beginning of each calendar year.

Leaves of Absence

Leaves of absence for medical, family care, new parent and military leaves are available in accordance with state and federal law.


Additional Benefits

Employee Assistance Program

The Employee Assistance Program or EAP, administered by Ann Clark Associates (ACI), is available to employees and their eligible dependents and provides confidential, personal assessment and referral services. Employees and their family members are eligible for up to three visits per calendar year, per incident at no charge.

Matching Gift Program

Juniper Networks Matching Gift Program is designed to increase the impact of your personal charitable contributions to eligible organizations. All eligible gifts will be matched on a dollar-for-dollar basis from $25 to $1,000 per calendar year.

Credit Union

Juniper Networks offers its employees eligibility to participate in the KeyPoint Credit Union (formerly AEA Credit Union). Other credit union memberships may be available in areas outside of California.

MetLife Home & Auto Insurance

MetLife's Home and Auto insurance program is a voluntary program which offers a variety of special group rates and policy discounts to make insurance more affordable. With this program you can take advantage of convenient payroll deductions to simplify paying for your insurance.

BeyondWork

BeyondWork and its BeyondBargains superstore is an employer-sponsored program designed to save employees' time and money by providing easy online access to discounts on a wide variety of goods and services.

Tuition Assistance 

The Juniper Tuition Assistance Program is designed to aid employees in the pursuit of work-related courses or course work toward a work-related degree.

Stanford Center For Professional Development Program (SCPD)  斯坦福的继续教育?

This program provides academic graduate education and short courses for engineers and technology professionals. Courses are delivered via distance learning technologies including television broadcast, videotape instruction and Stanford Online as well as on campus.

Important Note: This is intended to be a summary of benefits. The Plan Documents will be the ruling document should a discrepancy arise. Juniper Networks reserves the right to amend the benefit program at its discretion.

2006/3/20

任意用户模式下执行 ring 0 代码

任意用户模式下执行 ring 0 代码

Author  : sinister
Email   : sinister@whitecell.org
HomePage: http://www.whitecell.org  /


   众所周知在非 Admin 用户模式下,是不允许加载驱动执行 RING 0 代码的。
本文提供了一种方法,通过修改系统 GDT,IDT 来添加自己的 CALLGATE 和
INTGATE 这样便在系统中设置了一个后门。我们就可以利用这个后门
在任意用户模式下执行 ring 0 代码了。为了保证我们添加的 CALLGATE 和 INT
GATE 永久性。可以在第一次安装时利用 SERVICE API 或 INF 文件设置成随
系统启动。不过此方法也有个缺陷,就是在第一次安装 CALLGATE 或 INTGATE
时仍然需要 ADMIN 权限。下面分别给出了添加 CALLGATE 与 INTGATE 的具体
代码。

  
   一、通过添加调用门实现

  为了可以让任意用户来调用我们的 CALLGATE 需要解决一个小问题。因为
需要知道 CALLGATE 的 SELECTOR 后才可以调用。而在 RING 3 下除了能
得到 GDT 的 BASE ADDRESS 和 LIMIT 外是无法访问 GDT 内容的。我本想
在 RING 0 把 SELECTOR 保存到文件里。在 RING 3 下读取出来再调用。
后经过跟 wowocock 探讨。他提出的思路是在 RING 0 下通过
ZwQuerySystemInformation 得到 NTDLL.DLL 的 MODULE BASE 然后根据
PE HEADER 中的空闲处存放 SELECTOR。这样在 RING 3 的任意用户模式下
就很容易得到了。在这里要特别感谢 wowocock。下面的代码为了演示
方便,用了在我机器上 GDT 中第一个空闲描述符的 SELECTOR 。


驱动程序:

/*****************************************************************
文件名        : WssAddCallGate.c
描述          : 添加调用门
作者          : sinister
最后修改日期  : 2002-11-02
*****************************************************************/

#include "ntddk.h"
#include "string.h"

#ifndef DWORD
#define DWORD unsigned int
#endif

#ifndef WORD
#define WORD unsigned short
#endif

#define LOWORD(l)           ((unsigned short)(unsigned int)(l))
#define HIWORD(l)           ((unsigned short)((((unsigned int)(l)) >> 16) & 0xFFFF))


typedef unsigned long    ULONG;
static NTSTATUS  MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
VOID DriverUnload (IN PDRIVER_OBJECT pDriverObject);

#pragma pack(push,1)


typedef struct tagGDTR{
    WORD    wLimit;
    DWORD   *dwBase;
}GDTR, *PGDTR;

typedef struct tagGDT_DESCRIPTOR{
    unsigned limit         : 16;
    unsigned baselo         : 16;
    unsigned basemid     : 8;
    unsigned type        : 4;
    unsigned system      : 1;
    unsigned dpl         : 2;
    unsigned present     : 1;
    unsigned limithi     : 4;
    unsigned available   : 1;
    unsigned zero        : 1;
    unsigned size        : 1;
    unsigned granularity : 1;
    unsigned basehi : 8;
}GDT_DESCRIPTOR, *PGDT_DESCRIPTOR;

typedef struct tagCALLGATE_DESCRIPTOR{
    unsigned short   offset_0_15;
    unsigned short   selector;
    unsigned char    param_count : 4;
    unsigned char    some_bits   : 4;
    unsigned char    type        : 4;
    unsigned char    app_system  : 1;
    unsigned char    dpl         : 2;
    unsigned char    present     : 1;
    unsigned short   offset_16_31;
} CALLGATE_DESCRIPTOR, *PCALLGATE_DESCRIPTOR;

#pragma pack(pop)

void __declspec(naked) Ring0Call()
{
    PHYSICAL_ADDRESS  PhyAdd;

    __asm {
        pushad
        pushfd
        cli
    }

     DbgPrint("WSS - My CallGate \n");

     //
     // 这里可以添加你想要执行的 ring 0 代码。
     //

    __asm {
       popfd
       popad
       retf
    }
}

VOID AddCallGate( ULONG FuncAddr )
{
    GDTR                    gdtr;
    PGDT_DESCRIPTOR         gdt;
    PCALLGATE_DESCRIPTOR    callgate;
    WORD                    wGDTIndex = 1;


    __asm {
        sgdt  gdtr                  // 得到 GDT 基地址与界限
    }

    gdt = (PGDT_DESCRIPTOR) ( gdtr.dwBase + 8 );  // 跳过空选择子

    while ( wGDTIndex < ( gdtr.wLimit / 8 ) )
    {
       if ( gdt->present == 0 )     //从 GDT 中找到空描述符
       {          
            callgate = (PCALLGATE_DESCRIPTOR)gdt;

            callgate->offset_0_15             = LOWORD(FuncAddr);
            callgate->selector         = 8;                     // 内核段选择子
            callgate->param_count             = 0;               // 参数复制数量
            callgate->some_bits         = 0;                    
            callgate->type             = 0xC;              // 386调用门
            callgate->app_system             = 0;                    // 系统描述符
            callgate->dpl             = 3;                    // RING 3 可调用
            callgate->present         = 1;                    // 设置存在位
            callgate->offset_16_31   = HIWORD(FuncAddr);
            DbgPrint("Add CallGate\n");

            return;
       }

       gdt ++;        
       wGDTIndex ++;
    }

}


// 驱动入口
NTSTATUS  DriverEntry( IN PDRIVER_OBJECT DriverObject,  IN PUNICODE_STRING RegistryPath )
{
    
    UNICODE_STRING  nameString, linkString;
    PDEVICE_OBJECT  deviceObject;
    NTSTATUS        status;
    HANDLE          hHandle;
    int                i;
    

    //卸载驱动
    DriverObject->DriverUnload = DriverUnload;

    //建立设备
    RtlInitUnicodeString( &nameString, L"\\Device\\WssAddCallGate" );
    
    status = IoCreateDevice( DriverObject,
                             0,
                             &nameString,
                             FILE_DEVICE_UNKNOWN,
                             0,
                             TRUE,
                             &deviceObject
                           );
                          

    if (!NT_SUCCESS( status ))
        return status;
    

    RtlInitUnicodeString( &linkString, L"\\DosDevices\\WssAddCallGate" );

    status = IoCreateSymbolicLink (&linkString, &nameString);

    if (!NT_SUCCESS( status ))
    {
        IoDeleteDevice (DriverObject->DeviceObject);
        return status;
    }    
    
    AddCallGate((ULONG)Ring0Call);

    for ( i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++)    {

          DriverObject->MajorFunction[i] = MydrvDispatch;
    }

      DriverObject->DriverUnload = DriverUnload;
    
  return STATUS_SUCCESS;
}


//处理设备对象操作

static NTSTATUS MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
    Irp->IoStatus.Status = STATUS_SUCCESS;
    Irp->IoStatus.Information = 0L;
    IoCompleteRequest( Irp, 0 );
    return Irp->IoStatus.Status;
    
}



VOID DriverUnload (IN PDRIVER_OBJECT    pDriverObject)
{
    UNICODE_STRING  nameString;

    RtlInitUnicodeString( &nameString, L"\\DosDevices\\WssAddCallGate" );    
    IoDeleteSymbolicLink(&nameString);
    IoDeleteDevice(pDriverObject->DeviceObject);

    return;
}


应用程序:

#include <windows.h>
#include <stdio.h>

void main()
{
    WORD farcall[3];

    farcall[0] = 0x0;
    farcall[1] = 0x0;
    farcall[2] = 0x4b;  //在我机器上,添加 CALLGATE 的选择子为 4BH

    _asm call fword ptr [farcall]


}


   二、通过添加中断门实现

  添加中断门没有什么需要解决的问题。直接在 RING 3 利用 int x
即可切换。想想系统调用 INT 2E 就很容易理解了。


/*****************************************************************
文件名        : WssMyInt.c
描述          : 添加中断门
作者          : sinister
最后修改日期  : 2002-11-02
*****************************************************************/

#include "ntddk.h"

#pragma pack(1)


typedef struct tagIDTR {
        short Limit;
        unsigned int Base;
}IDTR, *PIDTR;


typedef struct tagIDTENTRY {
        unsigned short OffsetLow;
        unsigned short Selector;
        unsigned char  Reserved;
        unsigned char  Type:4;
        unsigned char  Always0:1;
        unsigned char  Dpl:2;
        unsigned char  Present:1;
        unsigned short OffsetHigh;
} IDTENTRY, *PIDTENTRY;

#pragma pack()

#define MYINT 0x76

extern VOID _cdecl MyIntFunc();
CHAR   IDTBuffer[6];

IDTENTRY  OldIdt;
PIDTR idtr = (PIDTR)IDTBuffer;


static NTSTATUS  MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
VOID DriverUnload (IN PDRIVER_OBJECT pDriverObject);

// 我们得中断处理函数

VOID _cdecl MyIntFunc()
{
    PHYSICAL_ADDRESS  PhyAdd;
    unsigned int      dwCallNum;
    unsigned int      dwVAddr;

    _asm mov dwCallNum,eax

     //
     // 这里可以添加你想要执行的 ring 0 代码
     //

    switch ( dwCallNum )
    {
        case 0x01:        
             DbgPrint("MyIntGate eax = 0x01\n");
             break;

        case 0x02:
             DbgPrint("MyIntGate eax = 0x02\n");
             break;

        default:break;

    }


    _asm iretd; //中断返回
}

NTSTATUS AddMyInt()
{
    PIDTENTRY    Idt;

    //得到 IDTR 中得段界限与基地址
    _asm sidt IDTBuffer

    Idt = (PIDTENTRY)idtr->Base; //得到IDT表基地址

    //保存原有得 IDT
    RtlCopyMemory(&OldIdt, &Idt[MYINT], sizeof(OldIdt));


    //禁止中断
    _asm cli

    //设置 IDT 表各项添加我们得中断

    Idt[MYINT].OffsetLow   = (unsigned short)MyIntFunc;    //取中断处理函数低16位
    Idt[MYINT].Selector    = 8;                            //设置内核段选择子
    Idt[MYINT].Reserved    = 0;                            //系统保留
    Idt[MYINT].Type        = 0xE;                          //设置0xE表示是中断门
    Idt[MYINT].Always0     = 0;                            //系统保留必须为0
    Idt[MYINT].Dpl         = 3;                            //描述符权限,设置为允许 RING 3 进程调用
    Idt[MYINT].Present     = 1;                            //存在位设置为1表示有效
    Idt[MYINT].OffsetHigh  = (unsigned short)((unsigned int)MyIntFunc>>16); //取中断处理函数高16位

    //开中断
    _asm sti

    return STATUS_SUCCESS;
}


//删除中断

void RemoveMyInt()
{
    PIDTENTRY            Idt;
    Idt = (PIDTENTRY)idtr->Base;

    _asm cli
    //恢复 IDT
    RtlCopyMemory(&Idt[MYINT], &OldIdt, sizeof(OldIdt));
    _asm sti
}



// 驱动入口
NTSTATUS  DriverEntry( IN PDRIVER_OBJECT DriverObject,  IN PUNICODE_STRING RegistryPath )
{
    
    UNICODE_STRING  nameString, linkString;
    //UNICODE_STRING  deviceString;
    PDEVICE_OBJECT  deviceObject;
    NTSTATUS        status;
    WCHAR           wBuffer[200];
    
    nameString.Buffer        = wBuffer;
    nameString.MaximumLength = 200;


    //卸载驱动
    DriverObject->DriverUnload = DriverUnload;

    //建立设备
    RtlInitUnicodeString( &nameString, L"\\Device\\WSSINT" );
    
    status = IoCreateDevice( DriverObject,
                             0,
                             &nameString,
                             FILE_DEVICE_UNKNOWN,
                             0,
                             TRUE,
                             &deviceObject
                           );
                          

    if (!NT_SUCCESS( status ))
        return status;
    
    RtlInitUnicodeString( &linkString, L"\\??\\WSSINT" );

    //使WIN32应用程序可见
    status = IoCreateSymbolicLink (&linkString, &nameString);

    if (!NT_SUCCESS( status ))
    {
        IoDeleteDevice (DriverObject->DeviceObject);
        return status;
    }    
    
    AddMyInt();

    DriverObject->MajorFunction[IRP_MJ_CREATE] = MydrvDispatch;
    DriverObject->MajorFunction[IRP_MJ_CLOSE]  = MydrvDispatch;  
    
  return STATUS_SUCCESS;
}


static NTSTATUS MydrvDispatch (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
    NTSTATUS            status;
    
    UNREFERENCED_PARAMETER( DeviceObject );
    
    Irp->IoStatus.Status = STATUS_SUCCESS;
    Irp->IoStatus.Information = 0L;
    status = STATUS_SUCCESS;

    IoCompleteRequest( Irp, 0 );
    return status;
    
}



VOID DriverUnload (IN PDRIVER_OBJECT    pDriverObject)
{
    UNICODE_STRING  nameString;
    UNICODE_STRING  deviceString,driveString;
    NTSTATUS        ntStatus;

    RemoveMyInt();

    //删除WIN32可见
    IoDeleteSymbolicLink(&nameString);
    //删除设备
    IoDeleteDevice(pDriverObject->DeviceObject);

    return;
}

2006/3/17

退学的魄力...严重佩服

"真的猛士,敢于直面惨淡的人生,敢于正视淋漓的鲜血"

 

 

 后记 tmbacc同学最终没有退学..... 呵呵

 

2006/3/7

邮件发布space测试 呵呵

补上上次的Anders Hejlsberg的采访地址链接和介绍:
URL: http://channel9.msdn.com/Showpost.aspx?postid=159952
下载地址: http://download.microsoft.com/download/7/d/3/7d3de91e-0a61-4c31-bcc4-628bc81c635a/Behind_The_Code_2_512k.wmv

This episode features industry luminary, Anders Hejlsberg. Before coming to Microsoft in 1996 he was well noted for his work as the principal engineer of Turbo Pascal and the chief architect of the Delphi product line. At Microsoft he was architect for the Visual J++ development system and the Windows Foundation Classes (WFC). Promoted to Distinguished Engineer in 2000, Anders is the chief designer of the C# programming language and a key participant in the development of Microsoft’s .NET framework. In this show, Anders is joined by a surprise guest.

This episode of “Behind the Code” is hosted by Barbara Fox – former senior security architect of cryptography and digital rights management for Microsoft.




一些简单的数字

    今天看了MSDN上对Anders Hejsberg的专访,链接回来我会补上;此人现在是微软C#语言的首席架构师,另外一个身份是Borland公司的创立者之一.........他的观点对我很有启发:simplicity 即简单,如果你不能把你的技术在5分钟之内让一个不同领域的人明白的话,那么这个技术多半不会成功;虽然他自己是微软的雇员,但是他对微软提出的:COM、DNA、OLE、ACTIVEX都提出了严厉的批评:terrible 呵呵
    还有这个man在微软挖他的时候,年薪是300万美元...而他那个时候刚刚30出头??记不清楚了;这个man简直是我的偶像:做着自己喜欢的工作:这份工作不仅很有意义(各位如果明白compiler编译器对计算机软件行业的重要性的话),而且这份工作能让自己的亲人和家庭过上幸福的生活.....
    自己呢??
    第一个:关于时间,100天对我意味着什么? 除去节假日,它是一年的三分之一;如果还能工作30年,九十分之一;如果我还能活50年,那么这100天是1/150............时间,正在不知不觉中飞逝;
    第二个:关于金钱:从现在算起,如果我年薪10万RMB,满打满算再工作50年,才会有500万,按照现在的价格计算,如果想买一辆Audi A8需要不吃不喝攒10年.......什么时候金钱对于我来说只是一个数字而已呢:新出的Audi或者Alpha Romeo想都不用想就可以买呢? 现在才发现 自己从来都没有幻想过这种数量级的Money...
    当发现自己连对未来的憧憬(也许叫幻想更合适)都没有的时候,心中掠过一丝悲哀:这难道是成长的代价么? 这样不行, 我要好好规划自己的专业方向:DBer还是IT consultant还是 Reviewer还是 Developer还是...???我想机会总会有的!! 天生我材必有用呀
    写的有点意识流,对不起各位看官了.  
 
   
 
2006/3/6

一首好歌

偶然听到的,就上baidu 搜了下:
perfect day
                  Lou Reed
Just a perfect day
Drink sangria in the park
And then later, when it gets dark, we'll go home
Just a perfect day
Feed animals in the zoo
Then later a movie too, and then home
Oh it's such a perfect day
I'm glad I spent it with you
Oh such a perfect day
You just keep me hanging on
You just keep me hanging on
Just a perfect day
Problems all left alone
Weekenders on our own
It's such fun
Just a perfect day
You make me forget myself
I thought I was someone else
Someone good
Oh it's such a perfect day
I'm glad I spent it with you
Oh such a perfect day
You just keep me hanging on
You just keep me hanging on
You're going to reap just what you sow
You're going to reap just what you sow
You're going to reap just what you sow
You're going to reap just what you sow
2006/1/9

继续关注google....

最新的Google市值已经达到了1226亿,他的主要竞争者:

公司 市值
微软 2783亿
Google 1226亿
EBAY 602亿
YAHOO 556亿
百度 15亿


不过目前在中文搜索市场,Google似乎正在碰到麻烦,由于大量作弊网站针对Google的网页排序算法(page rank)进行“攻击”,极大地损害了Google的搜索质量,而Google在中文搜索领域的“竞争对手”百度正在稳步提高其占有比例。

Google近期在国内的发展将进入一个尴尬的时期,主要原因可能还是“文化”原因。Google作为一个由纯“学术环境”里做出来的搜索引擎,有很强的学术偏好。其技术核心“page rank”算法就是文献计量学中,如何考核文章质量的问题。网页排序由网页相互引用关系决定,而文章的重要性则由文章的“引用率”衡量。互联网和文章引用网络类似都可看作是一定模型下的“复杂网络”,只不过互联网增长速度实在是太快了,“复杂网络”是目前复杂性研究中重要的一个问题。Google在技术上的成功很大程度上应归功于美国大学的“学术传统”,而不是简单的编编程序而已。Google的“不作恶事”声明,可看作学术上求实、求真价值观的体现。

从内容上看,英文互联网的最大特点是“娱乐性”不明显,如果我们计量英文网页各类信息比例的时候,我们会发现其中的“教育”信息,“科研”信息,“生活”信息等对大家有用,建设性的内容比例很大,肯定会多于中文网页对应的比例。而我们的互联网内容“娱乐性”太强,“商业性”也太强。而百度,搜狗等国内的搜索网站基本上都是靠加强娱乐性提升流量,靠多作商业开发来赚钱。当然这些也无可厚非,因为企业第一位考虑的还是生存和发展问题。但Google就可以兼顾这些了,她的使命是——组织人类有史以来所有有用信息,确实是个很公益的想法。

如果哪个国内的网站也这么对媒体叙述自己,媒体肯定不喜欢,大众也听不懂,我们能听懂的是几年内造几十个百万富翁,我们关心的是Google的市值。我们的大众需要的不是“教育”和“研究”,而是“娱乐”。这确实是个事实,走进网吧,我们可以看到很多年轻人在打游戏,他们为什么不上大学?上了大学,为什么不好好学习?为什么不在现实社会中打拼?我们的社会暂时不能给他们足够的机会,他们从社会和周围人的身上也没得到建设性的“生活理想”。如果他们不打游戏,无聊的日子如何打发,可能是麻将或打牌,有了互联网至少可以聊天、游戏。

“学术+商业”造就了Google,“娱乐+商业”造就了中国的互联网企业。在同样碰到网站作弊困扰的情况下,百度的选择是在左侧加入“推广排名”,靠“人为因素”消除了垃圾信息。而Google则固守自己的规矩,拒绝在自己的左侧搜索页面搀杂进“人为因素”,这样短期内必然会遭受损失,甚至就此失去在国内的领先地位。

归根结底,我们信奉的是强权哲学,是成王败寇的哲学。

2006/1/6

怀念北工大的楼长........

在这个“争当世界一流”大学的研究生宿舍早上起来发觉两个鼻孔冻的冰凉,双人双层的被子像刚从水里捞出来一样...在此时此刻最大的希望就是晒在身上的太阳不要下山....
年底了,学员队一切行动的指导思想就是"越早回家越好"(不过是送瘟神的另外一种说法),其它不相关的事情也不要指望他们;这些人怎么就不明白我们戚总"人性化"这三个字呢?
突然想起本科时宿舍楼下面和蔼可亲的大妈(我们叫楼长),对学生是有求必应,学生自然也极少给她们找麻烦,虽然我们四年就毕业了,但是那种和谐的管理关系真tm让人怀念!!
 
2006/1/3

ID对隐私的威胁(with谈帅哥讨论的结果)

 

随着家用电脑的普及以及信息化工程的建设,网络已经成为人们生活的一部分,对于一个经常上网的人来说,如果没有网络,就如同80年代的人没有电视一样,总感觉一天之中少了什么。

EMAIL电子邮件和QQ,MSNUC等及时通信工具的出现,人们的交流方式发生了改变,从前的书信,电报现代人已经很少再用了,每个QQMSN族上网的第一件事情就是打开自己的通信工具,和自己的好友打个招呼,或者是寻找新的聊天伙伴。

  每个人在网络上都有自己的ID,标识自己的身份,无论是QQ号还是MSNEMAIL地址,游戏帐号,论坛帐号等等,ID是一个人在网络中的唯一标识,其中论坛帐号尤其体现一个人的个性,每个人都希望有一个能让别人记住的个性鲜明的ID,正如我们的身份证一样是唯一的,对于平常人来说多于三个的ID对他来说是多了,很多人随着上网时间的增长,往往常用的ID不超过三个(密码经常是相同的),也许有人有多的ID,但那往往是他的马甲(作别的事情用的)。

  随着GOOGLE等超级搜索引擎的出现,它的目的在于给人们提供一个查找信息的最佳平台,但这也会让你从另一面去认识一个人,因为他在网络上有唯一的ID,可以通过这个ID可以搜索他在网络上的足迹,俗语常说:“观其行,听其言”,通过言行边可认识这个人的本质,我们是不是可以通过他在网络上的足迹可以发现他内心世界的秘密。

 都市生活的快节奏让上班族感到很疲惫,上网是他们常常放松的一种方式,特别是到各色论坛去看贴,潜水,时不时的去发表自己的文章,现在的时代是张扬的年代,自我表现的年代。

   人们在网上比在现实生活中自由,受的限制更少,明显的例子,在网游中,如果你是个高等级的人,你就是一个秩序的维护者,你有很大的权利和金钱,你可以随意杀死别人(PK),或者用游戏中的金钱去购买你所要的一起,受很多人的拥戴(如果你是游戏中门主或者帮派首领),可以说人们在现实生活中不能做到,想作却作不到,你可以在网络虚拟空间中实现。网络歌手,网络名人以前的平凡人也可以成为大家关注的焦点,因此网络可以满足各色人的需求也包括一个人不为人知的一面。

  正如你在路上行走会留下痕迹,你在网络上也有记录,如何去发现这些痕迹呢,就是你在网上的唯一表示ID,这个ID是什么呢?也许是你在游戏中的帐号,论坛的IDQQ,MSNEMAIL,等等,我想常用的也就是这些。

  上面提到的GOOGLE可以让我们也查询到这些ID在网络中的痕迹,也许你用马甲,但你会不小心的留下其他的ID。如你在论坛注册ID的时候留下了自己的EMAIL,或者QQMSN等等,通过这些都可以方便的查询到你的记录。

  每个人都有自己的小秘密,当上网的时候会不情不自禁的留在网络的某个角落,也许你自己都忘记了,但记录是存在的,只要你去查询一定能找到,你在某个交友论坛留下了自己的痕迹,当那天你的女朋友用你的ID去查询时,会发现这个痕迹,将会发生什么事情呢?

也许你将费不少口舌和心思了吧,^_^。如果还有其他的痕迹呢?你将如何处理?

    如果你知道别人常用的ID论坛IDEMAILQQMSN等等),你就去GOOGLE搜索以下,说不定你会有出人意料的发现!!!

 

 

 

ps:在谈帅哥写完这篇文章之后,我们又新发现两个网站: ucloo和sogou的寻人,一个资料来源是是从南方的5460,一个来源是北方的chinaren,居然都使用了实名搜索,能提供基本完整的个人成长经历和部分联系方式.... 这年头居然连个人实名也成为了个人隐私泄漏的源头了(也许在有的人看来不算个人隐私)....公安部的全国人口查询系统能提供的资料也没有这么丰富^^看来网络已经在逐渐改变我们认识他人,了解他人的方式...不是我不明白 是这个时代变化快.....

2005/12/30

听了2个学术报告后的杂记

一个关于网络行业 一个关于中间件
  先说第一个,世界上几个网络行业的巨擎: CISCO、JUNIPER、HUAWEI、ZTE 尤其是前3家,让我想起了纳粹宣扬的superman 什么都敢做:传统路由器到光交换设备等等,而且都做得非常NB:这帮企业在01年做的核心路由器的吞吐性能现在仍然超过世界现在阶段铺设带宽的至少10倍以上,这是个什么概念.....我们的需求不是跟不上速度,而是被远远甩下 ...... 令人高兴的是,里面居然有两家是我们中国自己的公司.当然不能忘了IBM和INTEL这两个巨头,专门生产上面提到设备的核心:NP即网络处理器.我们的科研落后这么多,也是存在客观原因de:上面随便一家公司就上万人,不仅掌握了核心技术还不断投入雄厚的财力物力研发.我们一个学院这么点人,还有不少闲杂人员,怎么搞得过他们这些企业?能弄个东西出来已经不错了!这个行业门槛太高,个人感觉我们的本来就不多研究经费花在这上面没什么必要,无非是挣点面子而以,投入产出完全不成比例.军队也没这方面需求,扯远了....中国人一点都不笨,HUAWEI ZTE一样可以做得很好,那是什么东西限制了我们呢... 美国的IT巨擎的首席科学家和研究人员一般都在学校里同时担任着教职.市场化和科研简直是完美的结合(CISCO公司的路由器的iSLIP算法的发明人同时是stanford的教授).也许这是一个option???
 
  另外一个报告没什么意思,过于复杂的CORBA技术被我们“固执”的推动,结果闹了个笑话:领导来视察,问我们的成果呢?回答:都在墙上挂着呢;....居然还要推到“11 5”计划,还要包括主流的J2EE功能和其他的应用平台........听着都已经晕了,加入对新的平台和扩展性的支持只能让这种技术更加繁琐,现在的平台现在除了发发公文之外基本没有更大的作用....很难想象最后的一个“四不像”的超级complex的产品能有多大应用(难道是有人想继续骗点科研经费)....?#·#¥?%¥#%…… 不得而知了
一种技术或平台想在历史上站住脚.一定要在下面的三个方向之中要有出彩,否则很快就会被无数的"学术垃圾"淹没:
  1是严格的抽象模型(举例来说就是图灵可计算模型),即可以通过严格的数学推理证明,其他的模型均可以用所提出的抽象模型替代或者转化.
  2是要有主流产品,即和市场紧密结合,成为事实的标准(举例来说UNIX、WINDOWS操作系统).
  3是一定要有killer application即杀手应用WWW,SMTP就是典型的互联网应用.一个老太太可能不知道互联网的定义,但是确能说出:我天天用互联网发邮件呢~~ 这就是killer application
 
 
可惜的是,CORBA好像连半条都没满足:)
 

又到年底检查时……

记得去年的这个时候,同时面临2们核心课的考试压力,我们每天早上6:00吹哨起床,然后在楼道里点个名,再下楼跑一圈再回来; 今年的年底检查已经很宽松了…………
总政主任来了也就这样了,很多想当然的事情如果细细想起来根本就没有什么道理;也没有什么道理可讲;
少jjww,ppmm…………了
这是军校,哪来那么多废话~~
鄙视自己一下:)
 
2005/12/20

开题准备中………

有人评价我的课题是:人家“破门而入“,”杀人放火“我来;怎么看怎么像个强盗
诶 ~~良心要受谴责的
不过还好是在虚拟世界中
 
 
2005/12/8

^_^ 冠军杯ac米兰出线了

非常欣赏这种关键时刻能顶住的队伍的 呵呵
 
 

Don adriano

没有相册。