什么是代碼重定位,手機提示重定位是什么意思

本文目錄一覽

1,手機提示重定位是什么意思

重新再定位。

能查看地圖的裝置!gps

{0}

創(chuàng)新互聯(lián)建站服務(wù)項目包括睢縣網(wǎng)站建設(shè)、睢縣網(wǎng)站制作、睢縣網(wǎng)頁制作以及睢縣網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,睢縣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到睢縣省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

2,UG中的重定位是什么意思呢一般有什么應(yīng)用

我是這么認為的!重定位很簡單:就是對你選中的對象進行重新編輯空間位置,這里面有好多種選項可以進行編輯定位,具體是根據(jù)你的需要選擇吧。
另外注意一點:重定位是改變了零件在絕對坐標下的位置.

{1}

3,匯編在鏈接階段符號地址與地址重定位怎么理解

符號地址是編寫程序時使用的地址替代符號,編譯器會把他翻譯成虛擬地址,而虛擬地址通過操作系統(tǒng)映射得到實際地址的操作就叫地址重定位。這兩個概念都是在操作系統(tǒng)的基礎(chǔ)上建立的。在實地址匯編程序中,地址就是地址,是真實指向RAM或者ROM里的一個存儲空間的地址總線數(shù)據(jù)。而操作系統(tǒng)為了實現(xiàn)多程序并行,而且還要運行操作系統(tǒng)本身的程序,就必須為程序重新設(shè)置地址,不然兩個實地址程序同是讀寫一個存儲器就會出問題,這時候就需要對程序裝入,為他提供一個虛擬的地址空間,這個地址空間的地址通過操作系統(tǒng)的映射規(guī)則映射到實際存儲器,這個就叫做地址重定位。而人類編寫程序的時候,如果考慮映射表就太難了,按照工程學(xué)的想法,造車前先造輪子,操作系統(tǒng)提供的地址重裝人就像輪子,而程序員只需要在能理解的實地址范圍內(nèi)編程就行了,這時候程序員寫的就是符號地址。

符號地址是浮動的、相對的;在鏈接時,抵制分配沖突或重復(fù)時,需要重新定位。

說來話長。也不知道樓主是什么水平,故此,也不知道該從何講起。下次提問,不要這么簡略。說說題目的背景,比如,你所用的,這是什么匯編哪 ?

你好!譬如有兩個函數(shù)function1,function2單元,其都用到公共外部變量val,function1內(nèi)部定義了靜態(tài)變量sta,加入兩個函數(shù)都是獨立的編譯單元,分別生成的對象文件為function1.obj,function2.obj,在obj文件中,val作為外部符號,需要在主程序obj或function1.obj,function2.obj等其中之一聲明。在一個獨立的obj中也分數(shù)據(jù)段,代碼段,這些段都只有偏移地址,當(dāng)連接時,不同obj中相同的功能模塊匯編組合在一起,即外部變量val地址會被重新定位(相對于新的數(shù)據(jù)段基地址,而不再是其所在的obj模塊的數(shù)據(jù)段基地址)val作為標識符號,其都有相對于段基址的偏移地址,在鏈接階段模塊整合時需要重新定位。就如小明在自己班上成績排名是第一,但當(dāng)把整個年級的各個班組合起來考慮時,其排名就未必是第一(可以是第一),阿門。。。如有疑問,請追問。

{2}

4,什么是病毒的重定位

