Сейчас на форуме: _MBK_, ManHunter, Magister Yoda, rtsgreg1989 (+9 невидимых)

 eXeL@B —› Основной форум —› Воспрос о загрузке DLL (IDA)
Посл.ответ Сообщение

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

Создано: 17 мая 2005 12:33 · Поправил: SGN
· Личное сообщение · #1

Есть несколько неясных моментов в работе IDA.

Предположим есть EXE файл, использующий для своей работы 3-и (30-ть) DLL.
Есть ли способ заставит IDA загружать ВСЕ библиотеки каждый раз по ОДНИМ И ТЕМ ЖЕ адресам?

Я пока не могу этого добиться.... Как следствие, всякий раз, когда я начинаю заново анализировать DLL-ки, все добавленные мной комментарии, имена функций и переменных исчезают и дисассемблирование превращается в "тихий ужас"...

Был бы очень признателен за разъяснения, как этого "ужаса" можно избежать.

PS
IDA 4.8 (Wzor)



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 13:29 · Поправил: ssx
· Личное сообщение · #2

не совсем понял вопрос. адреса "съезжают" после запуска .exe в дебаггере IDA?
так они и не обязаны грузиться по imagebase



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

Создано: 17 мая 2005 14:00
· Личное сообщение · #3

Скорее всего я не правильно выразился...

Суть в следующем: при запуске отладчика, EXE + DLL загружаются и таинственный процесс познания.... ( это понятно +) )
Анализ программы идёт на ура: обнаруженные функции и переменные благополучно переименовываются, комментарии, как и положено, сохраняются там, где их ввели. Всё прекрасно, до.... до окончания отладки и повторного её перезапуска.

После этого, все (или почти все) метки, имена функций, комменты куда-то деваются (точнее остаются по прежним адресам) и приходится всё делать сначала.

И, как мне кажется, если заставить грузиться все DLL по определённых адресам то моя мега работа, таки, будет продвигаться вперёд.

Вот и вопрос:
Что сделать, чтобы всё мной обнаруженное, добавленное и переименованное оставалось на своих местах?
Кстати, если ли способ, при котором имена функций и переменных сохраняются при загрузке DLL по произвольному адресу, то это было бы ещё лучше!

Спасибо.

PS
Видимо я что-то очень сильно недопонимаю.....



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 14:39
· Личное сообщение · #4

честно скажу, как заставить все dll грузить по одному и тому же адресу - не знаю. наверняка ведь у всех dll imagebase один и тот же прописан. вот система и распихивает их куда попало



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

Создано: 17 мая 2005 14:45
· Личное сообщение · #5

ssx
>честно скажу, как заставить все dll грузить по одному и тому же адресу - не знаю.
ИМХО, достаточно сделать ImageBase разными для каждой длл.



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

Создано: 17 мая 2005 14:53
· Личное сообщение · #6

Тогда все библиотеки будут загружаться каждый раз по одним и тем же адресам.



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 14:57
· Личное сообщение · #7

да, но imagebase я думаю нельзя просто поменять в хедере. нужно его указывать при сборке dll.



Ранг: 384.1 (мудрец)
Активность: 0.250
Статус: Участник
www.int3.net

Создано: 17 мая 2005 15:13
· Личное сообщение · #8

ssx
Вроде бы можно было

-----
Подписи - ЗЛО! Нужно убирать!




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

Создано: 17 мая 2005 15:22
· Личное сообщение · #9

>честно скажу, как заставить все dll грузить по одному и тому же адресу

Хочу для ястности уточнить, что не нужно грузить ВСЕ DLL по ОДНОМУ И ТОМУЖЕ (СТРОГО КОНКРЕТНОМУ +) ) АДРЕСУ!!

Нужно, чтобы загрузившийсь в ПЕРВЫЙ сеанс по произвольно выбранным адресам, в ПОСЛЕДУЮЩИЕ сеансы анализа эти адреса загрузки DLL НЕ МЕНЯЛИСЬ!

Вот...



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 15:26
· Личное сообщение · #10

ну, раз говорят что можно - поставь всем dll разные imagebase и будет тебе счастье



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

Создано: 17 мая 2005 15:39
· Личное сообщение · #11

>ну, раз говорят что можно - поставь всем dll разные imagebase и будет тебе счастье

Прекрасно!!!!!!!!
Осталось выяснить как....



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 15:53
· Личное сообщение · #12

hiew file/enter/f8/f3 ???



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

Создано: 17 мая 2005 15:58
· Личное сообщение · #13

>hiew file/enter/f8/f3 ???

А возможно обойтись только средствами IDA'ы?



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 17 мая 2005 17:05
· Личное сообщение · #14

ну есть конечно в IDA менюшка patch...



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

Создано: 18 мая 2005 09:54
· Личное сообщение · #15

>ну есть конечно в IDA менюшка patch...

Вообще интересно получается...
Чтобы была возможность при очередном сеансе анализа программы видеть ВСЕ изменения внесённые на предъидущем шаге нужно "ковырять" (изменять Image Base) оригинальный библиотеки?
Что-то очень сомнительно... причём вдвойне..

