2012-10-25 42 views
1

我需要一種方法來編輯編譯的可執行文件的資源(準確地說是一個字符串表),我需要用C++來編寫它。如何使用C++編輯可執行文件中的資源?

任何人都可以提供任何指導/示例代碼,我可以怎麼做呢?

+0

嗯。如果你問我認爲你在問什麼,那麼它是不可能的。 –

+0

[資源黑客](http://angusj.com/resourcehacker/)...不知道它是否支持修改字符串表。 – Praetorian

+0

Resource Hacker完成這項工作,但我需要在我自己的應用程序中完成。 – Ryan

回答

2

開始LoadLibrary()那和加載一個可執行 然後FindResource()UpdateResource()必要的(你要編輯的一個)。

閱讀所有關於它在這裏:

PE format Resource Functions

0

我不知道這是否甚至可能,一旦你有一個編譯的可執行文件&它只是機器代碼,沒有一個真正的具體方法來理解如何解釋它(因此找到/編輯資源正在尋找)...即一旦你只有可執行文件,你不能肯定知道一個單詞是組裝中的指令還是隻是一個代表組件中的數字,標籤等的單詞...

據我所知。

+2

你在這裏告訴的是遠非現實。當然,編譯後的可執行文件(以及嵌入它們的資源)也有一個明確定義的格式,只要您知道結構就可以對其進行調查和操作。 –

+0

是的,你完全正確 - 只要你知道結構。但是,是否有可能只是採取任意可執行文件並正確解析它?我的印象是,解析任意可執行文件會非常困難,因爲它取決於編譯器/編譯器的使用方式/編譯的結構。 – innospark

+0

它需要大量的結構和解析,但這是一個絕對可以解決的問題。例如,[pev](https://github.com/merces/pev)是一個跨平臺的PE文件分析工具包,它解析幾乎所有的PE格式。儘管它不允許編輯,但對於具有高級C技能的任何人來說,這都是中途的任務(假設Windows API並不總是隨時可用,就像pev一樣)。 – jweyrich

1

如果您在Linux或OS X上,總是會有「strings」命令將打印出可執行文件中的所有靜態字符串。將它與「objdump」和一些十六進制編輯器的知識結合起來,你就可以將一些東西拼湊在一起。

+1

喲兄弟,他在談論PE = windows:P –

+0

最初的問題沒有指定操作系統,但不管怎麼說: - ) – codemaster91

0

你可以看看的馬特·皮特里克的PeDump歷久彌新的參考和源代碼。他確實處理(只讀)C++中PE文件的資源。也許它會激勵你解決你的問題...

+0

當我開始實施PeStudio時,我從Matt Pietrek學到了很多東西(http: //www.winitor.com) – mox

相關問題