作者nilim (123)
看板ASM
标题[问题] 如何知道程式所使用记忆体位址的起迄范围?
时间Fri Jul 3 00:53:50 2009
本来目的是想试做一个类似游戏修改程式中搜寻修改记忆体的程式
不过对我来说还太早了点
所以想说先试试比较基本的功能,对特定的程式
只要给个资料就能搜寻出含有该资料的记忆体位址有哪些
对已知小范围的搜寻我已经了解
如果范围很大应该有比较有效率的演算法去搜寻吧?
(演算法的事以後再考虑好了
或是有大大可以先提供个方向
我再自己去找书来看看研究)
但不知随便指定的程式,要从哪开始搜寻?
假设有一个程式运行中
要如何得知该程式使用了哪段记忆体
以节位址:节内位址的方式表示
像是从 0012EF00 到 3B1252BA (随便举的例子)
还是只能得到绝对位址,要自己想办法解成分节位址?
能知道精确的范围吗?
还是只能得到大概的范围?
有个想法不知对不对,是不是用FindWindows找到的视窗的位址就是该程式的起始位置?
但我用FindWindows找特定视窗後
存在EAX里面都只有5位(例 : eax = a03df)
这是巧合吗?还是FindWindows只能记录绝对位址?
如果该程式没有视窗,是在背後运行,那有办法查吗?
目前看了2、3本有关组语的书,在这方面介绍都没很多
实在不知该从何着手
不知这类的知识有没有推荐的书可以查阅?
谢谢^ ^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.90.242
1F:推 hayden0828:往作业系统和计算机组织的部分找资料吧 07/03 04:25
2F:推 WolfLord:你MSDN上找 EnumProcessModules 来研究看看就知道了 07/03 04:40
3F:推 final01:你不该看组语的除非你在dos下 不然找win32的书吧 07/03 23:05
4F:→ nilim:本来以为是组语有关,弄错方向了,谢谢大大们的建议 07/04 01:43
5F:→ nilim:我再找书来研究研究>"< 07/04 01:44