PE文件與虛擬內(nèi)存之間的映射

-----根據(jù)自己的理解和《0day安全》總結(jié)下

??? pe(可執(zhí)行文件)常見(jiàn)的便是 .exe和 .dll文件

?? 可執(zhí)行文件中不光有機(jī)器代碼,還有可以幫助我們定位的字符串胸蛛,菜單羽嫡,圖標(biāo)這些。PE格式規(guī)定了所有的這些信息在文件中應(yīng)該如何組織。當(dāng)文件載入的時(shí)候各拷,操作系統(tǒng)會(huì)按照PE文件格式的規(guī)定去相應(yīng)的地方準(zhǔn)確定位各種類型的資源,并分別裝入內(nèi)存的不同區(qū)域襟锐。

?? PE文件格式

? pe文件有著我們常說(shuō)的數(shù)據(jù)節(jié)撤逢。

?.text 編譯器產(chǎn)生,存放著二進(jìn)制代碼粮坞,我們反編譯調(diào)試一般都是在這里蚊荣。

.data 初始化的數(shù)據(jù)塊,儲(chǔ)存著宏定義莫杈,全局變量互例,靜態(tài)變量這些。

.idata 可執(zhí)行文件的動(dòng)態(tài)鏈接庫(kù)

.rsrc 存放著程序的圖標(biāo)筝闹,菜單這些媳叨。可以改著玩关顷。

(ps:當(dāng)然這都是正常情況下糊秆,當(dāng)作者不想讓我們看到程序里面的內(nèi)容,便會(huì)加殼议双。這些東西并不會(huì)影響程序的執(zhí)行痘番,但會(huì)pe文件變得非常難受,給反編譯平痰,調(diào)試造成很大的難度汞舱。而且更有一些會(huì)把關(guān)鍵函數(shù)放到服務(wù)器上,用戶拿到的僅僅只是交互的東西宗雇。這樣破解難度會(huì)更大昂芜。)

虛擬內(nèi)存

?? windows上的內(nèi)存分為物理內(nèi)存,和虛擬內(nèi)存赔蒲。物理內(nèi)存這內(nèi)核級(jí)別的東西我就不了解了泌神,ring0層良漱,目前只知道使用icesoft進(jìn)行調(diào)試。這個(gè)調(diào)試器很霸道腻扇,使用的時(shí)候會(huì)獨(dú)占cpu债热,還能更改內(nèi)核的東西。我之前好奇用了一下幼苛,很開(kāi)心窒篱,電腦藍(lán)屏沒(méi)商量。

?? 虛擬內(nèi)存是我們用戶看到的級(jí)別舶沿,我們調(diào)試器看到的便是虛擬內(nèi)存墙杯。比如說(shuō)電腦的內(nèi)存是4GB,但可能內(nèi)存條只有512MB括荡。這用到的便是內(nèi)存管理器高镐,具體到怎么實(shí)現(xiàn)的,可以看看那些算法畸冲,聽(tīng)名字都頭疼嫉髓。

?? 但是我們讓每個(gè)進(jìn)程都相信自己有殼4GB的運(yùn)行空間,但應(yīng)該沒(méi)幾個(gè)進(jìn)程上來(lái)就用這么多邑闲。所以內(nèi)存管理器給的便是“虛擬地址”算行,進(jìn)程們都認(rèn)為這些地址是可以訪問(wèn)的。


? 《0day安全》有很形象的描述

? 如果我們把這看成銀行苫耸,那么就很好理解了州邢。

?---進(jìn)程相當(dāng)于儲(chǔ)戶

---內(nèi)存管理器相當(dāng)于銀行

---物理內(nèi)存相當(dāng)于鈔票

---虛擬內(nèi)存相當(dāng)于存款

