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
  • 相关阅读:
    DFS&BFS
    最长上升非降子序列的长度动态规划
    模运算的基本性质
    codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
    D. String Game 二分加字符串匹配
    C
    hdu1556Color the ball线段树区间更新
    自动化测试
    自动化测试工具学习-selenium
    线程池
  • 原文地址:https://www.cnblogs.com/HsinTsao/p/7492806.html
Copyright © 2011-2022 走看看