Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/r12f/libpe
PE file parser
https://github.com/r12f/libpe
Last synced: 7 days ago
JSON representation
PE file parser
- Host: GitHub
- URL: https://github.com/r12f/libpe
- Owner: r12f
- License: bsd-2-clause
- Created: 2012-11-15T01:34:39.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2015-09-13T19:45:18.000Z (about 9 years ago)
- Last Synced: 2024-08-05T19:34:57.415Z (3 months ago)
- Language: C++
- Size: 11.9 MB
- Stars: 37
- Watchers: 7
- Forks: 29
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LibPE
LibPE is a simple parser for PE file format under [The BSD 2-Clause License](http://opensource.org/licenses/BSD-2-Clause).## Design principles (May be not achieved)
### Easy-To-Use
* 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.### Compatible with PE32(x86) and PE32+(x64)
* No doubt, it's a must-have ability.
* Get file info through IPEFile instead of IPEFile32 and IPEFile64, simplify your code.### Good performance
* Do not parse any content until you need it.
* Minimize the Disk IO.### Cross platform
* Support windows & linux.## Why / Why Not XXX?
* 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 templateWhen you need a new type of PE parser, define your own PETrait and change the LIBPE_FORCE_TEMPLATE_REDUCTION_XXX macro. And wala!
## Copyright
Copyright (c) 2012-2013, Jiang Jinzhou. See [LICENSE](https://github.com/r1f/libpe/blob/master/LICENSE) for details.