当前位置: 首页 > news >正文

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

http://www.cnnetsun.cn/news/3267778.html

相关文章:

  • Meta Muse Image技术解析:AI图像生成在广告创意与平台集成的应用
  • Seq2SeqAutoencoder实战:用PyTorch实现序列自编码器的完整教程
  • 【计算机大数据毕业设计案例】基于 Python 的热门技术岗位薪资统计系统的设计与实现 基于 Python 的程序员薪资数据清洗与可视化系统(程序+文档+讲解+定制)
  • 一机多玩:Nucleus Co-op如何让单机游戏变身多人派对
  • 为什么选择sing-app-vue-dashboard?Vue 3+Bootstrap 5构建现代管理系统的5大优势
  • 企业微信二次开发:业务系统向外部群主动推送消息
  • CY7-OH 提纯方法详解:重结晶与柱层析操作技巧与优化方案
  • libgdbm-rust:革命性Rust重写GDBM数据库管理器,彻底解决内存安全问题
  • 告别风扇噪音!FanControl让你彻底掌控电脑散热系统
  • 终极指南:如何在Windows系统上解锁MacBook Pro Touch Bar完整显示功能
  • git-sh安装与配置教程:5分钟快速开始Git高效开发
  • 抖音音频批量下载终极指南:开源工具实现高效音乐素材收集
  • 嵌入式音频系统设计:TS2007FC与TM4C1299NCZAD实战解析
  • 钉钉助手社区生态:Xposed-Rimet插件贡献与版本更新机制
  • 抖音无水印视频下载终极指南:douyin-downloader完全解析与实战教程
  • Requests-Scala与JSON处理:与uPickle、Circe等库的完美集成
  • H5GG vs 传统iOS修改工具:为什么它是开发者的新选择?
  • The Deck开源贡献指南:如何为这个Flutter游戏引擎项目做贡献
  • 2026年房产中介房客源管理软件横向评测:10款系统功能与适用场景深度对比
  • 开发者深度指南:freegeoip源码架构与扩展开发
  • 半年十倍:一只科创板半导体ETF的规模跃迁之路
  • 小爱音箱别再只会固定回复:给它接上大模型和自定义人设
  • AI合规工具:AI跨境合规工具的使用指南
  • 如何为Unity游戏安装MelonLoader模组加载器:完整指南
  • 如何让经典游戏《暗黑破坏神2》在现代PC上焕发新生
  • 【AI】灰度发布:新执行逻辑安全上线
  • C语言实现小根堆
  • Camunda Modeler:为什么它能成为业务流程建模的首选工具?
  • 终极方案:轻松解锁网易云音乐的神奇桌面工具
  • 揭秘Thymeleaf Layout Dialect工作原理:从源码角度理解模板装饰机制