zoukankan      html  css  js  c++  java
  • 反调试技术总结

    总结了一下网上的反调试技术,记录一下

    一、使用WindowsAPI :
      1.IsDebuggerPresent
      2.CheckRemoteDebuggerPresent ->call NtInformationProcess( 2参数ProcessInformationClass)
      3.NTQueryObject(2参数ObjectInformationClass)检查调试对象
      4.NTQuerySystemInformation( 1参数SystemInformationClass)
      5.ZwSetInformationThread(2参数ThreadInformationClass)设置ThreadHideFromDebugger,使线程与调试器强制分离
    二、手动检测数据结构
      1.IsDebuggerPresent 查看peb
      2.ProcessHeap  查看PEB结构的0x18处 ProcessHeap中的ForceFlags和Flags
      3.检测NTGlobalFlag
    三、检测调试器:
      1.注册表项:
          SOFTWAREMicrosoftWindows NTCurrentVersionAeDebug(32位系统)
          SOFTWAREWow6432NodeMicrosoftWindowsNTCurrentVersionAeDebug(64位系统)
      2.窗口检测:
          FindWindow  EnumWindow
      3.进程检测
      4.检测父进程
      5.是否有SeDebugPrivilege权限
      6.检测时间差
          使用rdtsc指令
          使用QueryPerformanceCounter和GetTickCount
      7.断点检测
          软件断点
          硬件断点
      8.执行代码校验和检查
    四、干扰调试器
      1.使用TLS回调
      2.使用异常
          int 3
          int 2d
          设TF单步异常
          汇编插入异常
    五、加密,加花
     
     
    详解见相关博客:http://bbs.pediy.com/thread-212371.htm
         http://blog.csdn.net/qq_32400847/article/details/52798050
  • 相关阅读:
    Git上手:四种常见的Git协同工作方式
    Git上手:Git扫盲区
    理解web缓存
    浅谈对技术债的理解
    保护个人隐私,从我做起
    cookie注意事项
    了解JavaScript核心精髓(二)
    简单实现nodejs爬虫工具
    浅谈我所见的CSS组织风格
    利用正则表达式清除多余的空行
  • 原文地址:https://www.cnblogs.com/HsinTsao/p/7492806.html
Copyright © 2011-2022 走看看