-
-
请教一下Windows 2003下为什么不能打内存补丁?[求助](已解决)
-
发表于:
2006-11-6 22:15
6450
-
请教一下Windows 2003下为什么不能打内存补丁?[求助](已解决)
我是个初学者,前段时间,我学习了一个内存补丁的教程。对一个程序打补丁。
很简单,只有几句。
如:
在这句打补丁
....
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、运行程序,搞定。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)