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