А как же многочисленные .map, .ids, .pdb, gbg, .flirt файлы? +)
Может какой скриптик есть?
Может просто есть способ привязывать имена(коменты) не к абсолютным адресам, а к смещениям относительно адресов загрузки кажной конкретной DLL-ки?

Вопросы, вопросы, вопросы...
От ить, что ж делать то...




Ранг: 266.8 (наставник), 5thx
Активность: 0.220.03
Статус: Участник
very WELL :)

Создано: 18 мая 2005 10:01
· Личное сообщение · #16

Так если сама винда как папало грузит либы. Чего ж теперь делать. Только IB править %)



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

Создано: 18 мая 2005 11:54 · Поправил: TOR
· Личное сообщение · #17

Причем следить за тем, чтобы небыло перекрытия адрессов кода с RTL библиотеками,используемыми твоей программой.



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

Создано: 18 мая 2005 12:13 · Поправил: SGN
· Личное сообщение · #18

При помощи Hiew поменял IВ у двух DLL (из 23)...
И что? А ничего....

IDA начал анализ с того, что произвела rebase иследуемой DLL на новый адрес....
Втора загрузилась тоже Х... знает куда. Все имена во второй DLL слетели нафиг...

Может можно что-то подкрутить в самом EXE-шнике?

PS
Такое ощущения, что только я парюсь с анализом и отладной приложений состоящих из кучи DLL
А остальные либо этого не делают, либо юзают только 1 DLL-ку +((((((



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 18 мая 2005 12:29
· Личное сообщение · #19

остальные это тоже делают. но дебажить .dll в данном случае предпочитают не в IDA



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

Создано: 19 мая 2005 12:13
· Личное сообщение · #20

ты неправильно делаешь. Надо в иду грузить DLL а в дебаггере указать exe в качестве хост-процесса. Тогда ида ее перебазирует, но результат дизасма останется. А ты пытаешься сохранить результаты дизасма дллки при работе в ида с exe-шкой - это неверный подход.



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

Создано: 19 мая 2005 14:58 · Поправил: SGN
· Личное сообщение · #21

infern0

я конечно понимаю, что многого ещё не понимаю, но, право, не настолько же....

Конечно, в качестве дизассемблируемого файла я беру file1.DLL и в project options указываю EXE.
C анализом file1.DLL проблем не возникает. Вся беда в том, что EXE использует не одну DLL, а 23...
Причём, практически в 95% случаев file1.DLL используется НЕ EXE-ом, а ДРУГИМИ DLL-ми.
Думаю не стоит объяснять что это значит и почему у меня теряется отладочная информация в этих ДРУГИХ (во ВСЕХ, кроме анализируемой) DLL.

Так как ПРАВИЛЬНО сделать, чтобы отладочная информация сохранялась как минимум в 2-х (ДВУХ) дллельках????

Кстати, Изменение IB DLL не вариант... В некоторых случаях (да что там скрывать почти всегда) изменённые DLL-ки по указанным адресам не загружаются. Ведь из много (23), а IB менялось только у 2-х +)

PS
Вариант с изменением IB у всех 23-х DLL, просьба, не предлагать +)



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

Создано: 19 мая 2005 17:14
· Личное сообщение · #22

еще раз - принцип работы ИДА состоит в том, что все твои комментарии, имена, etc будут сохранатся ТОЛЬКО для сегментов проги, которая была загружена изначально в ИДУ. Все что грузится дополнительно, грузится во временные сегменты и изменения сделанные там исчезнут при закрытии отладчика. is it clear ?
Что -бы сохранялись изменения сделанные во второй длл, грузи ее в ИДУ изначально. А на двух стульях одной задницей - это не в этом продукте



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

Создано: 19 мая 2005 18:08
· Личное сообщение · #23

infern0

Есть ли в IDA возможность загрузки необходимых DLL (не считая анализируемой) по требуемым адресам?
Возможно ли сохранять имена не по абсолютным адресам, а по смещениям относительно выбранного (например адреса загрузки некоторой DLL)?
Или, например, сохранять имена в некотором файле, а затем при загрузке накладывать их на необходимые адреса?



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

Создано: 19 мая 2005 21:15
· Личное сообщение · #24

теоретически - да, надо плагин написать. И вообще я не саппорт иды, просто ты не совсем понял как она работает и требуешь того что она в принципе не умеет. А все от того что изначально была неверно сформулирована проблема.



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

Создано: 19 мая 2005 22:21
· Личное сообщение · #25

infern0

Н-да...
Ответ достойный работника службы тех-поддержки....

PS
От ить как, если и были какие неясности с сабжем, то после твоих МЕГА разъяснений, они, кАнеШна развеялись...
Спасибо друг!!!



Ранг: 352.4 (мудрец), 4thx
Активность: 0.150
Статус: Участник
retired

Создано: 20 мая 2005 11:18
· Личное сообщение · #26

тебе прямая дорога на www.idapro.ru/forum - скажи все что ты думаешь Ильфаку и выслушай в ответ много приятного, если ты незарегистрированнный пользователь


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


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