反调试技术

  • 静态反调试
  • 特点:在调试开始阻拦调试者
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放到虚拟机中模拟执行
指令级虚拟机:可以将任意一段指令放到虚拟机中保护起来





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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值