- 主题:小白一问:随意指定地址的指针的行为
以前的书本里讲指针,会一本正经地举例
int *p = (int*)0x12345678;
煞有介事地说,解引用便可获得随意地址上的内存信息。
但操作系统根本不给面子,直接 segmentation fault。
猜测这里面的原因很简单,不同进程的内存空间不能直接读写。
可为什么这样的例子会存在这么多年,
是操作系统后来改了内存机制?
--
修改:easior FROM 61.155.142.*
FROM 61.155.142.*
If you write kernel mode driver or embedded system program, you can surely do like this.
【 在 easior 的大作中提到: 】
: 以前的书本里讲指针,会一本正经地举例
: int *p = (int*)0x12345678;
: 煞有介事地说,解引用便可获得随意地址上的内存信息。
: ...................
--
FROM 114.250.96.*
可惜没这方面的经验,
也不知道怎么进入内核模式编程,
就知道一些系统调用。
系统调用可能有这样的能力,
但没有那样的指针写法。
【 在 yytree (yytree) 的大作中提到: 】
: If you write kernel mode driver or embedded system program, you can surely do like this.
--
FROM 61.155.142.*
【 在 easior 的大作中提到: 】
: 可惜没这方面的经验,
: 也不知道怎么进入内核模式编程,
: 就知道一些系统调用。
: ...................
那还是先不要关心这些功能了吧
先把计算机基础学好了再看
--
FROM 111.206.145.*
为了这个指针写法,没必要去学怎么写驱动吧
既然这是底层的东西,那就略过
【 在 leslin (我心有约) 的大作中提到: 】
: 那还是先不要关心这些功能了吧
: 先把计算机基础学好了再看
--
FROM 61.155.142.*
这是DOS时代的书吗?
【 在 easior (潜行) 的大作中提到: 】
: 以前的书本里讲指针,会一本正经地举例
: int *p = (int*)0x12345678;
: 煞有介事地说,解引用便可获得随意地址上的内存信息。
: ...................
--
FROM 103.219.185.*
玩过以前PC游戏的金手指么? 比如金山游侠修改器,就是能直接访问全局内存地址取跟踪其他进程的内存使用情况。应该是比较经典的技术
【 在 easior 的大作中提到: 】
: 可惜没这方面的经验,
: 也不知道怎么进入内核模式编程,
: 就知道一些系统调用。
: ...................
--
FROM 210.12.221.*
这个我倒是有印象,好多年前的事情了
现在该用啥作弊技术了
【 在 officercat (黑猫警长·奈叶要加油) 的大作中提到: 】
: 玩过以前PC游戏的金手指么? 比如金山游侠修改器,就是能直接访问全局内存地址取跟踪其他进程的内存使用情况。应该是比较经典的技术
--
修改:easior FROM 61.155.142.*
FROM 61.155.142.*
估计知识是从Dos时代沿袭过来的,
只不过现代操作系统都有内存保护模式了
【 在 tangyl (-v-) 的大作中提到: 】
: 这是DOS时代的书吗?
--
FROM 61.155.142.*
你需要了解现代通用处理器有虚拟存储系统,有一个成为内存管理单元(MMU)的部件处理内存访问。处理器执行一个内存访问指令的时候,MMU会把要访问的地址转为物理地址,这个机制使得操作系统可以让不同的进程可以访问不同的物理内存,而不同应用程序可以使用同样的虚拟地址。
【 在 easior (潜行) 的大作中提到: 】
: 以前的书本里讲指针,会一本正经地举例
: int *p = (int*)0x12345678;
: 煞有介事地说,解引用便可获得随意地址上的内存信息。
: ...................
--
FROM 103.90.178.*