病毒的生存空間就是宿主程序,而因為宿主程序的不同。所以病毒每次插入到宿主程序中的位置也不同。那么病毒需要用到的變量的位置就無法確定。所以這就是病毒首先要重定位的原因。在我們編寫程序的時候,所用到的變量的位置都是相對與程序某一個位置的偏移,正常的程序加載的地址是唯一的,所以它們不需要重定位。而病毒的加載是隨機的所以就有了重定位的過程。雖然加載的位置不一定,但是變量到某一個位置的偏移卻是固定的。所以重定位的基本原理就是找到這個特殊的位置。具體的方法有很多種。這里說幾種常見的。
一、重定位的原因 都說病毒第一步要重定位,那到底為什么要重定位呢?我們寫正常程序的時候根本不用去關(guān)心變量(常量)的位置,因為源程序在編譯的時候它的內(nèi)存中的位置郡被計算好了。程序裝入內(nèi)存時,系統(tǒng)不會為它重定位。我們需要用到變量(常量)的時候直接用變量名訪問它就行了。病毒不可避免也要用到變量(常量),當(dāng)病毒感染HOST程序后,由于其依附到HOST程序中的位置各有不同,病毒隨著HOST載入內(nèi)存后病毒中的各個變量(常量)在內(nèi)存中的位置自然也不相同。既然這些變量沒有固定的地址,病毒在運行的過程中應(yīng)該如何引用這些變量呢?所以,病毒只有自己幫助自己重定位,這樣就可以正常地訪問自己的相關(guān)資源了。
二、如何重定位 大家都知道CALL是一條函數(shù)調(diào)用指令,也可以當(dāng)成是跳轉(zhuǎn)指令。它可以跳到目的地址繼續(xù)執(zhí)行,執(zhí)行完畢后,會返回到主程序繼續(xù)執(zhí)行。那系統(tǒng)如何知道返回地址的呢?當(dāng)CALL執(zhí)行時,CPU首先把要返回的地址(即下一條指令的地址)壓火堆棧,然后跳到我們目的地址執(zhí)行??梢钥闯觯谔D(zhuǎn)之后只要執(zhí)行一條POP指令或MOVEXX,[ESP]就可以得到下一條指令在內(nèi)存中的實際位置了。其實,對于任何一個變量,我們都可以采用這種方式進行重定位。好了,原理都講完了,現(xiàn)在讓我們總結(jié)一下重定位的基本步驟(這里假設(shè)下一條指令為I1):
(1)用CALL指令跳轉(zhuǎn)到下一條指令,使I1在內(nèi)存中的實際地址進棧。
(2)用POP或MOV EXX,[ESP]取出棧頂?shù)膬?nèi)容,這樣就得到了I1的地址(BaSe)。
(3)其他指令(變量、常量)的實際地址就等于Base+(0ffSetLabe1-OffSet vstart)。
三、實例說明 現(xiàn)在,就讓我們看一下重定位的具體代碼。這里VStart這個標號的位置就是I1的位置了。下面看看代碼是怎么實現(xiàn)的:Ca1lVStart跳到vStart,然后pop ebX把堆棧頂端的內(nèi)容(即VStart在內(nèi)存中的地址)放到ebx。這樣。以后用到其他變量的時候就可以用ebX+(OffSet XXX-OffSet VStart)得到其在內(nèi)存中的真正偏移地址了。call vstart vstart: pop ebx ;定義為I1指定 下面再具體一點。譬如我們想取變量abc的內(nèi)容時,則可先取地址到esi中,然后使用 "mov eax,[esi]"指令即可得到abC的內(nèi)容。abc dd 0 ... call vstart vstart:pop ebx ... lea esi,[ebx+(abc-vstart}] 上面我們提到偏移地址可以通過ebx+(Offset XXX-OffSet VStart)計算得到。我們通常也可以看到如下重定位方式: abc dd.0 ... call vstart vstart: pop ebx sub ebx,offset vstart ... mov eax,[ebx+abc] 其實這和上面那種方法最終結(jié)果是一樣的,只不過是換了一種形式,即(ebX-0ffSetVStart)+OffSet XXX。另外,在實際過程中還會碰到其他重定位方式,并且需要重定位的絕對不僅局限于變量和常量,不過所有原理都是一樣的。

5,什么是SRNS重定位

SRNS 重定位: SRNS 重定位是UMTS 功能,它用于從一個RNS 到另一個RNS 的重定位服務(wù)RNS

