當前位置:首頁 » 文件傳輸 » 程序運行時可以訪問內存地址嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

程序運行時可以訪問內存地址嗎

發布時間: 2022-07-03 22:21:55

Ⅰ x86的應用程序內存訪問時是編譯時固定一個地址還是運行時根據狀況再計算(我是指物理內存地址),謝謝。

編譯時給定的是相對地址,運行時根據內存的實際情況給定基址。[給定基址就是系統為正在運行的程序分配內存]
放棧上的變數啊,堆里的動態內存啊都是每次運行有可能放在不同的地方。
但是,一些運行環境數據(庫函數)是會實現載入到指定內存的(這個是放在指定內存的)

——————————————————————

還有不要把虛擬內存和上面的混淆了,MMU是實現虛擬地址————>物理地址的轉換
這個就算硬體不支持虛擬內存,程序數據每次運行都很可能放在不同的內存中

Ⅱ 如何查看正在運行的軟體的內存地址呢

IceSword是一斬斷黑手的利刃(所以取這土名,有點搞e,呵呵)。它適用於Windows 2000/XP/2003/Vista操作系統,用於查探系統中的幕後黑手(木馬後門)並作出處理,當然使用它需要用戶有一些操作系統的知識。

在對軟體做講解之前,首先說明第一注意事項 :
此程序運行時不要激活內核調試器(如softice),否則系統可能即刻崩潰。
另外使用前請保存好您的數據,以防萬一未知的Bug帶來損失。

IceSword目前只為使用32位的x86兼容CPU的系統設計,另外運行IceSword需要管理員許可權。

如果您使用過老版本,請一定注意,使用新版本前要重新啟動系統,不要交替使用二者。

IceSword內部功能是十分強大的。可能您也用過很多類似功能的軟體,比如一些進程工具、埠工具,但是現在的系統級後門功能越來越強,一般都可輕而易舉地隱藏進程、埠、注冊表、文件信息,一般的工具根本無法發現這些「幕後黑手」。IceSword使用大量新穎的內核技術,使得這些後門躲無所躲。

如何退出IceSword:
直接關閉,若你要防止進程被結束時,需要以命令行形式輸入:IceSword.exe /c,此時需要Ctrl+Alt+D才能關閉(使用三鍵前先按一下任意鍵)。

如果最小化到托盤時托盤圖標又消失了:此時可以使用Ctrl+Alt+S將IceSword主界面喚出。因為偷懶沒有重繪圖標,將就用吧^_^。

您無須為此軟體付費,但如果您使用時發現了什麼Bug,請mail to me:[email protected] ,十分感謝。

更新說明:
1.20:(1)恢復了插件功能,並提供一個文件注冊表的小插件,詳見FileReg.chm;(2)對核心部分作了些許改動,界面部分僅文件菜單有一點變化。
1.20(SubVer 111E3):添加對32位版本Vista(NtBuildNumber:6000)的支持。
1.22:(1)增加普通文件、ADS、注冊表、模塊的搜索功能;(2)隱藏簽名項;(3)添加模塊的HOOK掃描;(4)核心功能的加強。

更新時間:2007-08-27
作者說明:原本打算讓英文版積累點bug,過幾天出中文版的。沒想到近來折騰這、折騰那,出差剛回來沒幾天,又有一堆事往頭上砸,有沒搞錯。中途收到一些bug反映,但是基本都不是可重現的bug或根本不是bug。確認的一個bug是ADS轉儲只能存到已存在的文件中,很faint。因為目前不能在這上面花間,所以除了上面那個bug其它不作什麼修改了!
http://www.crsky.com/soft/6947.html

工程師戴 收集

Ⅲ 程序運行時的內存問題

以程序的具體執行過程為例來給你講解,但願你能理解:

1.程序被打開時,即程序開始運行時,會首先向操作系統請求獨占內存空間(一段在程序整個執行過程中都不釋放的空間),操作系統會應答請求並分配一段邏輯上連續(其實是將零散的內存空間映射為一段連續的空間)的內存空間給該程序,此時程序得到該段空間的邏輯地址信息,根據地址將程序代碼段和數據段裝入內存,此時程序載入完成。

2.程序運行中,當某一過程任務需要更大內存空間時,會再次向操作系統發出請求,操作系統會根據請求再次分配內存空間給該程序,當這一過程任務執行完畢後,該內存空間被釋放。同時由於操作系統的存儲保護,程序在運行過程中只能訪問自己所申請的內存空間,不能訪問其他程序的內存空間。

3.當程序執行完畢或關閉程序後,該程序所佔的所有內存空間都被釋放。

當你再次打開程序後,重復上面的過程。

下面對你的問題進行針對性回答:

1.當程序運行時,會調入內存,不同時間運行,程序放在內存的位置也可能不同:每運行一次程序,程序都會重新向操作系統申請內存空間,這時操作系統會分配一段全新的內存空間給程序,故不同時間運行程序,程序在內存中的位置是不同的。

