Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2010, 13:14   #1
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию DataDirectory

Есть код
Код:
...
invoke CreateFileMapping,[hFile],0,SEC_IMAGE+PAGE_READWRITE,0,0,0
mov [hMapping],eax
invoke MapViewOfFile,[hMapping],FILE_MAP_ALL_ACCESS,0,0,0
mov [pMapping],eax
mov edi,[pMapping]   

assume edi:IMAGE_DOS_HEADER
add edi,[edi+IMAGE_DOS_HEADER.e_lfanew]

assume edi:IMAGE_NT_HEADERS
mov esi,dword [edi+IMAGE_NT_HEADERS.OptionalHeader.DataDirectory]
DataDirectory всегда ноль, в чём может быть проблема?

вот часть структуры IMAGE_OPTIONAL_HEADER

Код:
SizeOfHeapReserve      dd ?       
SizeOfHeapCommit       dd ?       
LoaderFlags                dd ?        
NumberOfRvaAndSizes  dd ?        
DataDirectory         db 16*sizeof.IMAGE_DATA_DIRECTORY dup (?)
ends
Вообще, патыюсь считать данные из IMAGE_IMPORT_DESCRIPTOR, но никак недолезу до этой структуры. Если у кого есть пример на FASM то делитесь
-.^
int 20h вне форума Ответить с цитированием
Старый 18.08.2010, 13:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Там мутно но не сложно.
Получается что сама директория состоит списка по 5 Dword.
В каждом элементе списка:
3 слово - это смещение на имя библиотеки
4 слово - Смещение на таблицу куда загрузчик адреса реальные положит
5 слово - Смещение на список смещений на имена функций.
И так для каждой библиотеки.

Кода у меня нет но я интересовался этой таблицей недавно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.08.2010, 14:52   #3
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

http://wasm.ru/article.php?article=1002006
Там и пример и подробная статья. Правда там на masm, но отличия в синтаксисе этих ассемблеров просто минимальны, так что должен разобраться.
r9m вне форума Ответить с цитированием
Старый 18.08.2010, 15:36   #4
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию

Цитата:
Там мутно но не сложно.
Получается что сама директория состоит списка по 5 Dword.
В каждом элементе списка:
3 слово - это смещение на имя библиотеки
4 слово - Смещение на таблицу куда загрузчик адреса реальные положит
5 слово - Смещение на список смещений на имена функций.
И так для каждой библиотеки.
ну теорию я вообщем-то знаю
Код:
struct IMAGE_DATA_DIRECTORY
  VirtualAddress  dd ?
  Size            dd ?
ends
Незнаю почему, но у меня VirtualAddress пустой всегда, а там какрас (во 2 "дериктории"), насколько я понял, храниться rva структуры IMAGE_IMPORT_DESCRIPTOR
Код:
struct IMAGE_IMPORT_DESCRIPTOR
OriginalFirstThunk dd ?
TimeDateStamp dd ?
ForwarderChain dd ?
Namel dd ?
FirstThunk dd ?
ends
Цитата:
http://wasm.ru/article.php?article=1002006
Там и пример и подробная статья. Правда там на masm, но отличия в синтаксисе этих ассемблеров просто минимальны, так что должен разобраться.
По этой статье и пробую, невыходит, дня 3 уже в нете копаюсь, не одного примера реализации сего ненашёл на фасме.. А сам как-только непробовал- толку ноль
-.^

Последний раз редактировалось int 20h; 18.08.2010 в 15:39.
int 20h вне форума Ответить с цитированием
Старый 18.08.2010, 16:16   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
подробная статья.
мдя... Такая подробная что аж дрожь берет. извиняюсь за оффтоп, но эта статья ничего толкового не описывает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.08.2010, 07:34   #6
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Самая нормальная статья по теме кстати. Не нудная дока на 20 страниц, уж простите. Ещё вот хороший материал: http://www.wasm.ru/publist.php?list=6#series_14 Цикл : "От зелёного к красному". В первой части есть то, что вам нужно.
r9m вне форума Ответить с цитированием
Старый 19.08.2010, 22:26   #7
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию

Цитата:
Ещё вот хороший материал: http://www.wasm.ru/publist.php?list=6#series_14 Цикл : "От зелёного к красному"
И это читал, я наверно перечитал все статьи, что выдал гугл на "IMAGE_DATA_DIRECTORY" в том числе и англоязычные. Вообщем-то до структуры IMAGE_IMPORT_DESCRIPTOR добрался, но щас на другом немного завис )
-.^
int 20h вне форума Ответить с цитированием
Старый 19.08.2010, 22:49   #8
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

О, а какой-то буржуй ведь перевёл все туториалы Iczelion-a на FASM. Дай бог памяти где, но видел точно. Кто знает - подскажите парню. Там все это под FASM есть.
r9m вне форума Ответить с цитированием
Старый 20.08.2010, 13:55   #9
Crusher
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 27
По умолчанию

Код:
...
assume edi:IMAGE_DOS_HEADER
add edi,[edi.e_lfanew]

assume edi:IMAGE_NT_HEADERS
mov esi,dword [edi.OptionalHeader.DataDirectory]
Crusher вне форума Ответить с цитированием
Старый 21.08.2010, 19:26   #10
int 20h
Падаван
Пользователь
 
Аватар для int 20h
 
Регистрация: 24.11.2009
Сообщений: 18
По умолчанию

Цитата:
Сообщение от r9m Посмотреть сообщение
О, а какой-то буржуй ведь перевёл все туториалы Iczelion-a на FASM. Дай бог памяти где, но видел точно. Кто знает - подскажите парню. Там все это под FASM есть.
Переделанные уроки под фасм находил, на wasm'e, только там не все переведены (а может и я недоглядел), переделанные только те что ориентированны на работу с окнами и тд

Вообщем я сделал примерно так

Код:
invoke MapViewOfFile,[hMapping],FILE_MAP_ALL_ACCESS,0,0,0
mov [pMapping],eax
mov edi,[pMapping]

  assume edi:IMAGE_DOS_HEADER
add edi,[edi+IMAGE_DOS_HEADER.e_lfanew]
  assume edi:IMAGE_NT_HEADERS
mov esi,dword [edi+IMAGE_NT_HEADERS.OptionalHeader.DataDirectory+sizeof.IMAGE_DATA_DIRECTORY+IMAGE_DATA_DIRECTORY.VirtualAddress]

  assume esi:IMAGE_IMPORT_DESCRIPTOR
lea eax,[esi+IMAGE_IMPORT_DESCRIPTOR.Name1]
add eax,[pMapping]
mov eax,[eax]
add eax,[pMapping]
invoke lstrcpyn,buf,eax,100
invoke MessageBox,0,buf,mescapt,0
...
-.^
int 20h вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц