Пример #1
0
//-----------------------------------------------------------------------------
// Walk to a specific module and dump size info
//-----------------------------------------------------------------------------
int CXboxConsole::DumpModuleSize( const char *pName )
{
	HRESULT error;
	PDM_WALK_MODULES pWalkMod = NULL;
	DMN_MODLOAD modLoad;
	int size = 0;

	// iterate and find match
	do 
	{
		error = DmWalkLoadedModules( &pWalkMod, &modLoad );
		if ( XBDM_NOERR == error && !stricmp( modLoad.Name, pName ) )
		{
			Msg( "0x%8.8x, %5.2f MB, %s\n", modLoad.BaseAddress, modLoad.Size/( 1024.0f*1024.0f ), modLoad.Name );
			size = modLoad.Size;
			error = XBDM_ENDOFLIST;
		}
	} 
	while ( XBDM_NOERR == error );
	DmCloseLoadedModules( pWalkMod );

	if ( error != XBDM_ENDOFLIST )
	{
		Warning( "DmWalkLoadedModules() failed.\n" );
	}

	return size;
}
Пример #2
0
bool CXboxDebugger::GetLoadedModules(std::vector<CModule>& modules)
{
  PDM_WALK_MODULES pWalkMod = NULL;
  DMN_MODLOAD modLoad;
  
  HRESULT xbres = 0;
  
  g_log.Log(LOG_INFO, "CXboxDebugger::GetLoadedModules, Setting up connection with the default xbox");

  xbres = DmWalkLoadedModules(&pWalkMod, &modLoad);
  if (XBDM_NOERR != xbres)
  {
    g_log.Log(LOG_INFO, "CXboxDebugger::GetLoadedModules, failed setting up connection");
    return false;
  }
  
  while (XBDM_NOERR == xbres)
  {
    CModule module;
    module.loadAddress = (DWORD)modLoad.BaseAddress;
    module.name = modLoad.Name;
    module.size = modLoad.Size;
    module.signature = modLoad.TimeStamp;
    
    modules.push_back(module);
    
    xbres = DmWalkLoadedModules(&pWalkMod, &modLoad);
  }
  DmCloseLoadedModules(pWalkMod);
  
  return true;
}
Пример #3
0
LPVOID GetXbdmBaseAddress()
{
  PDM_WALK_MODULES pWalkMod = NULL;
  LPVOID pBaseAddress=NULL;
  DMN_MODLOAD modLoad;
  HRESULT error;

  // Look for xbdm.dll, if its loaded...
  while((error=DmWalkLoadedModules(&pWalkMod, &modLoad))==XBDM_NOERR)
  {
    if (stricmp(modLoad.Name, "xbdm.dll")==0)
    {
      // ... and get its base address
      // where the dll is loaded into
      // memory.
      pBaseAddress=modLoad.BaseAddress;
      break;
    }
  }
  if (pWalkMod)
    DmCloseLoadedModules(pWalkMod);

  return pBaseAddress;
}