社区
C++ 语言
帖子详情
将系统空间的模块复制到用户的进程空间执行的疑问
crossrowman
2009-06-24 03:39:34
有个想法,就是将系统空间的DLL 例如User32.DLL,直接从磁盘上读取到到用户的地址空间。
然后代码需要调用这些DLL中的API时 不去调用系统空间的地址,而是直接调用用户地址空间中的地址,为了能达到和正常调用API一样的效果,需要解决哪些问题?
那位高人指点下
...全文
117
8
打赏
收藏
将系统空间的模块复制到用户的进程空间执行的疑问
有个想法,就是将系统空间的DLL 例如User32.DLL,直接从磁盘上读取到到用户的地址空间。 然后代码需要调用这些DLL中的API时 不去调用系统空间的地址,而是直接调用用户地址空间中的地址,为了能达到和正常调用API一样的效果,需要解决哪些问题? 那位高人指点下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
机智的呆呆
2009-06-25
打赏
举报
回复
lz可以查下一个dll注入的相关问题,lz可以尝试将系统的dll注入自己程序的进程空间里。
lingyin55
2009-06-25
打赏
举报
回复
up下
crossrowman
2009-06-25
打赏
举报
回复
UP一下
没有答案也结贴
要分的帮顶下
lijiawlm
2009-06-25
打赏
举报
回复
帮顶咯~
crossrowman
2009-06-24
打赏
举报
回复
谢谢3楼的兄弟
搞不到看雪的邀请码 发不了帖子%※※×(
你有这方面的资料嘛?
iamyuguo
2009-06-24
打赏
举报
回复
lz是害怕API HOOK?
涉及到的主要就是PE结构的问题了,吧……
到看雪去看看吧,专门玩这种东西的:http://www.pediy.com/
lijiawlm
2009-06-24
打赏
举报
回复
你调用API本来就是在你的地址空间里面调用的
lijiawlm
2009-06-24
打赏
举报
回复
不知道有什么区别
系统在创建用户进程的时候就将这些关键的DLL都映射进用户地址空间了啊 ??
Linux
用户
空间
使用mmap的奥秘
mmap(memory map)即内存映射,用于将一个文件或设备映射到
进程
的地址
空间
,或者创建匿名的内存映射。请注意,虽然 mmap() 最初是为映射文件而设计的,但它实际上是一个通用映射工具。它可用于将任何适当的对象(例如内存、文件、设备等)映射到
进程
的地址
空间
。以文件映射到内存为例,实现这样的映射后,
进程
虚拟地址
空间
中一段内存地址将与文件磁盘地址一一对应,
进程
就可以采用指针的方式读写这段内存,
系统
会自动回写脏页到对应的磁盘文件。
操作
系统
-15-
进程
的创建
从这一节起,我们将详细讲解
进程
的一生。
进程
如人生,
进程
的一生同样包含三个阶段,创建,运行和终结,本节是
进程
三部曲的开篇:
进程
创建。 接下来,我们讲解关于
进程
创建的诸多问题。
进程
是由谁创建的?在什么情况下创建的? 幸好这个问题不像鸡生蛋蛋生鸡那样,这个问题的答案相对简单,
进程
的创建者有两种: 1.操作
系统
可以创建新的
进程
2.
进程
也可以创建新的
进程
其中,
进程
的创建者被称为父
进程
,创建出的
进程
被称为子
进程
。 1,操作
系统
创建
进程
:初始化 作为计算机的Boss,最初的
进程
是由操作
系统
创建的,操作
系统
在初始化的
【Linux】操作
系统
内存管理:地址
空间
、页表、写时拷贝与
进程
调度原理
本文
系统
阐述了操作
系统
内存管理核心机制。地址
空间
作为
进程
独立虚拟内存视图,通过struct结构体划分代码区、数据区等逻辑区域,配合页表实现虚拟到物理地址的映射。每个
进程
拥有独立地址
空间
,操作
系统
通过页表管理实现内存隔离与共享。地址
空间
使无序物理内存有序化,为
进程
提供统一视角,同时解耦
进程
管理与内存管理
模块
,支持延迟物理内存分配。页表机制配合写时拷贝技术,在fork时共享父
进程
内存,仅在实际写入时
复制
物理页,有效提升内存利用率。虚拟地址本质是地址
空间
内的逻辑地址,通过多级页表转换访问物理内存。
linux内存占用高但看不到
进程
_Linux
进程
虚拟内存
进程
虚拟内存虚拟地址
空间
各个
进程
的虚拟地址
空间
起始于 0,一直到 TASK_SIZE - 1,其上是内核地址
空间
。在 IA-32
系统
上地址
空间
的范围是 4GB,按照默认比例 3:1 来划分的话,内核分配 1GB,各个
用户
进程
可用的部分为 3GB。
用户
程序只能访问整个地址
空间
的下半部分,不能访问内核部分,同时
用户
进程
也不能操作另一个
进程
的地址
空间
(除非共享内存),因为后者的地址
空间
不可见。
进程
虚拟...
Linux如何将驱动文件编译成独立的
模块
或者编译到内核?
首先,说下如何编译成独立的
模块
需要使用如下命令接下来对该指令进行说明make modules 命令的
执行
路径只能是内核源码顶层目录,
执行
结果是:读取内核源码顶层目录中的 Makefile 文件,找到里面定义的 modules 目标。另外,上面说了,
执行
make modules时回到linux源码顶层目录的Makefile文件里去找modules目标,但是,我们一般不会直接去修改顶层的Makefile,要不然每次增加一个
模块
就改一次,那样的话,就太麻烦了。这就是将驱动源码编译成独立
模块
的方式。
C++ 语言
65,206
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章