首页
社区
课程
招聘
[求助]在写内存补丁时想到的一个问题。
发表于: 2005-1-22 11:53 3946

[求助]在写内存补丁时想到的一个问题。

2005-1-22 11:53
3946
目标进程:A
给A打内存补丁的程序:B

假如B要对A的大部分代码进行动态修改,即:进行写内存操作。这里要注意的是:有大量的代码需要写入进程A,并且A时刻在运行该部分代码!

如果在B还没有把所有的代码进入A之前,CPU就执行了A进程,那岂不是要乱套?!

是不是得先挂起目标进程或进行一些特殊的操作……

是我对操作系统的理解有误还是?请指教,谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
你可以在A中找到关键的跳转或者call
修改这一部分到你要修改的代码B
然后再跳回A执行
有点SMC的意思
即使程序在不断的运行A处代码
但是每次执行到关键跳转处都会跳到你修改的代码处执行
不用担心CPU执行A还是执行B的问题
你只要让一个C先于A执行修改A处关键跳转到B就可以
C只执行一次就可以了
希望对你有所帮助
2005-1-22 12:12
0
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
3
我明白你的意思:是先写那大部分代码然后再跳过去执行(只需要一个JMP指令)。

我的意思是:假设程序文件不能修改,只能以内存补丁的形式进行修改,而且没有任何空白区,你只能在原有的基础上进行修改。那样的话你就没有地方写你本要执行的代码了,所以:我担心在尚未写完我们的代码时,CPU就去执行目标程序了。这样的话就麻烦了……
2005-1-22 12:24
0
雪    币: 176
活跃值: (117)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
这样的话只能挂起程序了
2005-1-22 12:30
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
5
可以试试:

copy 程序A到另外一块内存,修改->写磁盘。
2005-1-22 12:45
0
游客
登录 | 注册 方可回帖
返回
//