※ 本文為 dinos.bbs. 轉寄自 ptt.cc 更新時間: 2012-12-14 14:30:23
看板 Soft_Job
作者 標題 Re: [請益] 記憶體管理
時間 Fri Dec 14 04:26:38 2012
※ 引述《jodo1984 (XDDD)》之銘言:
: ※ 引述《jodo1984 (XDDD)》之銘言:
: : 今天上級指示 要我想辦法弄出一支程式, 最好是VB6 (冏)
: : 可以讀取電腦目前所有正在的執行應用程式
: : 記憶體內容與位置
: : 他們是說有點像遊戲修改大師, 我覺得有點像是window裝置管理員
: : 請問有前輩有寫過這種嗎?
: : 可以指點一下嗎? 謝謝
: : C可以做到嗎?
: 這個專案因為某些因素停擺了一陣子,現在主管又想到要我繼續開始....
: 之前已經做到可以撈到應用程式內部的記憶體資料
: 但是面臨了一些問題,想問看看前輩們有沒有類似的經驗
: 1.我是透過WINAPI去撈應用程式的資料,但是如果應用程式關掉重開或者
: 電腦重開機原本的存放內部記憶體位址就會更動(這是在XP的情況下)
與XP/W7無關
: 2.在WIN7或WIN98我所撈到的記憶體位址都是暫存的位址,原本的位址的資料
: 隨時都會更動
: 我在想是不是我透過API抓的位址資料都是虛擬位址的,所以有沒有辦法
: 直接存取到實體記憶體,請問各位前輩有類似的經驗或想法可以指點我嗎?
在WINDOWS裡所有32BIT程式都是拿到OS分配的虛擬記憶體
一般由0x400000開始為程式主體,以下為堆棧,
最大到0x7FFFFF,0x800000就到R0了
記憶體位址會變,和變數本身層級、指標、編譯器有關
以上為個人粗淺的理解,可能有錯
-----------------------------------------------------------
你的問題和 實體/虛擬 完全無關
以一層偏移來說:表示法[[401000]+1C]
你必需先找到其基址(固定位置)如0x401000,
用ReadProcessMemory 讀出內容如:0x5B1000 <<每次都不一樣
再加上偏移0x1C = 5B101C
再由ReadProcessMemory 讀出 0x5B101C裡的內容,才是你要的
其由401000(固定位置,內容不定)稱為基址,0x1C為其偏移
實務上,你必需要先找到0x5B101C,再反向找到其基址和偏移
要如何反向找到基址,則需要有些許的ASM基礎和反組譯的經驗
和寫GAME外掛一樣,有幾個關鍵字給您參考(大陸用語)
OD 反組譯軟體,Cheat Engine 記憶體修改軟體,基址,偏移
--
████ █ ★ ████ █ █ █
█ █ █ █ █ █ 超 級 熱 烈 歡 迎
█ ████ █ █ █ ████ █
█ █ █ █ ███★ █ █ 歡迎到嘉義版!
★███ █ █ █ █ █ █ █
訊馳電腦-路徑 → 嘉義市林森西路496號 →(05)2244-526 → 順發斜對面
※ 編輯: chinoyan 來自: 59.127.140.29 (12/14 04:28)
推 :讚1F 12/14 12:45
--
※ 看板: dinos 文章推薦值: 0 目前人氣: 0 累積人氣: 190
作者 chinoyan 的最新發文:
- 20F 9推 1噓
- 98 如果RAM超過512 ,需要修改INI檔,不然會不穩 那年代沒有人在用FDISK了,台灣都用SPFDISK 單一分割上限好像是2TB,最多四個主分割 市場上這時早被NVIDIA給佔領了, VOO …50F 20推
- 首先,把時空到回到2017年, 想像一下自己是蔡英文(二年半後要選連任) 或是大阿哥/二阿哥(2020/2024要接班), 隨便~自己挑一個對號入座 然後,你坐在電視前(或坐在台下) 現在,閉上眼睛三 …100F 46推 8噓
- 看板 Gossiping作者 chinoyan ()標題 柱柱姐FB又寫錯了,岳飛銅像何時騎馬了時間 Mon Oct 5 04:03:57 2015 =================== …131F 98推 5噓
點此顯示更多發文記錄
瞎
guest
回列表(←)
分享