Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Просмотр состояния процесса "изнутри" самого процесса

5.2K
04 декабря 2008 года
MIKE 247
31 / / 30.04.2005
Суть задачи следующая: мне нужно каким-нибудь образом из пользовательского приложения узнать, по каким адресам были загружены dll-библитеки процессом, в котором и выполняется это приложение.
288
05 декабря 2008 года
nikitozz
1.2K / / 09.03.2007
Вам прямой путь к книге Рихтера "Создание эффективных WIN32 приложений". Поищите в интернете примеры из его книги. Там он решает эту задачу.
Или покопайте в сторону ToolHelp функций. В частности Module32First, Module32Next.
5.2K
06 декабря 2008 года
MIKE 247
31 / / 30.04.2005
Конечно, спасибо за совет по выбору направления поиска! Но, хотелось бы, услышать что-нибудь более конкретное... Наверняка, кто-нибудь уже сталкивался с этим.
288
06 декабря 2008 года
nikitozz
1.2K / / 09.03.2007
Цитата: MIKE 247
Конечно, спасибо за совет по выбору направления поиска! Но, хотелось бы, услышать что-нибудь более конкретное... Наверняка, кто-нибудь уже сталкивался с этим.



Что "конкретней" вы хотите услышать?
Вот вам конкретней: используйте ToolHelp функции Module32First, Module32Next.

А если все же чуть напрячься и воспользоваться поиском, можно найти то, что вам нужно в MSDN

Код:
#include <windows.h>
#include <tlhelp32.h>
#include <stdio.h>
 
//  Forward declarations:
BOOL ListProcessModules( DWORD dwPID );
void printError( TCHAR* msg );
 
void main( )
{
  ListProcessModules(GetCurrentProcessId() );
}

BOOL ListProcessModules( DWORD dwPID )
{
  HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
  MODULEENTRY32 me32;
 
//  Take a snapshot of all modules in the specified process.
  hModuleSnap = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
  if( hModuleSnap == INVALID_HANDLE_VALUE )
  {
    printError( "CreateToolhelp32Snapshot (of modules)" );
    return( FALSE );
  }
 
//  Set the size of the structure before using it.
  me32.dwSize = sizeof( MODULEENTRY32 );
 
//  Retrieve information about the first module,
//  and exit if unsuccessful
  if( !Module32First( hModuleSnap, &me32 ) )
  {
    printError( "Module32First" );  // Show cause of failure
    CloseHandle( hModuleSnap );     // Must clean up the snapshot object!
    return( FALSE );
  }
 
//  Now walk the module list of the process,
//  and display information about each module
  do
  {
    printf( "\n\n     MODULE NAME:     %s",             me32.szModule );
    printf( "\n     executable     = %s",             me32.szExePath );
    printf( "\n     process ID     = 0x%08X",         me32.th32ProcessID );
    printf( "\n     ref count (g)  =     0x%04X",     me32.GlblcntUsage );
    printf( "\n     ref count (p)  =     0x%04X",     me32.ProccntUsage );
    printf( "\n     base address   = 0x%08X", (DWORD) me32.modBaseAddr );
    printf( "\n     base size      = %d",             me32.modBaseSize );
 
  } while( Module32Next( hModuleSnap, &me32 ) );
 
//  Do not forget to clean up the snapshot object.
  CloseHandle( hModuleSnap );
  return( TRUE );
}
 
 
void printError( TCHAR* msg )
{
  DWORD eNum;
  TCHAR sysMsg[256];
  TCHAR* p;

  eNum = GetLastError( );
  FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
         NULL, eNum,
         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
         sysMsg, 256, NULL );

  // Trim the end of the line and terminate it with a null
  p = sysMsg;
  while( ( *p > 31 ) || ( *p == 9 ) )
    ++p;
  do { *p-- = 0; } while( ( p >= sysMsg ) &&
                          ( ( *p == '.' ) || ( *p < 33 ) ) );

  // Display the message
  printf( "\n  WARNING: %s failed with error %d (%s)", msg, eNum, sysMsg );
}
27K
07 декабря 2008 года
Everhest
44 / / 20.07.2008
в большинстве статей о вирусологии даны алгоритмы и исходники
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог