LibPE is a simple parser for PE file format under The BSD 2-Clause License.
- Get every part of PE file directly instead of RVA or FOA or even raw data structures.
- Using reference count to manage object's life circle.
- Support compilation to lib and dll.
- No doubt, it's a must-have ability.
- Get file info through IPEFile instead of IPEFile32 and IPEFile64, simplify your code.
- Do not parse any content until you need it.
- Minimize the Disk IO.
- Support windows & linux.
-
Why using basic types on windows?
I presume most of the users are developing on Windows platform. So we should minimize the things you may learn.
-
Why using COM-like interface?
This is the problem I grapple with for most of the time. Althrough it makes LibPE harder to use, we still use it to avoid the use-after-free crashes and to solve the cross-dll problems. And we do not need QueryInterface due to the simple class hierarchy. And also we do not support COM in order to make LibPE easier to use.
-
Why no boost?
Boost is a very powerful tool. But you need checkout lots of code before you use LibPE. And of course, you should learn boost first before you see the code.
-
Why so many template
When you need a new type of PE parser, define your own PETrait and change the LIBPE_FORCE_TEMPLATE_REDUCTION_XXX macro. And wala!
Copyright (c) 2012-2013, Jiang Jinzhou. See LICENSE for details.