作者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