
Detect It Easy 零基础实战指南10 分钟快速识别程序加壳与编译器信息【免费下载链接】Detect-It-EasyProgram for determining types of files for Windows, Linux and MacOS.项目地址: https://gitcode.com/gh_mirrors/de/Detect-It-EasyDetect It Easy简称 DiE是一款跨平台的文件身份识别工具能在 Windows、Linux 和 macOS 上告诉你一个二进制文件由哪个编译器生成、是否被加壳工具处理过、以及采用了哪些保护机制。本文用实战跟练的方式带你在 10 分钟内从零上手走完安装 → 扫描 → 读懂结果 → 自定义规则的完整链路。 痛点开场一个连file命令都答不上来的问题同事丢来一个 3.7MB 的sample.exe问我这文件是谁编译的有没有加壳我下意识敲了系统自带的file命令file sample.exe # 输出 sample.exe: PE32 executable (GUI) Intel 80386, for MS Windows嗯确实知道它是 Windows 的 PE 可执行文件但仅此而已。编译器是 MSVC 还是 MinGW有没有被 UPX、ASPack 这类压缩壳处理过入口点代码长什么样file一概不答。再换strings去翻字符串几十万行输出里大海捞针还很容易被加壳后的乱码干扰。这就是静态分析新手最常见的困境光有识别出格式的结论拿不到识别出身份的细节。Detect It Easy 的出现就是为了把文件是谁这件事一次性说清楚。它把签名匹配与启发式分析结合起来签名匹配负责按已知特征精准锁定工具名与版本启发式分析则负责对没见过的新样本给出参考判断两者配合能大幅降低误报。接下来我们直接动手。⚡ 最快上手路径一条命令识别文件身份如果你已经装好了 DiE安装方式见后文四种安装方式一节最快验证它能力的方式就是执行下面这一条命令# diec 是命令行版本直接传入文件路径即可 diec ./sample.exe不需要任何配置不需要指定文件格式DiE 会自动判断这是 PE、ELF 还是 Mach-O再套用对应格式的检测逻辑。几秒之后你就能看到类似下面的输出PE32: Packer: ASPack(2.12-2.42)[-] Compiler: MinGW(-)[-] Linker: GNU linker ld (GNU Binutils)(2.28)[GUI32]file命令憋了半天说不出来的信息DiE 三行就交代完了打包器是 ASPack编译器是 MinGW链接器是 GNU Binutils 2.28。有了这些线索后续是脱壳、定位入口还是比对编译时间戳你都有了明确方向。 小提示diec还支持直接把整个目录作为参数配合-r参数递归扫描一条命令扫完一个文件夹里的所有文件。 实战跟练分析一个疑似加壳的 PE 程序光说不练假把式我们来完整走一遍真实分析流程。假设你在某个样本库目录下拿到一个可疑程序clear32.exe怀疑它被压缩壳处理过操作如下第 1 步单文件快速检测diec clear32.exe第 2 步做一次深度扫描让启发式引擎也参与进来diec -d -u clear32.exe第 3 步把结果导出成 JSON方便写脚本继续处理diec -j clear32.exe result.json下图是一次典型命令行分析的输出红框内就是最关键的三行结论加壳工具、编译器与链接器一应俱全。对照输出逐项解读字段含义对你的价值Packer: ASPack(2.12-2.42)检测到 ASPack 压缩壳提示你需要先脱壳再静态分析Compiler: MinGW由 MinGW 工具链编译帮助判断开发环境与可能的代码生成特征Linker: GNU linker ld使用 GNU 链接器与编译器结论互相印证减少误判这个案例里最关键的一点是程序被加壳后直接看字符串或导入表基本是废的真正的 API 调用被壳藏起来了而 DiE 通过特征匹配在入口点附近一眼认出了 ASPack。先识别壳、再决定脱壳方案这就是 DiE 在恶意软件分析中最常见的用法。 认识三驾马车die / diec / diel 分别怎么选DiE 一个项目下其实有三个可执行文件别搞混了die完整图形界面版。功能最全包含扫描、签名编辑、十六进制查看、反汇编、内存映射等全部面板适合交互式深挖。diec纯命令行版。专为批处理和自动化设计输出支持纯文本、JSON、XML、CSV是脚本集成的不二之选。diel轻量 GUI 版。只保留文件扫描核心功能界面更简洁、启动更快适合看一眼就关的快速核查场景。新手建议日常快速核查用diel写自动化脚本用diec做深入分析比如逐字节核对特征码用die。三者的签名数据库是共享的不用担心结果不一致。️ diec 命令参数精讲从单文件到批量扫描diec的命令行参数是自动化流程的核心下面是实测最常用的几个# 递归扫描目录下所有文件 diec -r ./samples/ # 深度扫描更慢但更全面 diec -d ./sample.exe # 开启启发式扫描应对未知样本 diec -u ./sample.exe # 输出 JSON / XML / CSV 格式便于程序解析 diec -j ./sample.exe diec -x ./sample.exe diec -c ./sample.exe几个组合技巧批量筛选加壳文件diec -r -j ./samples/把整个目录的结果导出为 JSON再用grep过滤出含Packer的记录几秒钟就能从几百个文件里挑出所有可疑目标。递归 深度搭配对样本集先-r快速过一遍命中可疑项再单独-d -u深挖避免一上来就全量深扫拖慢速度。结果落盘留档把每次扫描的 JSON 存下来方便做版本对比或写入自己的情报库。 想了解全部参数的含义可以查阅项目内的 docs/RUN.md 运行说明。️ 图形界面深挖多窗口协同看透二进制命令行适合批量但当你需要盯着某一个文件反复研究时图形界面die才是主场。主窗口对 PE32 文件的分析结果如下图所示顶部是文件基本信息中间是 PE 结构各维度的标签页红框内则直接标出了加壳、混淆、反分析等保护特征。die最有价值的地方在于多窗口协同哈希信息、MIME 类型、导入表、字符串列表、十六进制数据、结构可视化可以同时铺开互相对照。比如上图里你可以同时看到左侧的文件哈希与基本信息、中间的导入表与字符串、右下角的节区可视化。当你想确认某个字符串是否真的出现在文件里直接在字符串窗口搜索再点进十六进制窗口核对偏移比在命令行里来回折腾高效得多。再看签名匹配界面下方Signatures窗口列出所有命中的签名及其偏移地址上方则展示对应位置的操作码比如xor eax, 0xab39792这类典型指令。逐条核对特征码命中位置是做恶意代码情报分析时的高频操作。适合谁用如果你做逆向、恶意样本分析或安全审计GUI 的这些面板基本可以替代一部分打开 Hex 编辑器 查文档的原始工作流。 进阶签名数据库与自定义检测脚本DiE 的检测能力全靠一套可扩展的签名系统驱动这也是它区别于普通格式识别工具的核心卖点。签名数据库长什么样打开项目的 db/ 目录你会看到按文件格式分类的子目录PE/、ELF/、MSDOS/、APK/等每个目录下是一堆.sg文件。每个.sg文件就是用DiE-JS一种类 JavaScript 的 ES5 脚本语言写的检测规则。// 一个简化版的检测脚本结构 meta(packer, UPX); // 声明本条规则用于识别 packer 类型的 UPX function detect() { // 在入口点附近比对特征字节码 if (MSDOS.compareEP(..............fcb430cd213c03)) { sVersion 3.X; // 命中则记录版本号 bDetected true; // 置为检测成功 } return bDetected; }怎么理解这套机制你可以把每个.sg文件想象成一张寻人启事meta()写明要找的人是谁工具类型 名字detect()则通过字节比对、字符串查找、偏移计算等操作确认是不是他。help/目录下的 Global.md、PE.md、MSDOS.md 等文档就是这些脚本可用的 API 参考手册。如何添加自己的规则在对应的格式目录如db/PE/新建一个.sg文件用上面的结构写meta()和detect()重启工具或在签名窗口点重载数据库新规则立即生效。如果你不想动核心数据库项目还提供了db_extra/扩展目录专门用来放个人或团队的额外规则升级工具时不会被覆盖。需要更精简的部署dbs_min/里存放的是压缩后的最小签名集适合资源受限环境。 想深入了解脚本 API建议从 help/Util.md 开始读里面全是位运算、时间格式化这类基础工具函数是写复杂规则前最好的热身读物。 四种安装方式任你选包管理器、AppImage、Docker 与源码根据你的系统和使用习惯挑一种最顺手的1. AppImageLinux 免安装最省事# 下载对应架构的 AppImage 文件后赋予执行权限 chmod x Detect_It_Easy-3.10-x86_64.AppImage # 直接运行 ./Detect_It_Easy-3.10-x86_64.AppImage2. 包管理器自动处理依赖Arch LinuxAUR 中有detect-it-easy-git包Parrot OS / REMnux发行版仓库内置detect-it-easyWindows可通过 Chocolatey 安装die包。3. Docker 容器隔离环境随用随走git clone --recursive https://gitcode.com/gh_mirrors/de/Detect-It-Easy cd Detect-It-Easy docker build . -t horsicq:diec # 用容器分析目标文件 docker/diec.sh ./sample.exe项目自带的 docker/diec.sh 脚本会把目标文件所在目录只读挂载进容器分析完成后容器自动退出不留任何残留。4. 源码编译想改源码时再走这条路项目使用 CMake 构建入口是根目录的detectiteasy.cmake。详细的依赖清单与编译步骤请直接查阅 docs/BUILD.md按文档一步步来即可这里不展开。 新手避坑清单五个高频问题与解法Q1为什么同一个文件diec和 GUI 结果不一样大概率是你用了不同的扫描模式。默认扫描只做基础检测-d深度扫描和 GUI 里的深度扫描勾选项会启用更多特征比对。统一扫描模式再比较结果。Q2结果里一堆[-]是什么意思[]里本来是版本或附加信息比如加壳选项[-]表示这条规则识别到了工具但拿不到更细的版本号。这不影响结论可信度。Q3启发式分析会不会误报会。启发式本质是猜靠统计特征和行为模式判断。重要结论务必用签名结果交叉验证可疑样本再拖进 GUI 逐条核对命中特征。Q4扫描超大文件很慢怎么办先-r快速过一遍目录缩小范围再对可疑文件单独深扫也可以考虑用dbs_min/精简签名集减少匹配次数。Q5加了自定义签名但没生效检查三件事文件后缀是否为.sg、meta()里的类型名是否在支持列表内、以及是否重载了数据库。改完签名记得点重载这是新手最容易漏的一步。✅ 收尾把 DiE 变成你的常备工具到这里你已经走完了安装 → 扫描 → 读懂结果 → 自定义规则的全流程。如果只能带走三句话我希望是身份识别用diec一条命令得到编译器、链接器、加壳信息批量、自动化都靠它细节深挖用die多窗口协同核对特征码、字符串与节区GUI 的效率优势在这里特殊样本靠自定义把 DiE 当成可编程的检测框架任何私有格式都能写进.sg规则。接下来的行动清单建议按顺序做安装 DiEAppImage 或 Docker 任选其一用diec分析你手头几个常见文件熟悉输出格式去 db/ 目录随便翻开一个.sg文件对照 help/ 文档读懂它的逻辑挑一个你熟悉的私有格式写一条自己的.sg规则并成功命中把diec -r -j接进你的日常文件收集流程让自动化帮你完成第一轮情报筛选。工具的意义不在于功能列表有多长而在于它能否在你真正需要时给出可靠答案。从现在起任何这文件是谁做的的问题都可以放心交给 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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考