关于直接访问物理内存

peiky 2001-05-06 09:22:00
在下最近想通过gdt和ldt 来访问物理内存

我通过替代INT3入口,在(naked)下对读取页表,去总是有问题
不止那位变过类似的程序,相烦指点一二(最好有一分原码),不慎感激
...全文
257 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
supperlxf 2001-05-09
  • 打赏
  • 举报
回复
陈淫豪啊,陈淫豪,我真佩服你啊,6年前的技术了。。。。
peiky 2001-05-09
  • 打赏
  • 举报
回复

__declspec(naked) void Ring0()
{
_asm
{
mov eax,ecx ;ecx 中存有虚拟地址(线性地址)
shr eax,22 ;eax 中得到页目录项的索引值
shl eax,2 ;eax 中得到页目录项的偏移值

mov ebx,cr3 ;ebx 得到页目录表的物理地址
add ebx,eax ;ebx 中得到页目录项的物理地址


mov ebx,DWORD PTR[ebx] ;ebx 中得到页目录项,(错误地点)
shr ebx,12
shl ebx,12 ;ebx 得到页表基地址


mov eax,ecx
shl eax,10
shr eax,22 ;eax 中得到页表项的偏移值
add ebx,eax
Test DWORD PTR [ebx], 1 ;该目录项是否存在于内存中
Jz end
mov ebx,DWORD PTR[ebx] ;ebx 得到页表项
shr ebx,12
shl ebx,12 ;ebx 中得到需页对应的物理页框地址
mov eax,ecx
shl eax,20
shr eax,20
add ebx,eax ;ebx 中得到虚拟地址对应的物理地址

mov edx,[ebx] ;得到其中的值

}

end:
_asm iretd
}
peiky 2001-05-09
  • 打赏
  • 举报
回复
在下这次把那段中断程序贴出来,希望大家研究
bhhjf 2001-05-07
  • 打赏
  • 举报
回复
可以直接更改GDT的值:#include "stdafx.h"
#include "stdio.h"
#include "wtypes.h"

DWORDLONG gdtr,savegdt;
WORD descriptor[4]={0xFFFF,0x0F00,0xF200,0x0040};
int result[10];
int main(int argc, char* argv[])
{
_asm
{
push ebp
sgdt gdtr;
mov ebp,dword ptr[gdtr+2]
add ebp,58h
lea edi,savegdt
mov esi,ebp
movsd
movsd
mov edi,ebp
lea esi,descriptor
movsd
movsd
push es
mov ax,005Bh
mov es,ax
lea edi,result
mov eax,1
mov ebx,1
}
_asm
{
mov cx,10
a1: mov es:[eax],eax
add eax,4
loop a1
}
_asm
{
mov cx,10
a2: mov eax,es:[ebx]
mov [edi],eax
add ebx,4
add edi,4
loop a2
}
_asm
{
pop es
pop ebp
}
printf("result=");
for(int i=0;i<10;i++)
printf("%d , ",result[i]);
return 0;
}
peiky 2001-05-07
  • 打赏
  • 举报
回复
多谢bhhjf,这个方法确能访问物理内存,不过,我想通过页表映射机构对物理内存直接进行读写,在特权0级,
chendd2001 2001-05-07
  • 打赏
  • 举报
回复
hao
wkp 2001-05-06
  • 打赏
  • 举报
回复
我没变过,解决后希望通小弟一声!EMAIL:wkp_790616@263.net
peiky 2001-05-06
  • 打赏
  • 举报
回复
这个问题比较拉手!!!!!!1!!

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