struppigel/PortEx

GitHub: struppigel/PortEx

一款专注于恶意软件分析和畸形 PE 容错的 Java 静态分析库

Stars: 530 | Forks: 91

# PortEx ## 欢迎使用 PortEx PortEx 是一个用于对 Portable Executable 文件进行静态恶意软件分析的 Java 库。其重点在于 PE 格式畸变的鲁棒性和异常检测。 PortEx 使用 Java 和 Scala 编写,面向 Java 应用程序。 ![可视化示例](http://i.imgur.com/7NBze4O.png) ## 功能特性 * 读取以下部分的头部信息:MSDOS Header、COFF File Header、Optional Header、Section Table * 读取 PE 结构:Imports、Resources、Exports、Debug Directory、Relocations、Delay Load Imports、Bound Imports * 转储 sections、resources、overlay、嵌入的 ZIP、JAR 或 .class 文件 * 扫描文件格式异常,包括结构性异常、已弃用、保留、错误或非默认值。 * 使用可变的颜色和大小可视化 PE 文件结构、局部熵和文件的字节图 * 计算文件和 sections 的香农熵和卡方 * 计算文件和 sections 的 ImpHash 以及 Rich 和 RichPV 哈希值 * 解析 RichHeader 并校验 checksum * 计算并校验 Optional Header checksum * 扫描 PEiD 签名、内部文件类型签名或您自己的签名数据库 * 扫描 Jar 到 EXE 包装器(例如 exe4j、jsmooth、jar2exe、launch4j) * 提取文件中包含的 Unicode 和 ASCII 字符串 * 从 resource section 中的图标提取并转换 .ICO 文件 * 从文件中提取版本信息和清单 * 读取 .NET 元数据和流(Alpha 版) 欲了解更多信息,请查看 [PortEx Wiki](https://github.com/struppigel/PortEx/wiki) 和 [文档](http://struppigel.github.io/PortEx/javadocs/) ## PortexAnalyzer CLI 和 GUI PortexAnalyzer CLI 是一个在后台运行 PortEx 库的命令行工具。 如果您正在寻找一个现成编译好的命令行 PE 扫描器来分析文件,可以在这里找到最新版本 [PortexAnalyzer.jar](https://github.com/struppigel/PortEx/raw/master/progs/PortexAnalyzer.jar) CLI 工具的长期发布版本位于 [发布页面](https://github.com/struppigel/PortEx/releases)。 GUI 版本可在此处获取:[PortexAnalyzerGUI](https://github.com/struppigel/PortexAnalyzerGUI) ## 使用 PortEx ### 将 PortEx 添加到 Maven 项目 您可以通过添加以下 Maven 依赖将 PortEx 包含到您的项目中: ``` io.github.struppigel portex_2.12 5.0.6 ``` 要使用本地构建版本,请按如下方式添加库: ``` io.github.struppigel portex_2.12 5.0.6 system $PORTEXDIR/target/scala-2.12/portex_2.12-5.0.6.jar ``` ### 将 PortEx 添加到 SBT 项目 在您的 build.sbt 中添加如下依赖 ``` libraryDependencies += "io.github.struppigel" % "portex_2.12" % "5.0.6" ``` ## 构建 PortEx ### 环境要求 PortEx 使用 [sbt](http://www.scala-sbt.org) 构建 ### 使用 sbt 编译和构建 要简单地编译项目,请调用: ``` $ sbt compile ``` 要创建 jar 包: ``` $ sbt package ``` 要编译一个可以用作命令行工具的 fat jar,请输入: ``` $ sbt assembly ``` ### 创建 Eclipse 项目 您可以使用 sbteclipse 插件创建一个 Eclipse 项目。 将以下行添加到 *project/plugins.sbt*: ``` addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0") ``` 为 Eclipse 生成项目文件: ``` $ sbt eclipse ``` 通过 *Import Wizard* 将项目导入 Eclipse。 ## 作者 Karsten Hahn Twitter/X: [@Struppigel](https://x.com/struppigel) Mastodon: [struppigel@infosec.exchange](https://infosec.exchange/@struppigel) Bluesky: [https://bsky.app/profile/struppigel.bsky.social](https://infosec.exchange/@struppigel) Youtube: [MalwareAnalysisForHedgehogs](https://www.youtube.com/c/MalwareAnalysisForHedgehogs) ## 许可证 [Apache License, Version 2.0](https://github.com/katjahahn/PortEx/blob/master/LICENSE)
标签:DAST, DNS 反向解析, ImpHash, Java库, JS文件枚举, .NET元数据, PEiD签名, PE文件解析, Scala, 云安全监控, 云资产清单, 可执行文件, 威胁情报, 安全扫描, 开发者工具, 异常检测, 恶意软件分析, 文件格式分析, 时序注入, 样本分析, 熵计算, 网络信息收集, 资源提取, 逆向工程, 静态分析