Сейчас на форуме: asfa, _MBK_ (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Не понятный вызов функции Dll
Посл.ответ Сообщение

Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 августа 2009 10:11
· Личное сообщение · #1

Есть exe файл, в нем динамически подгружается длл, следующий код вызывает функции из этой длл:

CODE:008C8797 mov eax, [ebp+var_4]
CODE:008C879A mov eax, [eax+4]
CODE:008C879D push eax
CODE:008C879E mov eax, [eax]
CODE:008C87A0 call dword ptr [eax+70h]

но вот дело в том, что в длл всего 5 функций, которые экспортируются(смотрел IDA и dllExp), а call dword ptr [eax+70h] указывает никак не начало одной из этих 5-ти фукнций:

Group_List.dll:01C2DB52 add dword ptr [esp+4], 0FFFFFF34h
Group_List.dll:01C2DB5A jmp loc_1C3682C
....
....
Group_List.dll:01C3682C loc_1C3682C: ; CODE XREF: Group_List.dll:01C2DB5Aj
Group_List.dll:01C3682C push ebp
Group_List.dll:01C3682D mov ebp, esp
Group_List.dll:01C3682F add esp, 0FFFFFFECh
Group_List.dll:01C36832 push ebx
Group_List.dll:01C36833 push esi
Group_List.dll:01C36834 push edi
Group_List.dll:01C36835 xor eax, eax
Group_List.dll:01C36837 mov [ebp-14h], eax

Как такое может быть или я что-то недопонимаю? Это так компилятор заоптимизировал или защита такая?



Ранг: 19.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 09 августа 2009 10:52 · Поправил: Neo32
· Личное сообщение · #2

Экспортируемые функции могут вызывать свои функции в длл , почему бы и экзе её не вызвать .не думаю что это оптимизация...



Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 09 августа 2009 12:12 · Поправил: AVladislav
· Личное сообщение · #3

я знаю, что они могут их вызывать, но каким образом она вызывается если она не экспортируемая? Она ведь видна только самой Dll, никак не ехе, или я туплю?

И как мне тогда понять, какую функцию мне вызвать? В этой длл хранятся функции чтения/записи в файл, мне их нужно использовать в своей программе.



Ранг: 19.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 09 августа 2009 13:04 · Поправил: Neo32
· Личное сообщение · #4

Знакомый код , напоминает вызов com объекта. Все адреса хранятся в таблице . Посмотри какой нибудь пример использующий например директ икс на асме и поймеш как все это вызывается.названия функций напиши которые экспортируются.или лучше саму длл выложи




Ранг: 216.9 (наставник), 85thx
Активность: 0.310.15
Статус: Участник
X-Literator

Создано: 12 августа 2009 13:05 · Поправил: Crawler
· Личное сообщение · #5

AVladislav
Если тебе известен базовый адрес загрузки длл, а также известны смещения всех функций (предположим, я не знаю, какие именно длл используются), то отсюда вытекает, что ты можешь посчитать адрес функции в памяти. Что же мешает вызывать эти функции? Я тебе могу вызвать функцию из длл так, что ты никогда не догадаешься, что же и как именно я вызвал.
Я могу, например, вообще украсть часть данных из функции и переместить в exe, исполнить эту часть непосредственно в загрузочном файле, а потом уже передать управление куда-нибудь в середину функции (это stolen bytes называется). Можно вообще вызывать функции из длл по хэшу от имени. Это не оптимизация.

-----
Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей.





Ранг: 126.7 (ветеран)
Активность: 0.140
Статус: Участник
#CCh

Создано: 12 августа 2009 14:58
· Личное сообщение · #6

Crawler пишет:
исполнить эту часть непосредственно в загрузочном файле

сильно сказал

-----
invoke OpenFire



 eXeL@B —› Вопросы новичков —› Не понятный вызов функции Dll
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати