Listing 1: Stack walking pseudocode

DWORD parentEBP ;
  __asm MOV parentEBP, EBP
do
  {
  BYTE* caller = 
    *((BYTE**)parentEBP + 1) ;
  parentEBP = 
    *(DWORD*)parentEBP ;
  dump info about caller
  }
while( ! end ) ;
//End of File