最近整理了一对进入ring0的函数, 要执行特权命令就方便多了.
如果谁要就留个地址吧.
将.cpp .h两个文件都拷贝到目标目录中,
在包含.h文件后就可以调用.h中的函数了,
用法:
void initRing0Func(void (*));
用来初始化你要执行的函数(此函数执行在ring0下)
在函数声明前一定要加上__declspec(naked),否则会系统崩溃。
void executeFunc();
执行你的函数.
如果谁要就留个地址吧.
将.cpp .h两个文件都拷贝到目标目录中,
在包含.h文件后就可以调用.h中的函数了,
用法:
void initRing0Func(void (*));
用来初始化你要执行的函数(此函数执行在ring0下)
在函数声明前一定要加上__declspec(naked),否则会系统崩溃。
void executeFunc();
执行你的函数.
解决方案 »
- MFC创建一个新类映射消息的问题
- radio button(进来的都有分加)
- 使用CStdioFile写文件产生的问题!
- mht网页文件在自己的机器上显示正常,在别人的机器上图片无法显示,在线等!up有分。。
- 关于MFC的映射CMap
- 大家救我!怎么才能在按钮按下时发送一个命令,弹起时发送另外一个命令?着急死了!
- 想做一个程序找到电脑对应的IP
- 如何使用CListCtrl中的FindItem(LVFINDFO* pFindInfo,int nStart=-1)?
- 如何不修改IE activex安全性也能正确执行。
- 又一个极菜的问题,关于字符串的赋值
- CRecordset执行 select count(*) from UserInfo ?我该选哪个字段呢?
- 菜鸟问题:如何访问Com+远程组件???
[email protected]
我想大家也可以多做点这方面的工作啊,这样是不是很好呢:)
现在这对函数功能很单一, 以后可以把类似功能的函数封成一个类.
如游戏里常用的那个搜索内存的方法啊等等,that's great!
[email protected]
[email protected]谢谢!
谢谢!再谢谢:)
不过现在没时间啊, 过个二十天一定会去做的!
过年的时候当礼物送给我们啊
先谢了。
ftp://202.195.246.202
欢迎大家来交流安家!!!
大家要的话到那儿去下把。
这个是什么意思啊给个DEMO的程序在这里好不好
欢迎大家来安家.
Thank you.
今天晚上我贴上去, 已经测试通过,并得到了cr0的值,还是放到
ftp://202.195.246.202
里,麻烦 binbin(BCB水王(不提倡大家向俺学习))再整理一下。我先放到pub下
__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);
}
__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水王(不提倡大家向俺学习))整理一下吧
thank you!
Thank you!!
一定要给我,否则.....嘿嘿
[email protected]
可以让一般的函数就运行在ring0不要再要那么多注意的地方了,
也就是自己的程序不作为中断例程了.大家谁知道在win98下调用中断门时各寄存器入栈的位置,如果知道麻烦email给我,我就不要再
去查这方面资料啦.
[email protected]
谢谢,呵呵,我想我也会尽自己的力量的
[email protected]
请问楼主打算在什么地方再改进?
还有,没想到在ring0下都不能执行改变ds的指令,想不通