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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows PE 第十三章 PE补丁技术

發(fā)布時(shí)間:2025/6/17 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows PE 第十三章 PE补丁技术 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PE補(bǔ)丁技術(shù)

? ? 這章很多東西之前都見過(guò),也單獨(dú)總結(jié)過(guò),比如動(dòng)態(tài)補(bǔ)丁里說(shuō)的遠(yuǎn)程代碼注入,還有hijack什么的。之前整理過(guò)的這里就不細(xì)說(shuō)了,大體說(shuō)下思路。這里總結(jié)一些之前沒總結(jié)過(guò)的東西。

? ? 資料中把補(bǔ)丁分為兩類,靜態(tài)補(bǔ)丁和動(dòng)態(tài)補(bǔ)丁。然后有總結(jié)了下補(bǔ)丁的基本要素:進(jìn)程通訊能力、良好的讀寫其他進(jìn)程地址能力、正確識(shí)別要補(bǔ)丁目標(biāo)進(jìn)程、在其他進(jìn)程地址空間執(zhí)行代碼的能力

進(jìn)程通信:

管道通信(有名管道和匿名管道)、郵件槽、剪切板、共享內(nèi)存、消息機(jī)制、socket等等具體細(xì)節(jié)概念請(qǐng)自行百度。

?

1)動(dòng)態(tài)補(bǔ)丁

讀寫進(jìn)程內(nèi)存:

OpenProcess()ReadProcessMemory()WriteProcessMemory()

也就是常用的代碼注入那一套:

OpenProcess()打開目標(biāo)進(jìn)程,獲取進(jìn)程操作句柄。

VirtualAllocEx()在目標(biāo)進(jìn)程分配內(nèi)存。

WriteProcessMemory()函數(shù)將遠(yuǎn)程代碼寫入。

CreateProcessMemory()在目標(biāo)進(jìn)程中創(chuàng)建遠(yuǎn)程縣城并執(zhí)行。

[遠(yuǎn)程線程注入記得所有引用都要拷貝進(jìn)去,注意重定位問(wèn)題,盡量不要使用全局變量,最好是直接在里面實(shí)現(xiàn)LoadLibraryGetProcAddress或者直接把dll?load到目標(biāo)進(jìn)程里。]

其實(shí)還有很多,比如EIP注入,消息注入什么的。之前我系統(tǒng)的總結(jié)過(guò),可以到我主頁(yè)上看下。

(2)整體替換PE文件:

?????比如通常的軟件升級(jí),或者Hijack或者是輸入法注入再或者LSP注入等,都是屬于這一類。

軟件升級(jí):

這個(gè)不解釋了,通常的軟件升級(jí)邏輯。下載升級(jí)包對(duì)應(yīng)替換文件。這里有個(gè)地方可以注意,可以只替換需要替換的東西,減少流量損失,這種也用于安裝上。先裝上基本模塊,然后后續(xù)的陸續(xù)更新,或者惰性更新。這樣用戶體驗(yàn)會(huì)相對(duì)好很多。

Hijack或者輸入法注入等:

這個(gè)很好理解,A想調(diào)用B.dll,我們分析下B.dll的導(dǎo)出函數(shù),然后自己實(shí)現(xiàn)一個(gè)假的B.dll,直接替換本來(lái)的dll,如果是想要繼續(xù)注入后在調(diào)用原來(lái)的功能,可以在假的B.dll里調(diào)用原來(lái)的dll來(lái)計(jì)算值。類似與hook?inlinehook。很簡(jiǎn)單,不多說(shuō)。

對(duì)了想起個(gè)事,做這類事情的時(shí)候注意一個(gè)問(wèn)題,就是Windows默認(rèn)的尋找dll的路徑順序,這個(gè)有的時(shí)候比較有用。

還有就是注意宿主進(jìn)程加載dll的時(shí)候是靜態(tài)還是動(dòng)態(tài)。靜態(tài)的話在運(yùn)行過(guò)程中有可能無(wú)法替換相應(yīng)dll。文件會(huì)被占用的。雖然有辦法強(qiáng)行基礎(chǔ)文件占用,之前我在驅(qū)動(dòng)里弄過(guò)這個(gè)再或者直接調(diào)用微軟的相關(guān)程序強(qiáng)行結(jié)束掉句柄,但是并不能達(dá)到我們的效果。動(dòng)態(tài)加載的可以隨時(shí)替換劫持dll.

?

(3)部分修改PE文件:

????直接修改PE相關(guān)機(jī)器碼,或者把自己的機(jī)器碼找個(gè)地方拷貝進(jìn)去,通過(guò)需改入口地址執(zhí)行我們的代碼,然后再跳轉(zhuǎn)回去原來(lái)的機(jī)器碼,這個(gè)姿勢(shì)之后的章節(jié)會(huì)細(xì)說(shuō)。再或者干脆就直接把自己代碼拷貝覆蓋到入口地址處,同時(shí)也還可以這樣,在入口處直接jmp到我們的代碼,干完活在jmp回來(lái)。


程序入口

IMAGE_OPTIONAL_HEADER32.AddressOfEntryPoint


OK接下來(lái)?來(lái)一波測(cè)試,編寫一個(gè)程序。代碼如下:


運(yùn)行則顯示:



看下入口地址:

?

注意上面的并不是main函數(shù)入口地址,是這個(gè):



Main函數(shù)也是被別人調(diào)起來(lái)的。通過(guò)IDA看下就知道了。OK下載我想的是直接把入口地址換成main2,注意,之前也不是main,main之前的一些函數(shù)。看下main2的地址:


相對(duì)RVA0x1000,OK直接改FOA0x120的地方就行:


改完之后:


????OK上面的這些就是測(cè)試著玩玩,也就是說(shuō)可以通過(guò)改變PE入口函數(shù)來(lái)修改相關(guān)邏輯。之后這個(gè)思路會(huì)用到。

后面還有一個(gè)內(nèi)嵌機(jī)器碼到記事本的程序,明天會(huì)用單獨(dú)整理。


總結(jié)

以上是生活随笔為你收集整理的Windows PE 第十三章 PE补丁技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。