尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
makin项目深度解析:通过API挂钩技术检测恶意软件的15种反调试技巧
makin项目深度解析通过API挂钩技术检测恶意软件的15种反调试技巧【免费下载链接】makinmakin - reveal anti-debugging and anti-VM tricks [This project is not maintained anymore]项目地址: https://gitcode.com/gh_mirrors/ma/makinmakin是一款专注于揭示恶意软件反调试和反虚拟机VM技巧的工具通过API挂钩技术帮助安全研究人员有效识别恶意软件的防御机制。本文将深入解析makin项目的核心功能、实现原理以及15种常见的反调试技巧检测方法。一、项目概述恶意软件检测的强大工具 ️1.1 核心功能与价值makin项目通过API挂钩技术监控系统调用能够检测恶意软件常用的反调试和反VM手段。其核心价值在于帮助安全分析师快速识别恶意软件的防御机制深入了解恶意代码的行为模式为逆向工程提供关键突破口项目主要由两个核心模块组成asho/包含API挂钩实现代码如hook.h和hookFunctions.hmakin/包含反调试检测逻辑和配置文件如checks.json1.2 技术架构概览makin采用分层架构设计API挂钩层通过Zydis反汇编库实现系统函数挂钩检测逻辑层实现各类反调试技巧的检测算法配置层通过JSON文件定义检测规则和模式![makin技术架构示意图]二、API挂钩技术反调试检测的核心 2.1 挂钩实现原理makin的API挂钩功能主要在asho/hook.h中实现。其核心原理是通过修改目标函数的机器码将程序执行流程重定向到自定义的钩子函数。关键代码如下// 64位系统挂钩实现 byte jmp[] {0x48, 0xB8, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0xE0}; VirtualProtectEx(GetCurrentProcess(), reinterpret_castLPVOID(nextInstruction), 100, PAGE_EXECUTE_READWRITE, old); memcpy_s(reinterpret_castPVOID(nextInstruction), 2, jmp, 2); *reinterpret_castDWORD_PTR*(reinterpret_castbyte*(nextInstruction) 2) static_castDWORD_PTR(hookFunc);2.2 关键挂钩函数makin挂钩了多个关键系统函数以监控恶意软件行为包括// ntdll.dll函数挂钩 HookFunction(NtClose, DWORD_PTR(HookNtClose), ntdll); HookFunction(NtOpenProcess, DWORD_PTR(HookNtOpenProcess), ntdll); HookFunction(NtCreateFile, DWORD_PTR(HookNtCreateFile), ntdll); HookFunction(NtQueryInformationProcess, DWORD_PTR(HookNtQueryInformationProcess), ntdll); // kernelbase.dll函数挂钩 HookFunction(IsDebuggerPresent, DWORD_PTR(HookIsDebuggerPresent), kernelbase); HookFunction(CheckRemoteDebuggerPresent, DWORD_PTR(HookCheckRemoteDebuggerPresent), kernelbase);这些挂钩函数能够监控恶意软件的系统调用行为为反调试检测提供数据支持。三、15种反调试技巧检测全解析 3.1 基于注册表的反VM检测恶意软件常通过检查注册表项判断是否运行在虚拟机中。makin在makin/checks.json中定义了相关检测规则Registry: { KeyChecks: { VMware: [vmware], VirtualBox: [virtualbox, vbox], misc: [wine, SOFTWARE\\Microsoft\\Virtual Machine\\Guest\\Parameters] }, ValueChecks: [ SystemManufacturer, SystemProductName, Identifier, SystemBiosVersion, SystemBiosDate, VideoBiosVersion ] }3.2 文件系统检测通过检查特定文件是否存在来判断虚拟机环境FileSystem: { Files: [ virtualbox, vmware, vmbox, vmmouse.sys, vmhgfs.sys, vm3dmp.sys, vmci.sys ] }3.3 进程检测监控虚拟机特有的进程名称Processes: [ vmtoolsd.exe, vmwaretray.exe, vmwareuser.exe, VGAuthService.exe, vmacthlp.exe, vmsrvc.exe ]3.4 基于API的反调试技巧技巧1IsDebuggerPresent检测恶意软件调用IsDebuggerPresent函数检查是否被调试makin通过挂钩该函数进行监控HookFunction(IsDebuggerPresent, DWORD_PTR(HookIsDebuggerPresent), kernelbase);技巧2CheckRemoteDebuggerPresent检测挂钩CheckRemoteDebuggerPresent函数检测远程调试器HookFunction(CheckRemoteDebuggerPresent, DWORD_PTR(HookCheckRemoteDebuggerPresent), kernelbase);技巧3NtQueryInformationProcess检测监控进程信息查询检测调试状态HookFunction(NtQueryInformationProcess, DWORD_PTR(HookNtQueryInformationProcess), ntdll);3.5 其他常见反调试技巧技巧4异常处理机制检测通过挂钩SetUnhandledExceptionFilter函数监控异常处理HookFunction(SetUnhandledExceptionFilter, DWORD_PTR(hookSetUnhandledExceptionFilter), kernelbase);技巧5线程信息查询监控线程信息查询操作HookFunction(NtQueryInformationThread, DWORD_PTR(HookNtQueryInformationThread), ntdll);技巧6调试对象创建检测监控调试对象的创建HookFunction(NtCreateDebugObject, DWORD_PTR(HookNtCreateDebugObject), ntdll);技巧7系统调试控制检测监控系统调试控制调用HookFunction(NtSystemDebugControl, DWORD_PTR(HookNtSystemDebugControl), ntdll);技巧8进程创建监控监控新进程创建HookFunction(NtCreateUserProcess, DWORD_PTR(HookNtCreateUserProcess), ntdll);技巧9线程创建监控监控新线程创建HookFunction(NtCreateThreadEx, DWORD_PTR(HookNtCreateThreadEx), ntdll);技巧10特权调整检测监控进程特权调整HookFunction(RtlAdjustPrivilege, DWORD_PTR(HookRtlAdjustPrivilege), ntdll);技巧11注册表操作监控监控注册表查询操作HookFunction(RegQueryValueExW, DWORD_PTR(HookRegQueryValueExW), RegQueryValueExW);技巧12系统信息查询监控监控系统信息查询HookFunction(NtQuerySystemInformation, DWORD_PTR(HookNtQuerySystemInformation), ntdll);技巧13调试过滤器状态设置监控调试过滤器状态修改HookFunction(NtSetDebugFilterState, DWORD_PTR(HookNtSetDebugFilterState), ntdll);技巧14线程信息设置监控线程信息设置HookFunction(NtSetInformationThread, DWORD_PTR(HookNtSetInformationThread), ntdll);技巧15对象查询监控监控系统对象查询HookFunction(NtQueryObject, DWORD_PTR(HookNtQueryObject), ntdll);四、项目使用指南 4.1 环境准备要使用makin项目首先需要克隆仓库git clone https://gitcode.com/gh_mirrors/ma/makin4.2 编译与构建项目使用Visual Studio解决方案进行构建打开makin.sln文件即可进行编译。4.3 自定义检测规则通过修改makin/checks.json文件可以自定义反调试和反VM检测规则添加新的注册表项、文件路径或进程名称。五、总结与展望 makin项目通过API挂钩技术为安全研究人员提供了一个强大的反调试技巧检测工具。其核心优势在于全面的API挂钩覆盖可定制的检测规则清晰的代码结构和模块化设计虽然项目已不再维护但其实现思路和技术方法仍然具有重要的学习价值。未来可以考虑添加更多高级检测功能如基于行为分析的检测算法以及对最新反调试技术的支持。通过学习和使用makin安全研究人员能够更好地理解恶意软件的防御机制为恶意代码分析和逆向工程工作提供有力支持。【免费下载链接】makinmakin - reveal anti-debugging and anti-VM tricks [This project is not maintained anymore]项目地址: https://gitcode.com/gh_mirrors/ma/makin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Next.js WordPress Starter测试策略:Jest与Storybook组件测试完整指南