病毒的生存空間就是宿主程序,而因為宿主程序的不同。所以病毒每次插入到宿主程序中的位置也不同。那么病毒需要用到的變量的位置就無法確定。所以這就是病毒首先要重定位的原因。在我們編寫程序的時候,所用到的變量的位置都是相對與程序某一個位置的偏移,正常的程序加載的地址是唯一的,所以它們不需要重定位。而病毒的加載是隨機的所以就有了重定位的過程。雖然加載的位置不一定,但是變量到某一個位置的偏移卻是固定的。所以重定位的基本原理就是找到這個特殊的位置。具體的方法有很多種。這里說幾種常見的。
一、重定位的原因 都說病毒第一步要重定位,那到底為什么要重定位呢?我們寫正常程序的時候根本不用去關(guān)心變量(常量)的位置,因為源程序在編譯的時候它的內(nèi)存中的位置郡被計算好了。程序裝入內(nèi)存時,系統(tǒng)不會為它重定位。我們需要用到變量(常量)的時候直接用變量名訪問它就行了。病毒不可避免也要用到變量(常量),當(dāng)病毒感染host程序后,由于其依附到host程序中的位置各有不同,病毒隨著host載入內(nèi)存后病毒中的各個變量(常量)在內(nèi)存中的位置自然也不相同。既然這些變量沒有固定的地址,病毒在運行的過程中應(yīng)該如何引用這些變量呢?所以,病毒只有自己幫助自己重定位,這樣就可以正常地訪問自己的相關(guān)資源了。
二、如何重定位 大家都知道call是一條函數(shù)調(diào)用指令,也可以當(dāng)成是跳轉(zhuǎn)指令。它可以跳到目的地址繼續(xù)執(zhí)行,執(zhí)行完畢后,會返回到主程序繼續(xù)執(zhí)行。那系統(tǒng)如何知道返回地址的呢?當(dāng)call執(zhí)行時,cpu首先把要返回的地址(即下一條指令的地址)壓火堆棧,然后跳到我們目的地址執(zhí)行。可以看出,在跳轉(zhuǎn)之后只要執(zhí)行一條pop指令或movexx,[esp]就可以得到下一條指令在內(nèi)存中的實際位置了。其實,對于任何一個變量,我們都可以采用這種方式進行重定位。好了,原理都講完了,現(xiàn)在讓我們總結(jié)一下重定位的基本步驟(這里假設(shè)下一條指令為i1):
(1)用call指令跳轉(zhuǎn)到下一條指令,使i1在內(nèi)存中的實際地址進棧。
(2)用pop或movexx,[esp]取出棧頂?shù)膬?nèi)容,這樣就得到了i1的地址(base)。
(3)其他指令(變量、常量)的實際地址就等于base+(0ffsetlabe1-offsetvstart)。
三、實例說明 現(xiàn)在,就讓我們看一下重定位的具體代碼。這里vstart這個標號的位置就是i1的位置了。下面看看代碼是怎么實現(xiàn)的:ca1lvstart跳到vstart,然后popebx把堆棧頂端的內(nèi)容(即vstart在內(nèi)存中的地址)放到ebx。這樣。以后用到其他變量的時候就可以用ebx+(offsetxxx-offsetvstart)得到其在內(nèi)存中的真正偏移地址了。callvstart vstart: popebx;定義為i1指定 下面再具體一點。譬如我們想取變量abc的內(nèi)容時,則可先取地址到esi中,然后使用"moveax,[esi]"指令即可得到abc的內(nèi)容。abcdd0 ... callvstart vstart:popebx ... leaesi,[ebx+(abc-vstart}] 上面我們提到偏移地址可以通過ebx+(offsetxxx-offsetvstart)計算得到。我們通常也可以看到如下重定位方式: abcdd.0 ... callvstart vstart: popebx subebx,offsetvstart ... moveax,[ebx+abc] 其實這和上面那種方法最終結(jié)果是一樣的,只不過是換了一種形式,即(ebx-0ffsetvstart)+offsetxxx。另外,在實際過程中還會碰到其他重定位方式,并且需要重定位的絕對不僅局限于變量和常量,不過所有原理都是一樣的。

文章名稱:什么是代碼重定位,手機提示重定位是什么意思
轉(zhuǎn)載源于:http://muchs.cn/article6/epoiig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、網(wǎng)站營銷、靜態(tài)網(wǎng)站微信小程序、做網(wǎng)站、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)