Сейчас на форуме: ==DJ==[ZLO], kris_sexy, Wenzel, r0lka (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Export Forwards
Посл.ответ Сообщение

Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 29 мая 2006 16:33 · Поправил: Smon
· Личное сообщение · #1

Пару маленьких вопросов - бывает ли forward в forward'е ? т.е. скажем в kernel32 видим форвард на ntdll32 - например DeleteCriticalSection, которая на самом деле является RtlDeleteCriticalSection, так вот, может ли функция по типу RtlDeleteCriticalSection тоже быть форвардом в ту же или другую библиотеку ?
И еще вопрос - как можно точно определить - что это форвард ? только перебором c поиском точки (2Eh) в диапазоне имени ? (может быть случай, когда мы нашли не форвард а реальный адрес функции - а там есть 2Eh где нить в начале кода)...

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 160.1 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 29 мая 2006 16:35
· Личное сообщение · #2

может
форвард не точкой определяется, а -1 в поле timestamp вроде (точно - надо PE спеки читать)



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 29 мая 2006 16:41 · Поправил: Smon
· Личное сообщение · #3

infern0
Я имел в виду определение точки, если ищем адрес функции DeleteCriticalSection, а вместо адреса лежит форвард. Например в kernel32 лежит форвард - ntdll32.RtlDeleteCriticalSection, соответсно если видим точку - то подгружаем базу ntdll32 и так же находим - но уже адрес реальной функции...
По поводу FFFFFFFFh - далеко не всегда так, т.е. поля нулевые, а форварды есть...
А если форвард на форвард - тогда что ?

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 29 мая 2006 16:51
· Личное сообщение · #4

Гы... Так форвард не так ищется. Если функция является форвардом, то вместа адреса на ее код лежит адрес на строку форварда. Причем строка форварда всегда лежит в предах директории экспорта.
if address>=ExportDirectory.RVA and address<=ExprtDirectory.RVA+ExportDirectory.Size then address is forward.

А насчет вложеностей на wasm'е помнится это обсуждалось. Да и вообще иди на wasm там много статей на эту тему. По крайней мере я всё от туда брал в своё время.

-----
Yann Tiersen best and do not fuck




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 29 мая 2006 17:38
· Личное сообщение · #5

Нашел толковую мысль by DrGolova на васме -> проверять на нахождение данной строки в экспорте...
А вот как с форвард форвардами быть..... неясно, в цикле чтоль проверять ?

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 29 мая 2006 17:49
· Личное сообщение · #6

Так я ж про то и толковал постом выше...

-----
Yann Tiersen best and do not fuck




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 29 мая 2006 21:57
· Личное сообщение · #7

PE_Kill пишет:
Так я ж про то и толковал постом выше...

Что-т я пропустил , спасибо за советы, поищу про вложенность на васме...

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels



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


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