Giter Site home page Giter Site logo

debugdetector's Introduction

DD - DebugDetector

###Notes

  • This tool should help to test if your debugger is invisible against the targets. Maybe some can learn something about the anti debug techniques while browsing the source. Of course the most things are easy to bypass but you should see what you need to fix in your debugger

  • If you have some ideas, other techniques (no time related things currently) or other suggestions than feel free to contact me!

  • zer0fl4g[at]gmail[dot]com

###Ideas & Techniques & collected Links

###ToDo

  • add more Plugins
  • add bad driver names
  • fix x64 support
  • remove as much inline asm as possible
  • fix more memory leaks

####Changelog until now

  • added NtQuerySystemInformation
  • added NtSetDebugFilterState
  • fixed small memory leaks
  • changed version numbers (automatic set to build date of plugins)

####Changelog v0.2

  • added color on detection
  • added better error reporting by plugins
  • added OSVersion as parameter to plugins
  • added NtYieldExecution plugin (by Aguila)
  • added CheckHeapMemory plugin
  • added some new windows to the FindBadWindow plugin
  • fixed a Windows XP display problem

###Features

  • Plugin Interface
  • simple to use
  • error messages
  • Show percentage of detection
  • 20 Plugins
  • DebugObject
    • Using NtQueryInformationProcess to see if there are Debugging Objects for our process
  • CheckRemoteDebuggerPresent
    • simple api which checks if a debugger is present
  • HardwareBreakpoint
    • checking the current thread for breakpoints in CONTEXT.dr0 - .dr3
  • IsDebuggerPresent
    • simple api which checks if a debugger is present
  • MemoryBreakpoint
    • places a page guard and in case there is no exception we know that we are debugged
  • OpenCSRSS (doesn´t work anymore ?)
    • Opens a handle for csrss , should not be able to without DebuggingFlag
  • OutputDebugString
    • if eax == 1 we are in normal mode. else offset of string is found in eax
  • ParentProcess
    • normaly we run with explorer.exe as parent
  • ProcessDebugFlags
    • uses NtQueryInformationProcess to check if our process has debugflags
  • Unhandled Exception
    • raises a division by 0 exception and in case we are not debugged everything wents good since we capture the exception
  • PEB.BeingDebugged
    • Checks the Process Enviroment Block if the debugbit is set
  • PEB.GlobalFlags
    • checks if flag is set in PEB (FLG_HEAP_ENABLE_TAIL_CHECK && FLG_HEAP_ENABLE_FREE_CHECK && FLG_HEAP_VALIDATE_PARAMETERS)
  • PEB.ProcHeapFlag
    • checks if the ForceFlag is set in the PEB
  • FindBadProcesses
    • enums the process list and checks if given processes are running
  • FindBadWindows
    • enums the window list and checks if given windows are found
  • FindBadDrivers
    • enums the driver list and checks if given drivers are found
  • NtYieldExecution (by Aguila)
    • NtYieldExecution returns STATUS_NO_YIELD_PERFORMED if there is no other thread ( e.g debugger) but often fails if the system is overloaded and doesn´t allow a switch (not a good method)
  • CheckHeapMemory
    • allocs memory in the heap and checks if FEEEABABABABABABABABFEEE (exists only on debug mode as overflow detection) is there
  • NTSetDebugFilterState
    • Uses the return value of the ntdll api "NtSetDebugFilterState" to check if the target is running under a debugger
  • NTQuerySystemInformation
    • Uses the NtQuerySystemInformation API to check if the target is running under a debugger

debugdetector's People

Contributors

zer0fl4g avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.