Next.js WordPress Starter测试策略:Jest与Storybook组件测试完整指南

Next.js WordPress Starter测试策略:Jest与Storybook组件测试完整指南 【免费下载链接】nextjs-wordpress-starter A headless starter for WordPress powered by Next.js. 项目地址: https://gitcode.com/gh_mirrors/ne/nextjs-wordpress-starter Next.js W…

📅 2026/9/9 15:05:32
终极AI斗地主助手:从零开始掌握专业级游戏策略

终极AI斗地主助手:从零开始掌握专业级游戏策略

终极AI斗地主助手:从零开始掌握专业级游戏策略 【免费下载链接】DouZero_For_HappyDouDiZhu 基于DouZero定制AI实战欢乐斗地主 项目地址: https://gitcode.com/gh_mirrors/do/DouZero_For_HappyDouDiZhu DouZero_For_HappyDouDiZhu是一款基于深度强化学习技术…

📅 2026/9/11 22:41:48
libgdbm-rust:革命性Rust重写GDBM数据库管理器,彻底解决内存安全问题

libgdbm-rust:革命性Rust重写GDBM数据库管理器,彻底解决内存安全问题

libgdbm-rust:革命性Rust重写GDBM数据库管理器,彻底解决内存安全问题 【免费下载链接】libgdbm-rust rewrite gdbm tool by using Rust 项目地址: https://gitcode.com/openeuler/libgdbm-rust 前往项目官网免费下载:https://ar.opene…

