
二进制文件分析与文件类型识别实战Detect-It-Easy 文件格式检测完整指南【免费下载链接】Detect-It-EasyProgram for determining types of files for Windows, Linux and MacOS.项目地址: https://gitcode.com/gh_mirrors/de/Detect-It-Easy今天有人往共享盘丢了一个文件后缀 .dll开头却是 MZ——拿它加载进系统先别急着上调试器。第一步该问的是它到底是什么、谁编译的、上没上壳。Detect-It-Easy下称 DiE干的就是这件事跨平台的文件类型识别与二进制文件分析工具把这个文件是什么拆成签名匹配和启发式分析两条线PE32/PE32 还能深入到节区、导入表、资源层。 DiE 和 file 命令到底差在哪DiE 定位是文件识别 静态检查主要用户群是恶意软件分析师、安全审计和逆向工程师。它和file命令的本质区别在于file基本靠 magic number 表给出一个猜测DiE 是格式解析器 可编程检测规则库的组合——每个格式PE、ELF、MACH、APK、DEX……有原生解析器规则用 DiE-JSJavaScript 方言写成脚本存在db/下能读结构、做有界搜索、跑多阶段状态机。仓库db/目录按格式分了 20 多个子目录签名覆盖从 Windows 可执行文件到 Amiga 老游戏资源。项目内容名称Detect-It-Easy (DiE)定位文件类型识别 二进制静态分析平台Windows / Linux / macOS版本仓库die_version.txt标记 4.0.0入口形态die全功能 GUI/diec命令行/diel轻量扫描 GUI 两条最短路径把 DiE 跑起来图形入口die打开全功能界面左侧树列出 DiE、Nauz File DetectorNFD、YARA、PEiD 几个独立分析引擎右侧是 Hex、Strings、Memory map、Entropy、Import Header 等面板适合交互式深看。命令行入口diec装好发行版后直接带文件路径即可Linux 发行包、Chocolatey、MS Store 或从源码构建docs/BUILD.md。批量处理和脚本化用diec最有价值下面这四个参数先记住diec -r 样本目录 # -r递归扫描整个目录 diec -U 可疑文件.exe # -U启用启发式扫描 diec -b 可疑文件.exe # -bverbose输出更完整的证据 diec -j 可疑文件.exe # -jJSON 输出方便脚本消费这段说明了什么一个参数一个开关-r管范围、-U管引擎、-j管对接自动化批量分诊基本不用再加别的。完整参数表直接敲diec -h看别背。 签名引擎和启发式引擎怎么分工DiE 的架构是原生核心 DiE-JS 分析层。原生核心负责格式解析向上暴露有界读取、地址翻译、搜索、反汇编等原语检测逻辑则全部写在 DiE-JS 脚本.sg文件里形态从一条字节模式到多阶段状态机不等。两层引擎的分工值得说清楚签名引擎回答像什么启发式引擎回答哪里不对劲。关键点是启发式不是签名的兜底——启用后它是一个独立的更高层分析引擎可以佐证、修正甚至替换签名层的结论。README 举的例子编译器签名说 C/C但结构和运行时证据指向 Rust启发式层会顶掉这个判断。所有启发式结论永远带(Heur)标记-bverbose 模式下进一步分成[HEUR/Any]、[HEUR/.NET]、[HEUR/EMU]三类哪条来自精确规则、哪条是推出来的报告里永远分得开。PE 侧的主力是 __GenericHeuristicAnalysis_By_DosX.7.sg另有 JavaScript 启发式、文件扩展名启发式、批处理脚本启发式 处理日常文件。 签名语法速查表签名是嵌在 JS 字符串里的小模式语言不是正则。help/Signatures.md 里的高频符号就这几类类别写法含义通配符??/../..../........任意 1 / 1 / 2 / 4 字节相对跳转$$/$$$$/$$$$$$$$1 / 2 / 4 字节跳转距离绝对地址####/########2 / 4 字节地址条件通配**!!__非空 / 非 ASCII / 两者都不是文本匹配PE0000单引号包 ASCII可与十六进制拼接比如SQLite format 300认数据库、7zBCAF271C认 7z 压缩包、PK0304认 ZIPFFD8FFE?里那个?就是通配任意 JPEG 应用标记。if (Binary.compare(4D5A) Binary.compare(PE0000, Binary.read_uint32(0x3C))) { sName PE executable; }这段说明了什么先比对文件头 2 字节 MZ再用偏移 0x3C 处的 32 位整数当偏移二次定位 PE 签名——说明签名不仅能按位置比字节还能把文件本身的内容当地址用。️ 加壳检测高熵不一定等于加密单看熵值判加壳基本没意义加密、压缩、正常的大块二进制都能跑出 7 的熵。DiE 的思路是把一堆弱信号拼成强结论help/PE.md 和启发式规则库里常见的维度包括节区特征.upx0/.upx1这类命名、异常大小、RWX 权限组合入口点行为EP 附近的rdtsc、pushal、自修改 stub、Call/Pop 取址来自有界反汇编的遍历不是沙箱导入表指纹导入极少甚至为空、按位置哈希解析 API——典型加壳器特征熵与结构联动最后一个节区高熵 声明大小与实际不符指向压缩存根。一次真实输出的样子README 示例(Heur) Packer: Generic [EntryPoint Pushal at EP Last section EP Imports like UPX (v0.59-0.93) Sections like fake UPX Section #0 () compressed High entropy]——每条证据都列在括号里你可以逐条复核也可以据此判定某条是误报。注意官方态度启发式结果是线索不是恶意证明DiE 也反复声明自己不是杀毒软件。 恶意软件分诊三条命令定优先级diec -r -U -b 样本根目录全量启发式扫一遍输出里每条(Heur)都是一个待验证线索按证据强度分优先级带具体家族名如 RAT、Stealer、ransomware 标记的排前Generic 打包类排后对进队列的样本看调试残留Embedded PDB、构建路径、签名状态和版本资源提取 IoC-j转 JSON 落盘进流水线哈希去重后再上动态环境。️ 供应链审计构建产物过一遍体检diec -r -j 构建产物目录批量扫JSON 直接喂给审计脚本核对声称的工具链与检测到的工具链编译器、链接器、运行时版本是否和 CI 配置一致查签名与身份一致性——启发式层会把版本资源、Authenticode 状态、Rich 构建记录关联起来冒名顶替在这里会露馅检查扩展名异常如.dll后缀却装着 EXE 镜像这类问题在签名分发的组件里并不罕见。 逆向前置分析先读结构再进调试器diec 目标文件先拿架构、子系统、节区布局三行结论10 秒内用die打开翻 Memory map、Hex、Import Header 面板确认入口点和可疑节区位置看 PDB 残留和编译器信息决定静态拆还是动态跑发现加壳/保护标记后先判断是商业保护、反调试还是真威胁再决定要不要动调试器。这一步省掉的是打开 IDA 发现入口是个 2KB 解包 stub的浪费。 自定义签名编写规范私有规则放db_custom/别动主库db/。最小规则骨架meta(compiler, Example Compiler); function detect() { if (PE.isSectionNamePresent(.lz-algo)) { bDetected true; sOptions LZMA; } return result(); }这段说明了什么meta()声明结果类别和名称detect()里条件命中后置bDetected true并填sVersion/sOptions等字段引擎替你组装结果——你只写判断不造轮子。写规则前读 help/Binary.md通用原语、help/Global.md全局函数和对应格式文档提交 PR 前看 CODE-FORMATTING.md。性能上有条硬规矩条件从左到右求值必须先用廉价的结构性检查节区数、入口点、头信息砍掉无关文件再做字节模式搜索且搜索范围限定到最小区域——CONTRIBUTING.md 明确说一上来就全文件扫的规则会被打回。⚡ 四级数据库怎么摆批量扫描怎么开库路径用途主库db/审核过的正式规则按格式分目录info.ini带更新日期扩展库db_extra/未通过审核的规则官方不推荐作为质量参考自定义库db_custom/你的私有规则精简库dbs_min/自动生成的产物dbs_min_generate.sh驱动禁止手改diec -D 路径可整体替换数据库-r递归扫目录-a扫所有类型-e附带熵值-i输出文件信息。批量任务在 shell 层并行即可DiE 本身单进程处理。⚖️ 横向对比DiE 站在哪维度filePEiDYARADiE平台覆盖Unix 系基本 Windows 场景全平台Windows/Linux/macOS引擎类型magic number 表静态签名可编程规则签名 启发式双引擎PE 分析深度浅中历史规则误报偏多取决于规则节区/导入/资源/调试记录多层解析可扩展性低规则库导入高高DiE-JS 脚本层开源程度开源规则库可移植开源开源一句话定位DiE 不追求给一个恶意分它给你的是可复核的证据链——谁构建的、镜像是原始的还是 dump 的、哪层保护能解释这个结构、下一步该看什么。每条(Heur)都带着出处这在给 SOC 出报告时比黑盒评分实用。 三条参与路径 一句话收尾签名贡献往db/提交规则PR 必须附可复现样本、预期输出、独立来源和误报素材CONTRIBUTING.md启发式改进完善__GenericHeuristicAnalysis_By_DosX.7.sg这类引擎的多维检查文档与翻译help/下的 API 文档随引擎演进翻译走 XTranslation 项目。Detect-It-Easy 的价值不在识别得多而在每条结论都拿得出来对质——从diec -r一条命令的初筛到自定义签名写进db_custom/的深度定制证据链始终完整。【免费下载链接】Detect-It-EasyProgram for determining types of files for Windows, Linux and MacOS.项目地址: https://gitcode.com/gh_mirrors/de/Detect-It-Easy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考