?? 當(dāng)進(jìn)程不需要內(nèi)存的時(shí)候那些內(nèi)存可以分給其它進(jìn)程,相當(dāng)于存在銀行中褪子。銀行等著其它需要內(nèi)存的人來(lái)取走量淌。那些虛擬地址就相當(dāng)于鈔票上的編號(hào),我們只要去的現(xiàn)金就好嫌褪。并不會(huì)對(duì)上面的號(hào)碼有什么感想呀枢。我們實(shí)際物理地址遠(yuǎn)小于虛擬地址之和,相對(duì)的銀行也不會(huì)有那么多錢(qián)讓所有用戶來(lái)同時(shí)去笼痛。當(dāng)兩者往往都會(huì)正常運(yùn)行著硫狞。


PE文件與虛擬內(nèi)存的映射

?? 我們調(diào)試的時(shí)候會(huì)經(jīng)常說(shuō)到文件地址這些,對(duì)于我們來(lái)說(shuō)不存在可能這個(gè)說(shuō)法晃痴,只能準(zhǔn)確的找到位置才能到達(dá)控制,破解的目的财忽。

VA:虛擬內(nèi)存地址倘核,也就是我們ida看到的那些地址

既然物理和虛擬之間存在著映射,我們便需要在PE文件中找到文件地址即彪。

===文件偏移地址 File Offset

數(shù)據(jù)在PE文件中的地址叫文件偏移地址

===裝載基址 Image Base

? PE裝入內(nèi)存時(shí)的基地址紧唱,默認(rèn)情況下EXE內(nèi)存的基地址是0x00400000,DLL文件是0X10000000

===虛擬內(nèi)存地址 Virtual Address,VA

PE文件中的指令被裝入內(nèi)存后的地址

?===相對(duì)虛擬地址 Relative Virtual Address,RVA

虛擬內(nèi)存地址活尊,映射基址,相對(duì)虛擬內(nèi)存地址三者關(guān)系

VA=Image+RVA


?? 文件偏移是相對(duì)于文件從0字節(jié)開(kāi)始的偏移漏益,RVA是相對(duì)于裝載基址0x00400000處的偏移蛹锰。

? 注意:pe文件中的數(shù)據(jù)是按照磁盤(pán)標(biāo)準(zhǔn),以0x200(512)字節(jié)為基本單位绰疤。如果數(shù)據(jù)節(jié)不足則用00補(bǔ)全铜犬,內(nèi)存中則是按照0x1000(1024)為基本單位。

? 使用PE Editor轻庆,dependencly可以查看各個(gè)字節(jié)癣猾。根據(jù)公式,我們可以計(jì)算文件中的偏移位置余爆,在文件中直接進(jìn)行更改或者pwn纷宇。


?現(xiàn)在遇到了需要許多計(jì)算地址的ctf,先把這些基本的搞清楚蛾方。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末像捶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子桩砰,更是在濱河造成了極大的恐慌拓春,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件五芝,死亡現(xiàn)場(chǎng)離奇詭異痘儡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)枢步,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)沉删,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人醉途,你說(shuō)我怎么就攤上這事矾瑰。” “怎么了隘擎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵殴穴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我货葬,道長(zhǎng)采幌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任震桶,我火速辦了婚禮休傍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蹲姐。我一直安慰自己磨取,他們只是感情好人柿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著忙厌,像睡著了一般凫岖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逢净,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天哥放,我揣著相機(jī)與錄音,去河邊找鬼汹胃。 笑死婶芭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的着饥。 我是一名探鬼主播犀农,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宰掉!你這毒婦竟也來(lái)了呵哨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤轨奄,失蹤者是張志新(化名)和其女友劉穎孟害,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挪拟,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挨务,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玉组。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谎柄。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惯雳,靈堂內(nèi)的尸體忽然破棺而出朝巫,到底是詐尸還是另有隱情,我是刑警寧澤石景,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布劈猿,位于F島的核電站,受9級(jí)特大地震影響潮孽,放射性物質(zhì)發(fā)生泄漏揪荣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一往史、第九天 我趴在偏房一處隱蔽的房頂上張望变逃。 院中可真熱鬧,春花似錦怠堪、人聲如沸揽乱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)凰棉。三九已至,卻和暖如春陌粹,著一層夾襖步出監(jiān)牢的瞬間撒犀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工掏秩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留或舞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓蒙幻,卻偏偏與公主長(zhǎng)得像映凳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邮破,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容