📅 2026/10/8 13:03:10
MORE NEWS

更多资讯

📰

SolidWorks二次开发模板:基于.NET Framework的可交付插件工程化实践

简介:本资源是一套开箱即用的SolidWorks C#二次开发模板工程,面向机械设计工程师、CAD自动化开发者及高校相关专业学习者,解决从零搭建插件项目、理解SDK交互机制与快速实现功能扩展的入门难题。压缩包含99个文件,涵盖18个核心C#源…

📰

Linux磁盘I/O监控:iostat与iotop实战排查

1. 为什么需要监控磁盘 I/O:从一次“查不出原因的卡顿”说起你有没有遇到过这种情况:应用响应突然变慢,CPU 和内存占用却都在正常范围内,看日志也没报错,可服务就是像陷在泥潭里一样。排查到最后才发现,罪魁…

📰

一文梳理AI Infra知识全景:算力、存储、训练、推理与平台

做AI项目做了几年,我一直有个很尴尬的处境:模型结构、损失函数、调参技巧这些聊起来头头是道,可一旦扯到GPU集群怎么规划、数据管线为什么卡住、推理服务为什么线上长尾延迟爆炸,就有点心虚。直到有一次亲手把一个训练任务搞挂&am…

📰

从模糊命名到清晰边界:以rea为例谈代码可维护性重构

1. 从“rea”这个标题说起:一个被低估的缩写背后藏着什么第一次看到“rea”这个标题的时候,我承认自己愣了几秒。没有正文,没有关键词,没有摘要描述,就孤零零三个字母。但恰恰是这种极简的输入,反而让我觉得…

📰

Hive实现树形结构展开:三种方案对比与工程实践

1. 树形结构为什么要展开:从组织架构到评论盖楼的实际场景很多数仓同学第一次看到“hive实现树形结构展开”这个需求时,心里想的都是:这不就是递归查询吗?但真正动手就会发现,Hive 在这方面比常见的关系型数据库麻烦得…

📰

计算机图形学速通指南:从渲染管线到软渲染器的全景地图

计算机图形学这个领域有个挺有意思的现象:网上的教程多到看不完,但能把一个三角形从顶点数据变成屏幕上像素这件事从头到尾讲清楚的人,少之又少。我准备写一套《计算机图形学速通指南笔记》的时候,一直在想第一篇到底该从哪讲起。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