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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows PE导出表编程2(重组导出表函数地址)

發(fā)布時間:2025/6/17 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows PE导出表编程2(重组导出表函数地址) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? 本次要做的嘗試是通過修改導出表的函數(shù)地址,實現(xiàn)程序功能的更改,實現(xiàn)這個最大的限制就是堆棧平衡問題。

先寫一個DLLEXE為了測試。

DLL代碼如下:


這樣的話有兩個導出函數(shù)(我們假設是一個密碼驗證之后執(zhí)行的函數(shù)):


EXE測試代碼如下


也就是簡單模擬下DLL調(diào)用,默認情況下因為密碼錯誤,所以執(zhí)行結(jié)果是這樣:


然后開始一步一步分析處理問題:

1.確定需要替換函數(shù)堆棧平衡

首先IDA看下兩個導出函數(shù)的調(diào)用堆棧,也就是看下參數(shù)是否一樣,不然直接調(diào)換位置會導致函數(shù)調(diào)用之后堆棧不平衡:



可以確定,這兩個函數(shù)的調(diào)用堆棧相同,可以直接替換。


2.PE頭開始,一步一步找到導出函數(shù)地址數(shù)組(AddressOfFunctions


可以知道導出表的地址和大小,這個地址是RVA,根據(jù)這個RVA可以計算出來FOARVA-FOA之間的轉(zhuǎn)換我寫過總結(jié),還寫了個工具當時。需要的可以翻翻我上傳的東西。這里不細說直接計算:


這樣0xCF30的位置應該是存的導出表相關。找到這個位置:


黑色部分是對應的如下這個結(jié)構(gòu):


紅色框部分就是倒數(shù)第三個,導出函數(shù)地址RVA,繼續(xù)計算FOA


然后找到FOA?0xCF58處的一個DWORD數(shù)組,這個存的是導出函數(shù)地址,RVA


最后把這兩個地址進行交換就行了。然后運行測試exe,實現(xiàn)錯誤密碼登錄成功,當然這只是個演示程序,如果是實現(xiàn)功能的話,還可以直接OD加載進來,跑一下,在IF的地方把匯編代碼的比較函數(shù)改了就行了。這個在WindowsPE的第一節(jié)我就寫過操作流程,這里不細說了。


最后就是我寫完這些分析的時候發(fā)現(xiàn)有點SB了,咱們來看下這個:


其實可以直接根據(jù)那個提供的地址,得到下面的兩個地址,沒看錯的話,應該是一個是VA,一個是RVA,基址是10000000。稍等我去查下:


woc基址還真是這個。這樣的話直接全局搜索這個地址然后替換就行了啊。額...不過沒事。畢竟是為了學習嗎。無所謂了。為了方便一些不太了解導出表的小伙伴,我最后在傳一個導出表的結(jié)構(gòu)吧。如果看不懂了可以看下這個結(jié)構(gòu)理解下:


?

總結(jié)

以上是生活随笔為你收集整理的Windows PE导出表编程2(重组导出表函数地址)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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