2.使用內存中數據的位置也可能不同:當程序申請內存空間後,操作系統會將所申請的內存空間的地址傳給程序,盡管數據的位置不同,但程序知道數據的地址,故程序依然可以根據地址來找到所需要的數據。

Ⅳ 程序運行時內存地址的問題

地址分配是從大到小依次分配的,而不是說隨機分配的,就算是動態的,只要地址沒被其他程序佔用,地址就會相同了。

Ⅳ c++裡面怎麼樣根據內存地址訪問這個地址的值

int main() {
int *i = new int(5);
int *p;
printf("i = %p\n", i);
scanf("%x", &p);
printf("p=%d\n", *p);
return 1;
}
如果我寫 int *p = i; 你不放心的話,就自己用scanf輸入吧,這樣就放心了吧
你弄兩個程序分別運行這樣運行肯定不行,一個是進程結束後該進程的所有內存都被系統回收了,另外一個是每個不同的進程都擁有自己獨立的地址空間(虛擬地址空間),就好像(不考慮跨行取現業務的情況下)你拿著農行的卡到建行取錢建行不會給你錢,你跟建行說你卡號是什麼什麼建行會跟你說沒有這個賬號,道理是一樣的

c語言程序運行時 內存問題

以程序的具體執行過程為例來給你講解,但願你能理解:
1.程序被打開時,即程序開始運行時,會首先向操作系統請求獨占內存空間(一段在程序整個執行過程中都不釋放的空間),操作系統會應答請求並分配一段邏輯上連續(其實是將零散的內存空間映射為一段連續的空間)的內存空間給該程序,此時程序得到該段空間的邏輯地址信息,根據地址將程序代碼段和數據段裝入內存,此時程序載入完成。
2.程序運行中,當某一過程任務需要更大內存空間時,會再次向操作系統發出請求,操作系統會根據請求再次分配內存空間給該程序,當這一過程任務執行完畢後,該內存空間被釋放。同時由於操作系統的存儲保護,程序在運行過程中只能訪問自己所申請的內存空間,不能訪問其他程序的內存空間。
3.當程序執行完畢或關閉程序後,該程序所佔的所有內存空間都被釋放。
當你再次打開程序後,重復上面的過程。
下面對你的問題進行針對性回答:
1.當程序運行時,會調入內存,不同時間運行,程序放在內存的位置也可能不同:每運行一次程序,程序都會重新向操作系統申請內存空間,這時操作系統會分配一段全新的內存空間給程序,故不同時間運行程序,程序在內存中的位置是不同的。
2.使用內存中數據的位置也可能不同:當程序申請內存空間後,操作系統會將所申請的內存空間的地址傳給程序,盡管數據的位置不同,但程序知道數據的地址,故程序依然可以根據地址來找到所需要的數據。

Ⅶ C語言,這個程序在運行的過程中,為什麼說內存不能讀取

數組越界了
也就是說你在對數組的操作過程中,由於疏忽
導致了數組的下標超過了你定義的大小
比如你定義了int
a[5]
這個數組
可是你在寫代碼的時候不小心超過了這個5,比如出現了a[6]
這個時候當然不能訪問這段內存

Ⅷ 程序運行時裝入內存的地址是ip地址嗎

程序運行時,由於內存的管理方式是以頁為單位的,而且程序使用的地址都是虛擬地址,當程序要使用內存時,操作系統再把虛擬地址映射到真實的物理內存的地址上。和IP地址沒關系。

Ⅸ 1、CPU能直接訪問儲存在內存中的數據嗎 2、CPU能直接訪問儲存在外存中的數據嗎

CPU能直接訪問儲存在內存中的數據,不能直接訪問儲存在外存中的數據。

相關介紹:

計算機的內存可以分為隨機存取存儲器(RAM)和只讀儲存器(ROM)。兩者的區別在於,隨機存取存儲器能夠與CPU直接的進行數據的交換,也可以將其稱為主存。

對於RAM可以隨時的進行讀寫,而且這個過程的速度很快,因此由於主存所具有的這個優點也往往將其作為操作系統或其他正在運行中的程序的臨時數據存儲媒介。

(9)程序運行時可以訪問內存地址嗎擴展閱讀

中央處理器強大的數據處理功有效提升了計算機的工作效率,在數據加工操作時,並不僅僅只是一項簡單的操作,中央處理器的操作是建立在計算機使用人員下達的指令任務基礎上,在執行指令任務過程中,實現用戶輸入的控制指令與CPU的相對應。

隨著我國信息技術的快速發展,計算機在人們生活、工作 以及企業辦公自動化中得到廣泛應用,其作為一種主控設備,為促進電子商務網路的發展起著促進作用,使 CPU 控制性能的升級進程得到很大提高。指令控制、實際控制、操作控制等就是計算機 CPU 技術應用作用表現。