информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Это примерно тоже самое 08.03.06 14:25  Число просмотров: 2221
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
<programming>
Помогите разобраться с IAT! 08.03.06 13:57  
Автор: Kirka Статус: Незарегистрированный пользователь
<"чистая" ссылка>
делал с ImageDirectoryEntryToData из Dbghelp.dll, все работает, но нужно без использования этой dll.
пишу как показано в одной из статей в инете:

HMODULE hModule = GetModuleHandle("Programma.exe");
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER) hModule;
PIMAGE_NT_HEADERS pNTHeaders = (PIMAGE_NT_HEADERS)(hModule + pDosHeader->e_lfanew);
PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)( hModule + pNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
while(1)
{
char *szModName = (LPSTR) (hModule + pImportDesc->Name);
AfxMessageBox(szModName);
pImportDesc++;
}

данная функция по идее должна перечислять имена всех модулей в таблице импорта.
Так вот почему-то первая строка, на которую указывает szModName - какой-то бессмылсенный набор символов.
А после pImportDesc++ она всегда MZh
Что я делаю не так?
Ну хотябы pchar а не hmodule 08.03.06 14:10  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
PCHAR hModule = (PCHAR)GetModuleHandle("Programma.exe");
:) Всё, разобрался, спасибо другой статье. 08.03.06 14:18  
Автор: Kirka Статус: Незарегистрированный пользователь
<"чистая" ссылка>
:) Всё, разобрался, спасибо другой статье.
Вот рабочий код:

HMODULE hModule = GetModuleHandle("Programma.exe");
if(hModule == NULL) {AfxMessageBox("No such module"); return;}
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;
PIMAGE_NT_HEADERS pNTHeaders = (PIMAGE_NT_HEADERS)((DWORD)(hModule) + (DWORD)(pDosHeader->e_lfanew));
PIMAGE_IMPORT_DESCRIPTOR pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR)( (DWORD)(hModule) + (DWORD)(pNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress) );
while(1)
{
char *szModName = (LPSTR)((DWORD)(hModule) + (DWORD)(pImportDesc->Name));
AfxMessageBox(szModName);
pImportDesc++;
}

все что нужно было сделать - добавить каст DWORD к указателям.
Это примерно тоже самое 08.03.06 14:25  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach