sqall01 / ZwoELF

An ELF parsing and manipulation library for Python
GNU General Public License v2.0
74 stars 26 forks source link

modify examples for use in big test suite; performance; ELFCLASS64 support #5

Closed johnLate closed 10 years ago

johnLate commented 10 years ago

I plan on running all 6 scripts in examples/ on a set of 967 32-bit ELF binaries for future commits.

I may release the test script itself, once it's cleaned up. For now I just use it to make sure I don't break stuff and to compare performance.

The changes in indirectJmpWithMemoryData.py are an attempt make code more concise. Performance improvement was only about 3%, but run time is dominated by some functions in ElfParserLib anyway.

johnLate commented 10 years ago

I think I have replaced most of the manual integer conversions now.

Current benchmark: c4f95dc: 615.39s user 22.88s system 97% cpu 10:54.40 total 51c58c6: 141.54s user 16.22s system 91% cpu 2:52.92 total fd020a3: 123.45s user 16.85s system 90% cpu 2:34.86 total

johnLate commented 10 years ago

Reason for e41c15b: Had a bug in generateElf (my private dev branch) that prevented me from testing something unreleated, even with ElfParser(..., force=True).

johnLate commented 10 years ago

Finally, ELFCLASS64 support.

My big testsuite with ELF32 binaries still runs without error. Running examples/readElf.py against 2900 ELF64 binaries from a recent arch linux install seems to work as well.

For binaries with RELA and r_addend != 0 try clang, pdftk, unrar, wvdial or xdvi_xaw.

Benchmark: 7c8cda8: 128.91s user 16.79s system 90% cpu 2:30.36 total

sqall01 commented 10 years ago

Great work! Thank you!