A Java library for static malware analysis of Portable Executable files with robust handling of malformations.
PortEx is a Java library for static malware analysis of Portable Executable (PE) files. It specializes in parsing PE structures, detecting anomalies, and extracting resources, with a strong emphasis on robustness against malformed files commonly encountered in malware.
Security researchers, malware analysts, and developers building Java-based tools for PE file analysis and reverse engineering.
It offers comprehensive PE parsing capabilities with a focus on malformation robustness, extensive anomaly detection, and visualization features not always available in other open-source PE analysis libraries.
Java library to analyse Portable Executable files with a special focus on malware analysis and PE malformation robustness
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Specifically engineered to handle corrupted or malformed PE files common in malware, ensuring reliable parsing where other libraries might fail, as highlighted in its focus on PE malformation robustness.
Extracts detailed information from all PE structures, including headers, imports, exports, resources, and .NET metadata, providing a thorough static analysis foundation for malware researchers.
Scans for structural anomalies, deprecated values, and format violations, which are key indicators of malware tampering, making it a robust tool for identifying suspicious files.
Offers visualizations of file structure, entropy, and byteplots with customizable colors and sizes, aiding in manual inspection and pattern recognition, as shown in the README example image.
Computes specialized hashes like ImpHash and Rich hashes, along with entropy metrics such as Shannon entropy and Chi-Squared, useful for file fingerprinting and malware classification.
The .NET metadata reading feature is marked as alpha in the README, meaning it may be incomplete, unstable, or subject to breaking changes, limiting reliability for .NET analysis.
As a Java and Scala library, it requires the JVM, which can introduce memory overhead and performance lag compared to native libraries, making it less ideal for resource-constrained environments.
The graphical user interface is not integrated into the core library and is available as a separate project (PortexAnalyzerGUI), requiring additional setup and dependency management for GUI-based use.
Building from source requires sbt and Scala knowledge, and dependency management is centered around Maven/SBT, which could be a barrier for developers using other build systems or unfamiliar with these tools.