📚 OpenRCE is preserved as a read-only archive. Launched at RECon Montreal in 2005. Registration and posting are disabled.








Flag: Tornado! Hurricane!

Blogs >> dennis's Blog

Created: Tuesday, February 20 2007 13:22.59 CST Modified: Wednesday, February 21 2007 10:32.36 CST
Printer Friendly ...
gotoSEH
Author: dennis # Views: 2308

With the release of IDA Pro 5.1, I've updated one of my (so far unpublished) plugins. It's a simple but useful plugin, it allows you to jump to the current exception handler, handy for most executable protectors. Idea originally taken from Ilfak's blog.

// gotoSEH IDA Pro plugin
//
// (c) Dennis Elser
//
// history:
//
// 17.11.2006 - initial release
// 20.02.2007 - public release

#include <ida.hpp>
#include <idp.hpp>
#include <expr.hpp>
#include <bytes.hpp>
#include <loader.hpp>
#include <kernwin.hpp>
#include <dbg.hpp>
#include <auto.hpp>

extern plugin_t PLUGIN;



int idaapi init(void)
{
  if ( inf.filetype != f_PE ) return PLUGIN_SKIP;

  return PLUGIN_OK;
}

void idaapi term(void)
{
}


void idaapi run(int arg)
{
    thread_id_t tid;
    char segname[0x20];
    segment_t *tibseg;
    ulong ptr_seh;
    ulong seh_handler;

    tid = get_current_thread(); //use "getn_thread(0)" for IDA releases below 5.1
    if( tid == PROCESS_NO_THREAD )
    {
        warning( "Thread does not exist!" );
        return;
    }
    
    qsnprintf( segname, sizeof( segname ), "TIB[%08X]", tid );
    tibseg = get_segm_by_name( segname );

    if( tibseg == NULL )
    {
        warning( "Could not get segment pointer!" );
        return;
    }

    ptr_seh = get_long( tibseg->startEA );
    seh_handler = get_long( ptr_seh + 4 );
    auto_make_proc( seh_handler );
    jumpto( seh_handler );
}

//--------------------------------------------------------------------------
char comment[] = "gotoSEH";
char help[] = "no help ;)";
char wanted_name[] = "gotoSEH";
char wanted_hotkey[] = "0";


//--------------------------------------------------------------------------
//
//      PLUGIN DESCRIPTION BLOCK
//
//--------------------------------------------------------------------------
plugin_t PLUGIN =
{
  IDP_INTERFACE_VERSION,
  0,                    // plugin flags
  init,                 // initialize

  term,                 // terminate. this pointer may be NULL.

  run,                  // invoke plugin

  comment,              // long comment about the plugin
                        // it could appear in the status line
                        // or as a hint

  help,                 // multiline help about the plugin

  wanted_name,          // the preferred short name of the plugin
  wanted_hotkey         // the preferred hotkey to run the plugin
};


Blog Comments
aeppert Posted: Wednesday, February 21 2007 10:08.18 CST
Very useful and thanks for posting it!

dennis Posted: Wednesday, February 21 2007 16:25.29 CST
thanks, I'm glad you like it.

nico Posted: Wednesday, February 21 2007 17:34.56 CST
Cool stuff as usual from you my friend ;-)



Add New Comment
Comment:









There are 31,328 total registered users.


Recently Created Topics
[help] Unpacking VMP...
Mar/12
Reverse Engineering ...
Jul/06
let 'IDAPython' impo...
Sep/24
set 'IDAPython' as t...
Sep/24
GuessType return une...
Sep/20
About retrieving the...
Sep/07
How to find specific...
Aug/15
How to get data depe...
Jul/07
Identify RVA data in...
May/06
Question about memor...
Dec/12


Recent Forum Posts
Finding the procedur...
rolEYder
Question about debbu...
rolEYder
Identify RVA data in...
sohlow
let 'IDAPython' impo...
sohlow
How to find specific...
hackgreti
Problem with ollydbg
sh3dow
How can I write olly...
sh3dow
New LoadMAP plugin v...
mefisto...
Intel pin in loaded ...
djnemo
OOP_RE tool available?
Bl4ckm4n


Recent Blog Entries
halsten
Mar/14
Breaking IonCUBE VM

oleavr
Oct/24
Anatomy of a code tracer

hasherezade
Sep/24
IAT Patcher - new tool for ...

oleavr
Aug/27
CryptoShark: code tracer ba...

oleavr
Jun/25
Build a debugger in 5 minutes

More ...


Recent Blog Comments
nieo on:
Mar/22
IAT Patcher - new tool for ...

djnemo on:
Nov/17
Kernel debugger vs user mod...

acel on:
Nov/14
Kernel debugger vs user mod...

pedram on:
Dec/21
frida.github.io: scriptable...

capadleman on:
Jun/19
Using NtCreateThreadEx for ...

More ...


Imagery
SoySauce Blueprint
Jun 6, 2008

[+] expand

View Gallery (11) / Submit