trailofbits/pe-parse là dự án mã nguồn mở trên GitHub với 912 sao, viết chủ yếu bằng C++. Principled, lightweight C/C++ PE parser
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
pe-parse is a principled, lightweight parser for Windows portable executable files.
It was created to assist in compiled program analysis, potentially of programs of unknown origins.
This means that it should be resistant to malformed or maliciously crafted PE files, and it should
support questions that analysis software would ask of an executable program container.
For example, listing relocations, describing imports and exports, and supporting byte reads from
virtual addresses as well as file offsets.
pe-parse supports these use cases via a minimal API that provides methods for
Opening and closing a PE file
Iterating over the imported functions
Iterating over the relocations
Iterating over the exported functions
Iterating over sections
Iterating over resources
Reading bytes from specified virtual addresses
Retrieving the program entry point
The interface is defined in parser-library/parse.h.
The program in dump-pe/main.cpp is an example of using the parser-library API to dump
information about a PE file.
Internally, the parser-library uses a bounded buffer abstraction to access information stored in
the PE file. This should help in constructing a sane parser that allows for detection of the use
of bogus values in the PE that would result in out of bounds accesses of the input buffer.
Once data is read from the file it is sanitized and placed in C++ STL containers of internal types.
[!WARNING]
pe-parse's error handling is not thread safe. If you want to perform PE
writes/parses in multiple threads, you must independently synchronize
your operations.
Installation
pe-parse can be installed via vcpkg:
$ vcpkg install pe-parse
pe-parse includes Python bindings via pepy, which can be installed via pip:
$ pip3 install pepy
More information about pepy can be found in its README.
Dependencies
ICU
ICU is required on non-Windows platforms (Linux, macOS). You do not need ICU on Windows.
ICU library (International Components for Unicode)
Debian/Ubuntu: sudo apt-get install libicu-dev
RedHat/Fedora: sudo dnf install libicu-devel
macOS: brew install icu4c
vcpkg: vcpkg install icu
CMake
Debian/Ubuntu: sudo apt-get install cmake
RedHat/Fedora: sudo yum install cmake
OSX: brew install cmake
Windows: Download the installer from the CMake page
VS 2017, VS 2019, VS 2022, and VS 2026 are supported.
# Compile 64-bit binaries with Visual Studio 2017
cmake -G "Visual Studio 15 2017 Win64" ..
# Or, with VS 2019, use the -A flag for architecture
cmake -G "Visual Studio 16 2019" -A Win64 ..
# Or, with VS 2022
cmake -G "Visual Studio 17 2022" -A Win64 ..
# Or, with VS 2026
cmake -G "Visual Studio 18 2026" -A Win64 ..
# Pass the build type at build time
cmake --build . --config Release
MacOS-specific
When ICU is installed via brew it will not be in the usual library path, so you will need to set the ICU_ROOT environment variable to the location where ICU is installed when running cmake.
The path is usually /opt/homebrew/opt/icu4c@version, where version is the version number of ICU you have installed.
You can build the (catch2-based) tests by adding -DPEPARSE_ENABLE_TESTING=ON during CMake configuration. Build, and then run with ctest or cmake --build . --target test.
To run the full test suite with the Corkami test suite, you must clone the submodule with git submodule update --init.
Examples
You can build the included examples by adding -DPEPARSE_ENABLE_EXAMPLES=ON during CMake configuration.
Building with Sanitizers
If you are familiar with C++ sanitizers and any specific development environment requirements for them (compiler, instrumented standard library, etc.), you can choose to compile with any of the following sanitizers: Address, HWAddress, Undefined, Memory, MemoryWithOrigins, Leak, Address,Undefined.
For example, to compile with both Address and Undefined sanitizers, use the following (recommended for development and testing, and tested in CI):
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/trailofbits/pe-parse là nguồn chính thức.
trailofbits/pe-parse có bao nhiêu sao?
trailofbits/pe-parse có 912 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/trailofbits/pe-parse. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
trailofbits/pe-parse có phải mã nguồn mở không?
Có — trailofbits/pe-parse phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/trailofbits/pe-parse.
trailofbits/pe-parse còn đang phát triển không?
Commit gần nhất trên trailofbits/pe-parse là 2 tháng trước (theo timestamp GitHub). Repo có 170 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
trailofbits/pe-parse dùng license gì?
trailofbits/pe-parse phát hành theo license MIT. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
trailofbits/pe-parse là gì?
trailofbits/pe-parse (trailofbits/pe-parse) là dự án C++ trên GitHub. Theo mô tả gốc: Principled, lightweight C/C++ PE parser
trailofbits/pe-parse viết bằng ngôn ngữ gì?
trailofbits/pe-parse chủ yếu viết bằng C++. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về pe-parse?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về pe-parse.