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

 eXeL@B —› Основной форум —› От какой опции компилятора зависит наличие переходника (IAT)?
Посл.ответ Сообщение

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

Создано: 06 июня 2010 23:53
· Личное сообщение · #1

Есть два испытуемых, оба собраны MSVC. В одном случае есть переходник, в другом нет.

Какая опция влияет и как можно узнать в каком "режиме" было собрано приложение, чтоб выбрать ту или иную тактику для автоматического анализа?

Задача заключается в нахождении вызова импортированной функции и некоторого рода обработке.



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 07 июня 2010 00:46
· Личное сообщение · #2

кaк бы опции описaны у микрософт.



Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 07 июня 2010 00:59
· Личное сообщение · #3

NikolayD
да ваш очередной бред всем интересен, безусловно

Переходник это JMP надо думать? Это зависит от оптимизации. В MSVC скажем, есть ещё один вид оптимизации, когда API адрес сохраняется в регистр, если сама API вызывается в процедуре дважды или даже чаще. В общем случае вы не сделаете ничего, чтобы сказать компилятору, как ему надо создавать код. В чём на самом деле стоит задача? Что пишете?

Добавлено:
NikolayD, ты хоть одну программу на MSVC написал? Задолбали ранг набивать.




Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 07 июня 2010 08:02
· Личное сообщение · #4

uinor пишет:
Есть два испытуемых, оба собраны MSVC. В одном случае есть переходник, в другом нет.

Переходник будет 100% в режиме Debug с опциями по умолчанию, и 100% его не будет в режиме Release с опциями по умолчанию. Во всех других случаях возможны вариации, в том числе и через #pragma.

-----
Everything is relative...




Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 07 июня 2010 16:08
· Личное сообщение · #5

В дебаге переходники делаются если стоит инкремент компилинг.
(строится таблица JMPов на функции)



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

Создано: 07 июня 2010 20:27
· Личное сообщение · #6

int, пробегаюсь по таблице импорта, нахожу нужную функцию, затем ищу ее вызов в коде и небольшая обработка вокруг вызова (получаю указатели на важные данные - забираю их, все делаю в статике). Ничего сложного.

Приходится формировать ряд "сигнатур" под разные условия компиляции и компиляторы.

Допустим, в msvc билдах встречал вариант без переходника (call dword ptr [x] / FF15[X]), так и с переходником (call [y], jmp dword ptr [x] / E8[Y], FF25[X]).

Vamit, действительно, есть такой момент. Благодарю.

Тут сделать прогноз и проанализировать какой вариант будет встречен заранее - проблематично? Тогда оставляю вариант с поиском по нескольким сигнатурам.


 eXeL@B —› Основной форум —› От какой опции компилятора зависит наличие переходника (IAT)?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати