This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
creating working PE file with BFD
- From: peter matula <xmatul01 at stud dot fit dot vutbr dot cz>
- To: binutils at sourceware dot org
- Date: Fri, 23 Jul 2010 12:53:00 +0200
- Subject: creating working PE file with BFD
Hello, I have yet another PE related question.
I made program using BFD for transformation of ELF files to our internal
binary format (working name - COFF because it is text representation of
binary formats similar to COFF) and backwards. It works fine and
executable file created by conversion ELF->COFF->ELF is all right.
Now I would like to transform other binary formats, starting PE. I was
very pleased when I found pei-i386 in BFD target list. So I made little
change in coff2elf module like this:
--- m_pBfd = bfd_openw(m_sElfOutputFile.c_str(), "elf32-i386");
+++ m_pBfd = bfd_openw(m_sElfOutputFile.c_str(), "pei-i386");
and left everything other untouched. I transformed PE->COFF->PE and try
to run output file. It didn't work but at least it created PE file not
so different from original. Analysis shows that biggest differences are
in "NT additional fields" and output PE has problem to get to Import
Table in .idata section (objdump -p hello.exe).
Here are outputs by AnywherePEViewer:
http://www.2shared.com/file/abisocMJ/pe_view.html
So my questions are:
Is BFD able to create valid PE file in general ?
Has someone experience doing something similar, any advices ?
What other changes are nessesary except changing target ? and how is
creating PE by BFD different from creating ELF ?
Do you know about some materials that can help ?
I would be really glad if it would be possible to use already programmed
elf2coff and coff2elf modules with some changes instead of programing
separate programs using pelib or something else.
Peter Matula