日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PE文件结构(五岁以下儿童)基地搬迁

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PE文件结构(五岁以下儿童)基地搬迁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PE文件結構(五歲以下兒童)


參考

書:《加密與解密》

視頻:小甲魚 解密系列 視頻


基址重定位


??????? 鏈接器生成一個PE文件時,它會如果程序被裝入時使用的默認ImageBase基地址(VC默認exe基地址00400000h。dll基地址10000000h),而且會把代碼中全部指令中用到的地址都使用默認的基地址(比如 程序代碼中 push 10001000,就是把10000000h當做了基地址,把push 10001000寫入到文件里)。如果一個exe程序中一個dll裝載時的地址與其他dll地址發生沖突(由于windows程序是虛擬地址空間,exe一般不會有地址沖突,載入dll時可能會有地址沖突),就須要改動代碼中的地址,如push 10001000。call 10002000等。

這時就須要用進行基址重定位。而基址重定位表中存放了,假設默認地址被改。須要改動的代碼的地址。在PE文件里。基址重定位表一般放在一個單獨的 ".reloc" 區。能夠通過IMAGE_OPTIONAL_HEADER 中 的DataDirectory[5] 查看?基址重定位表 的RVA。


比如:


??????? 用W32Dasm 查看 Demo.dll? (下載地址:http://pan.baidu.com/s/1qWDepo4)


圖片1



??????? 能夠發現MyMessageBox 這個函數,看看它的代碼中的push 10006040 。 push 10006030 中的地址是指向字符串的。

假設一個程序在載入Demo.dll時由于Demo.dll 默認的地址被占用了。而使用其他的基地址,比如使用20000000h作為基地址,Demo.dll就從20000000h開始裝載。這樣字符串“Demo”和“Hello World!” 就不是在10006040h跟10006030h中了,這時就須要把push 10006040 。 push 10006030改成push 20006040 , push 20006030 。



??????? 基址重定位表是由一個一個IMAGE_BASE_RELOCATION結構? 構成的。


圖片2



IMAGE_BASE_RELOCATION 結構:


typedef struct _IMAGE_BASE_RELOCATION {DWORD VirtualAddress;DWORD SizeOfBlock; // WORD TypeOffset[]; } IMAGE_BASE_RELOCATION; typedef IMAGE_BASE_RELOCATION UNALIGNED * PIMAGE_BASE_RELOCATION;

??????? 當中 VirtualAddress? 表示 這一組地址的起始RVA。

SizeOfBlock表示當前這個IMAGE_BASE_RELOCATION 結構的大小。TypeOffset是一個數組,它的元素個數就是( SizeOfBlock - 8 ) / 2 ,TypeOffset 每個元素占用兩個字節即16位。當中高4位表示重定位類型(一般都為3)。低12位表示重定位地址。



實例分析:


??????? 查看Demo.dll的第一個 IMAGE_BASE_RELOCATION 結構


圖片3



能夠發現:

VirtualAddress? 為1000h

SizeOfBlock????? 為 0164h

TypeOffset[0]?? 0333h? 即 3是重定位類型? 33h為重定位地址
TypeOffset[1]?? 0338h

TypeOffset[2]?? 0340h

???? ........


通過Type低12位+VirtualAddress 能夠知道前三個的地址為1033h,1038h。1040h 。

再來看看圖片1中Demo.dll的代碼,能夠發現1033h就是圖片1中的push 10006040中的10006040,1038h就是push 10006030中的10006030 。


??? 假設載入dll,發現不是使用默認的基地址,PE載入器就會把基址重定位表中所寫的地址的值改掉。

改掉方法是把原先的值加上 實際基地址 - 默認基地址 的值。





版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

總結

以上是生活随笔為你收集整理的PE文件结构(五岁以下儿童)基地搬迁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲综合在线播放 | 色戒电影未测减除版 | 欧美性猛交ⅹ乱大交3 | 久久精品国产亚洲AV熟女 | 一区二区三区免费毛片 | 香蕉视频亚洲 | 波多野结衣在线 | 国产在线拍揄自揄拍 | 国产日韩av一区二区 | 亚洲自啪| 日韩亚洲欧美综合 | 日韩在线观看免费av | 久久久黄色片 | 午夜在线观看av | 亚洲精品中文字幕乱码三区 | 婷婷久久网 | 韩国三级bd高清中字2021 | 国产不卡在线视频 | 在线免费a视频 | 欧美黑人做爰爽爽爽 | 日本一级网站 | 欧美精产国品一二三区 | 九色蝌蚪91 | 成人做爰69片免费看 | 香蕉视频网址 | 中文字幕在线日韩 | 网站av| 影音先锋男人站 | 欧美激情三级 | 999av视频| 波多野结衣先锋影音 | 好吊妞视频在线 | 国产制服av | 日本欧美一区二区三区不卡视频 | 在线播放视频高清在线观看 | 91国内精品 | 亚洲国产欧美一区 | 国产成人自拍在线 | 日韩欧美在线观看一区 | 国产97视频| 一级不卡| 国产av无码国产av毛片 | 一区二区三区国产av | 黄在线免费观看 | 91avcom | 亚洲综合色在线观看 | 天天干天天操天天爱 | 日日操夜夜 | 国产精品毛片va一区二区三区 | 麻豆欧美| 午夜国产在线观看 | 成人图片小说 | 熟女毛片 | 成全世界免费高清观看 | 亚洲精品高清视频在线观看 | 精品亚洲一区二区三区四区五区高 | 久久精品黄色 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 国产不卡视频一区二区三区 | 久久久久久久久久久久久久免费看 | 钻石午夜影院 | 在线a级 | 日本乱轮视频 | 三级网站免费观看 | 欧美亚洲色综久久精品国产 | 黑人黄色片 | jzzijzzij亚洲成熟少妇18 欧美www在线观看 | 日本精品视频在线播放 | 欧美午夜精品久久久久久人妖 | 丰满岳妇伦在线播放 | 妺妺窝人体色www婷婷 | 色多多污| 国产日韩欧美电影 | 香蕉视频A | xxxxx在线观看| 国产探花精品一区二区 | 国产成人亚洲一区二区 | 99热影院| 熟妇大屁股一区二区三区视频 | 久久精品激情 | 国产亲伦免费视频播放 | 国产精品午夜福利视频234区 | 综合性色 | 韩国妻子的朋友 | 亚洲啊啊 | 国产人妖ts重口系列网站观看 | 国产一区二区毛片 | 国产精品12页 | 中文字幕久久精品 | 精品一区二区久久久久蜜桃 | 手机天堂av | 瑟瑟视频网站 | 欧美aaaaaa| 木下凛凛子av一区二区三区 | 豆花在线视频 | 亚洲 自拍 另类 欧美 丝袜 | 污视频网站免费在线观看 | 中文字幕永久在线播放 | 亚洲综合在线一区二区 |