我是靠谱客的博主 纯真项链,最近开发中收集的这篇文章主要介绍反调试技术,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 静态反调试
  • 特点:在调试开始阻拦调试者
PEBBeginDebug:调试标记位
Ldr:内存状态
Heap(Flag,Force Flags):堆状态
NtGlobalFlag:内核全局标记
TEBStaticUnicodeString:静态缓冲区
原始APINtQueryInformation()
ProcessDebugPort(0x07):获取调试端口
ProcessDebugObjectHandle(0x1E):获取调试句柄
ProcessDebugFlag(0x1F):获取调试标记
NtQuerySystemInformation()
SystemKernelDebuggerInformation(0x23):获取系统调试状态(双机)
NtQueryObject():遍历系统内核对象
攻击调试器分离调试器
NtSetInfomationThread()
ThreadHideFromDebugger(0x11)
打开进程检查SeDebugPrivilege:检查进程是否具有调试权限
TLS回调函数坑爹
普通API父进程检查
窗口名检查
进程名遍历
文件名及文件路径检查
注册表检查
动态反调试
特点:调试过程中阻拦调试者,在调试中频繁触发
SEH异常
断点
SetUnhandleedExceptionFilter()
时间检查RDTSC:汇编,读取时间戳计时器内容
单步检查F7
补丁检查0xCC扫描程序内0xCC,检查INT3
Hash扫描:扫描代码段Hash值,如不对则说明运行时被修改或调试
API断点扫描:扫描API的第一个字节是否为0xCC,是则说明被调试
反反汇编指令截断:将指令截断,致反汇编引擎后续指令解析错误
指令混淆:将敏感指令拆分成多块或若干不相干的指令进行迷惑
指令膨胀:将一条指令膨胀为数十条,但行为与其一致
代码乱序:将原有代码在内存中的顺序打乱,用jmp连接,干扰调试者
偷取代码偷取OEP代码:将OEP代码移动到其他地方加密
偷取API代码:将API的部分起始代码移动到其他地方
分页保护运行时保护分页:修改代码及数据段保护属性干扰分析
压缩壳:配合OEP加密可以使调试者很难顺利逆向
加密壳:添加各种反调试手段干扰调试者分析
虚拟机API虚拟机:将部分常用API放到虚拟机中模拟执行
指令级虚拟机:可以将任意一段指令放到虚拟机中保护起来



来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/B166ER/p/7839864.html

最后

以上就是纯真项链为你收集整理的反调试技术的全部内容,希望文章能够帮你解决反调试技术所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部