永发信息网

一些汇编与VC++代码

答案:4  悬赏:20  手机版
解决时间 2021-04-25 12:03

void HookpIofCallDriver()
{
KIRQL oldIrql;
ULONG addr = (ULONG)IofCallDriver;
__asm
{
mov eax,addr

mov esi,[eax+2]
mov eax,[esi]
mov old_piofcalldriver,eax
}
oldIrql = KeRaiseIrqlToDpcLevel();
__asm
{
mov eax,cr0 //什么意思
mov oData,eax //oData 已有定义
and eax,0xffffffff //什么意思
mov cr0,eax
mov eax,addr
mov esi,[eax+2]
mov dword ptr [esi],offset NewpIofCallDriver //什么意思 要详细注释
mov eax,oData
mov cr0,eax
}
KeLowerIrql(oldIrql);
return ;
}

以上代码有表明注释的地方请加注释!

最佳答案

cr0是系统内的控制寄存器之一。控制寄存器是一些特殊的寄存器,它们可以控制CPU的一些重要特性。


控制寄存器最初出现于低级的286处理器中,以前称之为机器状态字(machine status word),在386以后它们被重命名为控制寄存器(control register)。cr0寄存器直到486的处理器版本才被加入了“写保护”(Write Protect,WP)位,WP位控制是否允许处理器向标记为只读属性的内存页写入数据,如果我们将WP位设置为0,就可以禁用写保护的功能。



mov eax,cr0 // 这行和下面一行的意思是 将cr0 的值保存下来,避免它受到下面操作的影响.
mov oData,eax //oData 已有定义
and eax,0xffffffff // 影响一些标志位, 但是看不出有什么实际目的.



...


mov eax,addr
mov esi,[eax+2]
mov dword ptr [esi],offset NewpIofCallDriver // 将NewpIofCallDriver 函数的地址放到 addr+2的地址


这段代码应该是用于Hook IofCallDriver 函数的, addr+2的地方放自己的函数地址, addr应该原函数的地址,


addr+0, addr+1 应该是 jmp 命令的汇编码. 这样当 IofCallDriver 被调用的时候就会跳到 NewpIofCallDriver 去.




全部回答

更改所有函数地址都不可改该地址的前一两个吗???

不是, hook函数时怎么更改还要看具体情况的. 有一些改函数地址的前8个字节, 有一些像你例子中的只改4个字节的函数地址(因为这里有个跳转表).

mov dword ptr [esi],offset NewpIofCallDriver

把变量NewpIofCallDriver 的偏移量放到由esi指向的双字地址中。

mov eax,cr0 //cr0应该是某全局变量

mov oData,eax //oData 这两行加起来相当于oData=cr0; and eax,0xffffffff //和全为1的数进行与运算对本身毫无影响,但是可以影响到状态寄存器的某些标志位。

.....

mov eax,addr mov esi,[eax+2] mov dword ptr [esi],offset NewpIofCallDriver

//这个NewpIofCallDriver应该是某函数吧,把它的入口地址赋值给一个"addr"变量(可能是一个结构)中偏移2的地方。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
江苏卫视节目表
手机QQ2010如何退出最小化?
太阳号能不能上传动态头像?
安徽阜阳本届初中英语教材是什么版本的?
中国石化西青侯台加油站我想知道这个在什么地
迈腾怎么换变速箱油,大众迈腾变速箱油需要更
现GBA、GAMEBOY、的价格是多少啊?
请问11月2日中央5转播NBA比赛吗?谁对谁的?
临川四梦是指?
和我说句话会死吗?
圈圈相册怎么用啊????
赞美好诗歌的词语,形容文笔很好的词语
哪些蔬菜炒炒比较好吃,味道可口,对身体有利
大话2召唤兽技能双管齐下有什么作用?
已知a,b互为相反数,c,d互为倒数,e是最大的负
推荐资讯
壁式空调怎么拆外壳,空调机的室内机和室外机
狮子和大象谁跑的快?
他不爱我了怎么办?
求一篇想像作文
多项式的计算
为什么我的QQ空间装扮里面没有植物这个选项?
放屁对人有什么作用
马云当年有多少资产开的阿里巴巴
谁给我一个烽火战国的激活码?
有没有NBA单机游戏下载地址?要1G以下无毒的能
我是山东省的想报安徽省的自考,报名可以网上
电脑上的文字怎么变大,电脑怎样复制刚输入的
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?