2016-09-03 18 views
0

私は単純なパッカーをC++で作成するにはいくつかの問題があります。どのように、新しいセクションをC++のpeファイルに追加します

PIMAGE_SECTION_HEADER new_section; 
new_section->Characteristics = IMAGE_SCN_MEM_WRITE; 

が、それが初期化されずに使用されてnew_section私を与える:私は2015年のVisual Studioのコードの下に使用して新しいsection.iを初期化したいこれを行うには、PEファイルに新しいセクションを追加する必要が 私はこれを修正できますか?

と私はどのように私は初期化後にpeファイルにセクションを追加する必要があります知ってほしい、私はmemset関数を使用する必要がありますか? 助けてくれてありがとう。

+0

VSにエラーメッセージが表示された場合は、正確なメッセージを投稿できますか? – kebs

+1

new_sectionはどこで初期化しますか?どこに?それはおそらくコンパイラがそれについてあなたに警告する理由です... – hyde

+0

まあまあ私は正確なメッセージを言った – alex

答えて

1

PIMAGE_SECTION_HEADERポインタを初期化していません(構造体へのポインタです)。それは構造体であるので、あなたはあなたのデータはbufferに保存されていると仮定すると、それにデータを変換する必要があります。

PIMAGE_DOS_HEADER pidh = (PIMAGE_DOS_HEADER)buffer; 
PIMAGE_NT_HEADERS pinh = (PIMAGE_NT_HEADERS)((BYTE*)pidh + pidh->e_lfanew); 
PIMAGE_FILE_HEADER pifh = (PIMAGE_FILE_HEADER)&pinh->FileHeader; 
PIMAGE_OPTIONAL_HEADER pioh = (PIMAGE_OPTIONAL_HEADER)&pinh->OptionalHeader; 
PIMAGE_SECTION_HEADER new_section = (PIMAGE_SECTION_HEADER)((BYTE*)pinh + sizeof(IMAGE_NT_HEADERS)); 

この使用例はhereから取られています。

+0

私はあなたのコードを使用し、エラーが発生します: 'PIMAGE_SECTION_HEADER *'から 'PIMAGE_SECTION_HEADER'に変換できません – alex

+0

ライブラリに精通していないので、それはコンストラクタを持っていますか、あるいは単に新しいものではなく、 ? – hyde

+0

@alex固定 – Uriel

関連する問題