• Stars
    star
    169
  • Rank 216,601 (Top 5 %)
  • Language
    C++
  • Created about 13 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Visual Studio 2008 port of the libemu library that includes scdbg.exe, a modification of the sctest project, that includes more hooks, interactive debugging, reporting features, and ability to work with file format exploit shellcode. Will run under WINE
This project is a port of the GCC libemu project to compile with 
Visual Studio 2008

------------------------------------------------------------------------
Note: if you run into unimplemented instructions or lack of rep support 
      check out the experimental scdbg build which uses the Unicorn engine 
               https://github.com/dzzie/scdbg_unicorn
------------------------------------------------------------------------

Additions include:

140+ new api hooks, 8 new dlls, interactive debug shell, 
rebuilt PEB, support for file format exploits, support for 
return address scanners, memory monitor, report mode, dump mode, 
easily human readable outputs, log after xx capabilities, 
directory mode, inline analysis of process injection shellcode 
and more...

Stripped features include: profile, graphing, getpc mode

A project file to compile this as a stdcall dll is in the ./dll
subdirectory. This dll is compatiable with any language which can
use standard Windows dlls. Example projects are provided for C,
Visual Basic 6, and C#

I ported this because:

1) VS debugging tools are great, (me) debugging with gcc = printf
2) I want to use it from other languages or VC code, cygwin is not safe for this
3) this lets me proxy calls to Win32 Api if i want and not redefine structs

This will be the main branch moving forward, which sadly means its days of
cross compiling are over unless you back port changes to the older build. 

See README and CHANGES for more details.

patchgen is a small tool to generate the patch files for use with the /patch
command. If you need to modify the libemu envirnoment for some reason or another
its an easy way to apply tweaks for specific shellcode. Each patch file can support
multiple patches.

Couple build notes.
   Be sure your project options have LIL_ENDIAN and BYTE_ORDER defined in the force
   includes. this is the /D linker command line option. It should be set already.
   The world turns upside down (well literally backwards!) with out these options set.

   Right now it is set to compile as a static build with the /MT and /MTd options
   this is so it doesnt require the external msvcr90.dll runtime which turns out
   you cant just distribute. It has to be installed which is stupid. The static
   link compiles the necessary functions into the main exe and only increases
   it size by about 300k This is still better than the 600k external runtime dll 
   anyway.

   Several other small support utilities are available in the git repository these
   include a couple tools for scdbg development as well as a patch utility for generating
   the files the /patch command uses to modify the libemu memory at runtime.