news 2026/7/10 17:53:39

makin项目深度解析:通过API挂钩技术检测恶意软件的15种反调试技巧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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/makin

makin是一款专注于揭示恶意软件反调试和反虚拟机(VM)技巧的工具,通过API挂钩技术帮助安全研究人员有效识别恶意软件的防御机制。本文将深入解析makin项目的核心功能、实现原理以及15种常见的反调试技巧检测方法。

一、项目概述:恶意软件检测的强大工具 🛡️

1.1 核心功能与价值

makin项目通过API挂钩技术监控系统调用,能够检测恶意软件常用的反调试和反VM手段。其核心价值在于帮助安全分析师:

  • 快速识别恶意软件的防御机制
  • 深入了解恶意代码的行为模式
  • 为逆向工程提供关键突破口

项目主要由两个核心模块组成:

  • asho/:包含API挂钩实现代码,如hook.h和hookFunctions.h
  • makin/:包含反调试检测逻辑和配置文件,如checks.json

1.2 技术架构概览

makin采用分层架构设计:

  1. API挂钩层:通过Zydis反汇编库实现系统函数挂钩
  2. 检测逻辑层:实现各类反调试技巧的检测算法
  3. 配置层:通过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_cast<LPVOID>(nextInstruction), 100, PAGE_EXECUTE_READWRITE, &old); memcpy_s(reinterpret_cast<PVOID>(nextInstruction), 2, jmp, 2); *reinterpret_cast<DWORD_PTR*>(reinterpret_cast<byte*>(nextInstruction) + 2) = static_cast<DWORD_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的反调试技巧

技巧1:IsDebuggerPresent检测

恶意软件调用IsDebuggerPresent函数检查是否被调试,makin通过挂钩该函数进行监控:

HookFunction("IsDebuggerPresent", DWORD_PTR(HookIsDebuggerPresent), "kernelbase");
技巧2:CheckRemoteDebuggerPresent检测

挂钩CheckRemoteDebuggerPresent函数检测远程调试器:

HookFunction("CheckRemoteDebuggerPresent", DWORD_PTR(HookCheckRemoteDebuggerPresent), "kernelbase");
技巧3:NtQueryInformationProcess检测

监控进程信息查询,检测调试状态:

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/makin

4.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 17:53:41

Meta Muse Image技术解析:AI图像生成在广告创意与平台集成的应用

如果你是一名开发者或内容创作者&#xff0c;最近可能已经感受到了AI图像生成领域的"军备竞赛"正在加速。当OpenAI的DALL-E和谷歌的Imagen已经占据先发优势时&#xff0c;Meta选择在2026年7月正式推出自己的AI图像生成模型Muse Image&#xff0c;这背后究竟意味着什么…

作者头像 李华
网站建设 2026/7/10 17:53:11

Seq2SeqAutoencoder实战:用PyTorch实现序列自编码器的完整教程

Seq2SeqAutoencoder实战&#xff1a;用PyTorch实现序列自编码器的完整教程 【免费下载链接】Seq2Seq-PyTorch Sequence to Sequence Models with PyTorch 项目地址: https://gitcode.com/gh_mirrors/se/Seq2Seq-PyTorch 序列自编码器是处理序列数据的强大工具&#xff0…

作者头像 李华
网站建设 2026/7/10 17:52:44

【计算机大数据毕业设计案例】基于 Python 的热门技术岗位薪资统计系统的设计与实现 基于 Python 的程序员薪资数据清洗与可视化系统(程序+文档+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/10 17:51:19

一机多玩:Nucleus Co-op如何让单机游戏变身多人派对

一机多玩&#xff1a;Nucleus Co-op如何让单机游戏变身多人派对 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 你是否曾幻想过与好友围坐在同一台…

作者头像 李华
网站建设 2026/7/10 17:49:11

企业微信二次开发:业务系统向外部群主动推送消息

前言 在企业微信二次开发的全场景中&#xff0c;“从业务系统主动触发并向外部群推送消息”是各类通知流、告警流、运营SOP流的核心技术底座。由于面向的是外部客户群&#xff0c;在非官方原生接口的方案中&#xff0c;所有的推送最终都是转换为底层 RPA 组件对桌面客户端的句…

作者头像 李华