最近整理了一对进入ring0的函数, 要执行特权命令就方便多了.
如果谁要就留个地址吧.
将.cpp .h两个文件都拷贝到目标目录中,
在包含.h文件后就可以调用.h中的函数了,
用法:
void initRing0Func(void (*));
用来初始化你要执行的函数(此函数执行在ring0下)
在函数声明前一定要加上__declspec(naked),否则会系统崩溃。
void executeFunc();
执行你的函数.

解决方案 »

  1.   

    好东东,给我一个吧。
    [email protected]
      

  2.   

    以后想把许多较底层操作的程序封装成一个类,到时一起分享.
    我想大家也可以多做点这方面的工作啊,这样是不是很好呢:)
    现在这对函数功能很单一, 以后可以把类似功能的函数封成一个类.
    如游戏里常用的那个搜索内存的方法啊等等,that's great!
      

  3.   

    2000下可以吗!
    [email protected]
      

  4.   

    严重关注:
    [email protected]谢谢!
      

  5.   

    好人![email protected]
    谢谢!再谢谢:)
      

  6.   

    谢谢这位仁兄。我也要一份:[email protected]
      

  7.   

    [email protected]我也有兴趣,谢谢了
      

  8.   

    WIN2K下有新的方法,
    不过现在没时间啊, 过个二十天一定会去做的!
      

  9.   

    to jiangh_79_1() 
    过年的时候当礼物送给我们啊
      

  10.   

    [email protected]
    先谢了。
      

  11.   

    上传到这里吧,大家分享.
    ftp://202.195.246.202
    欢迎大家来交流安家!!!
      

  12.   

    我已经传到ftp://202.195.246.202了。
    大家要的话到那儿去下把。
      

  13.   

    //must have the declare of "__declspec(naked)"
    这个是什么意思啊给个DEMO的程序在这里好不好
      

  14.   

    俺转移动incoming目录下的jiangh_79_1目录下了
    欢迎大家来安家.
      

  15.   

    [email protected]
    Thank you.
      

  16.   

    真对不起,我是疏忽了,这样的函数不能传参数,还有忘了写个示例了。
    今天晚上我贴上去, 已经测试通过,并得到了cr0的值,还是放到
    ftp://202.195.246.202
    里,麻烦 binbin(BCB水王(不提倡大家向俺学习))再整理一下。我先放到pub下  
      

  17.   

    例子:我在一个对话框的工程中调用自己的函数getCR0()得到CR0的值.
    __declspec(naked) void getCR0()
    {
    //这里能不能放函数调用各位就自己试试吧,
    // 但如果要在这儿用一般语句的话
    //那么肯要先push所有用到的寄存器(一般我们不知道,所以最
    //好eax,ebx....都push),然后在iretd前反向pop.
    _asm
    {
    //1这个区域放自己的代码.注意,本函数用eax做返回值的寄存器.
    //如果对应的executeFunc中传入参数的话,参数依此放在eax,ecx中.
    mov eax,cr0
    //1
    iretd//自己的函数中一定要有这条,因为该函数是中断.
    }}void CBDlg::OnClear() 
    {
     
    initRing0Func(getCR0);
    DWORD cr0=executeFunc();
    //可以这样调用,executeFunc((DWORD)a,(DWORD)b),如果需要参数的话.
    //参数在getCR0()(也就是自己的函数)中放在eax,ecx中.
             char temp[20];
    sprintf(temp,"%x",cr0);
    AfxMessageBox(temp);
    this->Invalidate(1);
    }
      

  18.   

    例子:我在一个对话框的工程中调用自己的函数getCR0()得到CR0的值.
    __declspec(naked) void getCR0()
    {
    //这里能不能放函数调用各位就自己试试吧, 但如果要在这儿用一般语句的话
    //那么肯要先push所有用到的寄存器(一般我们不知道,所以最好eax,ebx....都push),
    //然后在iretd前反向pop.
    _asm
    {
    //1这个区域放自己的代码.注意,本函数用eax做返回值的寄存器.
    //如果对应的executeFunc中传入参数的话,参数依此放在eax,ecx中.
    mov eax,cr0
    //1
    iretd//自己的函数中一定要有这条,因为该函数是中断.
    }}void CBDlg::OnClear() 
    {
     
    initRing0Func(getCR0);
    DWORD cr0=executeFunc();
    //可以这样调用,executeFunc((DWORD)a,(DWORD)b),如果需要参数的话.
    //参数在getCR0()(也就是自己的函数)中放在eax,ecx中.
    char temp[20];
    sprintf(temp,"%x",cr0);
    AfxMessageBox(temp);
    this->Invalidate(1);
    }新的程序我传到ftp://202.195.246.202了,
    麻烦binbin(BCB水王(不提倡大家向俺学习))整理一下吧  
      

  19.   

    [email protected]
    thank you!
      

  20.   

    [email protected]
    Thank you!!
      

  21.   

    [email protected]
    一定要给我,否则.....嘿嘿
      

  22.   

    谢谢!太好了!我 也 要 一 份!再次谢谢!
    [email protected]
      

  23.   

    新的程序我传到ftp://202.195.246.202了,
      

  24.   

    我想了一个新的方法,
    可以让一般的函数就运行在ring0不要再要那么多注意的地方了,
    也就是自己的程序不作为中断例程了.大家谁知道在win98下调用中断门时各寄存器入栈的位置,如果知道麻烦email给我,我就不要再
    去查这方面资料啦.
      

  25.   

    我也要一份,好东西!
    [email protected]
      

  26.   

    楼主真强人啊,敬佩[email protected]
    谢谢,呵呵,我想我也会尽自己的力量的
      

  27.   

    先谢谢了!!
    [email protected]
      

  28.   

    [email protected]
    请问楼主打算在什么地方再改进?
      

  29.   

    急需,希望给发份[email protected]
      

  30.   

    呵呵,那我也要啊,[email protected]
      

  31.   

    win2K还没找到简便的漏洞,sorry
    还有,没想到在ring0下都不能执行改变ds的指令,想不通
      

  32.   

    多一点你这样的人就好了.发给我一份,谢谢[email protected]