首页
社区
课程
招聘
请教一下Windows 2003下为什么不能打内存补丁?[求助](已解决)
发表于: 2006-11-6 22:15 6452

请教一下Windows 2003下为什么不能打内存补丁?[求助](已解决)

2006-11-6 22:15
6452
我是个初学者,前段时间,我学习了一个内存补丁的教程。对一个程序打补丁。
很简单,只有几句。

如:
在这句打补丁
....
00451000  mov [ecx+00000755],edx
00451006  push eax
....

我在内存找了一块空白的地方。
修改补丁如下:

把原来的语句改为:
00451000  jmp 003F0100
00451005  NOP

增加的语句为:
003F0100 mov [ecx+00000755],edx
003F0106 mov [003F0120],ecx
003F010C jmp 00451006

在windows2003下调试的时候,增加语句没问题,但是一修改原来的语句,马上程序就非法操作。我在内存中找了N个空白地方,情况都是一样的。

今天一气之下,重装了一个XP,一切就正常了。

本人不得其解,特此请教一下各位大虾,给俺解释下,万分感谢。

我今天在win2003下试的时候,出现了一句OD不能在[XXXX]写入。

是不是内存写保护了?这个如何解决?

解决方法:
找了N篇教程,想到既然不能直接修改内存,于是尝试直接修改原文件。
1、我用loadPE打开exe文件,把.text区段改为可以写入。(不知道是不是必须改,没有再尝试)
2、然后用PEid在.text区段找到一块空地,随便写了一个字符串如“TESTFILE”
3、运行程序,用WinHEX从载入内存,查找字符串,记住偏移地址。
4、WinHEX打开原文件,将上述语句的机器码直接写入,存盘。
5、运行程序,搞定。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没接触过2003,也学习一下
2006-11-6 23:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我在2000没碰到过这情况  只要是往数据段写应该没问题的
这个方面系统是不会搞鬼的
2006-11-7 08:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
已经解决。谢谢支持
2006-11-7 16:37
0
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
最初由 aptbird 发布
已经解决。谢谢支持


如何解决的?能否与大家分享一下,以后遇到类似问题也知原因了。
2006-11-7 16:39
0
游客
登录 | 注册 方可回帖
返回
//