如何判斷記憶體內的值是變數? |
答題得分者是:dllee
|
xformer2
一般會員 發表:2 回覆:2 積分:0 註冊:2007-08-11 發送簡訊給我 |
我標題下的不好 但是不太容易在一行內說明清楚 有一Labview寫的控制軟體 讀取壓力值然後顯示出來 我想用Borland C Builder寫程式 抓它記憶體(想抓那個壓力值) (在此只是以Labview為例 希望有方法也能夠適用於應用程式) 在我的觀念中 視窗應用程式執行時 每個元件的屬性 都會存在於記憶體中 譬如一個 Edit元件的字串 "123" 在記憶體某個地方存其ascii碼 譬如一個自設變數int a=3; 在記憶體某個地方存成3 那麼Labview顯示數值的元件 在記憶體裡某個地方儲存著這個值 有上網搜尋到 讀取記憶體的api 但不知道記憶體哪裡才是紀錄我要找的那個變數 也不知道要取用幾個byte 希望能夠提供一些關鍵字或意見 謝謝 |
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
如果是用 LabView 它應該有輸出的元件,把值輸出到檔案或REG,再由自己的程式去讀。
如果要查別人程式內的資料,如果是視窗屬性的資料,可參考:列出所有視窗及視窗內所有子視窗資料 如果不是,說真的,不太容易,有時可以說不太可能。 如果資料沒有特別處理,使用 GameMaster/GameBuster/遊戲剋星 之類的軟體去找到記憶體位址, 再使用讀取別人程式記憶體的 API (ReadProcessMemory) 去讀那個位址,即可得到資料。 如果資料有特別處理,使用遊戲剋星也找不到記憶體位址,都沒位址了更別說如何去讀了。
------
http://www.ViewMove.com |
xformer2
一般會員 發表:2 回覆:2 積分:0 註冊:2007-08-11 發送簡訊給我 |
謝謝你提供的資料,我研究看看
P.S. Labview功能蠻強的,可以提供dll 和 activeX 等供其他程式利用,將其內部數值傳出 不是問題 只是平常沒有用到Labview 所以不打算特地學習 而且我遇到的情況是這樣: 該Labview程式是不會寫Labview 只會操作的公務員在使用 怕有問題 所以不會同意去改原始碼 但是有一個步驟需要反覆輸入數值的單調性工作 我覺得很麻煩 希望寫一個程式自動去輸入 也因此需要 Labview內部的數值作為判斷標準來決定 輸入時機 查過Labview程式的類別是 LVDchild 好像跟一般寫視窗軟體產生的不同 所以會想直接從記憶體下手 查過讀取寫入記憶體的相關資料及API ReadProcessMemory() 等等 不過你必須給它讀取幾個byte的參數 表示你自己要知道你要讀的是char int 或 float ...... 這也讓我好奇 GameMaster 如何知道哪些值屬於什麼類型 (譬如你要改黃金的量 原本是140 GameMaster會找出一堆140 的可能位址 但是它如何決定一次是取多少byte 140 有可能是以int 存 或 float 存) 再次謝謝你的回應 已經給我很大的方向 本問題再放個幾天 如果沒有其他人有建議 我就結案囉 |
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
GameMaster 在運作時,就是去 ReadProcessMemory(), 以輸入的資料去搜尋。
以 1Byte, 2Bytes, 4Bytes, 8Bytes 為單位都有,都去搜尋,因為最後滿足的應該 只有一個位址,而那個位址找到,自然您可以依照經驗去判斷它的資料長度, 例如智力可能只有 0-100 那用 1Byte 就好,就算遊戲真的是用 2Bytes 或更多Bytes 去存,反正有效的就只有那 1Byte 能定址到它, 改它就好了。 大部分遊戲的數值會使用整數去存,主要是運算速度考量,大部分 GameMaster 都是找整數而已,也許現在也有可以找浮點數的吧(好多年沒用了),或許也還沒有, 因為如果每個位址都要用浮點數去試試可能要試很久吧,因為亂數值以浮點去解釋 可能會 Exception。 當然,要寫一個 GameMaster 也不是那麼簡單,在搜尋的功夫上要作好,不然, 輸入個值等個半天,再輸入值又等半天,最後還說找不到!! 那還是把時間放在遊戲 本身上就好。
------
http://www.ViewMove.com |
xformer2
一般會員 發表:2 回覆:2 積分:0 註冊:2007-08-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |