Skip to content
forked from milcert/ExpoMon

Exports monitoring plugin for x64dbg

License

Notifications You must be signed in to change notification settings

mrexodia/ExpoMon

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExpoMon

ExpoMon is a plugin developed by milCERT.ch, the Swiss Military CERT, for x64dbg with the goal to assist the reverse engineer during dynamic analysis of malicious binaries when they resolve APIs, e.g. with GetProcAddress, LdrGetProcedureAddress, etc. or a custom implementation of those functions. The plugin monitors any access to a cloned memory page of the export directory of every module; IMAGE_EXPORT_DIRECTORY.AddressOfFunctions is hijacked and points to the cloned memory page.

Features

  • Logs context information on access to the RVA of an exported function
    • IMAGE_EXPORT_DIRECTORY.AddressOfFunctions[]
  • Hijacks accessed exported functions

Known limitations

  • Cannot handle cases where pattern scanning is used to find the functions
  • Cannot handle cases where hardcoded relative offsets are used to find the functions
  • Cannot handle direct syscalls

Install

  • Download or compile the plugin
  • Copy the plugin to the plugins directory
    • release\x64\plugins\ExpoMon.dp64
    • release\x32\plugins\ExpoMon.dp32
  • Set or add MembpAlt=1 to the [Engine] section in x64dbg.ini
    • This configures memory breakpoints to use PAGE_NOACCESS instead of PAGE_GUARD

Usage

  • If it is not visiable in the tabs

    • Plugins > ExpoMon > Show
  • To enable the exports monitoring: Monitor Exports

    • This will monitor the access to the exports of all the currently loaded modules
      • In the Settings tab it is possible to configure to only monitor specific modules
    • Modules that are loaded at a later stage are also automatically monitored (CB_LOADDLL)
  • To temporarily disable any monitoring: Disable Monitoring

    • Internally executes the DisableMemoryBreakpoint command on every monitored memory page
  • To completely remove and disable the monitoring: Reset

    • This may potentially lead to a crash / unhandled exceptions, due to the fact that there may still be pointers in use to the monitored pages, which will be freed, causing invalid memory access
  • In the Settings tab it is possible to configure the conditions for breaking and hijacking

Screenshots

Accessed Exports

Hijacked Exports

License

MIT License

About

Exports monitoring plugin for x64dbg

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 55.2%
  • C++ 44.5%
  • QMake 0.3%