Не совпадает база в IDA при отладке и при статик анализе

Тема в разделе "WASM.BEGINNERS", создана пользователем Flaer, 24 фев 2022.

Метки:
  1. Flaer

    Flaer Member

    Публикаций:
    0
    Регистрация:
    10 дек 2019
    Сообщения:
    32
    Есть DLL которую я слегка поковырял в статике, подписал для себя некоторые функции, для удобства скинул сегмент в 0x0, что бы смещения были относительные, динамику пока отлаживал в x64dbg, поэтому удобно было из x64dbg и IDA и обратно по RVA ходить
    Надоело мне так туда сюда соваться, решил отладить это дело сразу в иде в динамике через WinDBG, настроил сервер, запускаю приложение, коннект дебаггером, ида все нормально прогружает, даже спрашивает меня о том, а одинаковые ли это модули, ну тот что в памяти нашелся и тот, что у меня в статике на анализе лежит по смещению 0x0, говорю ей да это один и тот же модуль, но тем не менее ида грузит его в память как отдельный модуль, и то что у меня лежит в смещении 0x0 не накладывается на то, что подргузилось отладчиком
    Как мне перенести базу подгруженного отладчиком модуля в ноль, либо тот что я в статике анализировал наложить на тот, что загрузился отладчиком ? Из-за этого у меня весь мой статичный анализ остается на смещении 0x0, а брякнулся я на модуле подгруженном отладчиком, и все мои названия функций, все метки и прочие вещи остались соответственно там же на нуле
    rebase сегмента не дает результата, ида ругается на то, что нет там места
    если удалить сегмент и сместить тот что был в статике на его место, то ида ругается на несоответствие размеров, но dll один и тот же

    И еще вопрос, как ускорить удаленную отладку WinDBG в IDA ? На небольших приложениях работает быстро, нажал F8 сразу оказался на следующей строке, но когда отлаживаешь программу в которой огромное количество модулей загружено, то каждый раз при нажатии F8 жуткие тупняки по пару-тройку секунд
    И можно ли как-то заставить ИДУ в связке с WinDBG не грузить все подряд модули, а загрузить только нужный мне, когда аттачусь к процессу, она начинает мапить в свою базу данных абсолютно все DLL в процессе, их там штук 50 не меньше, а мне нужна всего одна, есть способ заставить иду сделать так ? Потому что я могу спокойно уйти попить чай, прийти и увидеть, что оно еще не до конца загрузилось
     
    Последнее редактирование: 24 фев 2022
  2. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    во второй иде, где отлаживается ехе, смотришь, по какому адресу загружена нужная длл. В первой, где статик анализ, делаешь rebase на этот адрес и дамп базы в файл. В дампе удаляешь вызов delete_all_segments() и импортируешь его во вторую иду.
     
    Flaer нравится это.
  3. Flaer

    Flaer Member

    Публикаций:
    0
    Регистрация:
    10 дек 2019
    Сообщения:
    32
    А по поводу WinDBG, не подскажешь, почему он ужасно тупит минут по 20 в начале отладки, загружая модули, есть возможность заставить его прогружать только некоторые ? И как бороться с тем, что отладка идет очень медленно с такой большой базой модулей, по нажатию F8, прежде чем сделается шаг вперед на одну инструкцию проходит несколько секунд, отлаживать так невозможно
    Отлаживаю именно в иде через виндбг, думаю может есть какие то параметры, которые можно передать при подключении, что бы решить эти проблемы ? Или это из-за того, что отладка удаленная, и тупит из-за интернет соединения? Будет ли быстрей, если вести отладку локально ? У меня ида крякнутая, неизвестно что в нее вшито, поэтому я иду на виртуалке запустил, а софт отлаживаемый запускается на реальной машине.
    --- Сообщение объединено, 25 фев 2022 ---
    И кстати вот это все проделал, у меня модуль все равно грузится не по тому адресу, а когда покопался в файле базы данных, там ImageBase 180000000, хотя до этого проделал rebase, странное поведение
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Может, сохранение символов не настроено, вот он их и качает каждый раз заново.

    Значит как-то не так ты rebase делал. Надеюсь, не в свойствах сегментов оффсеты и базу менял вручную? :)
     
  5. Flaer

    Flaer Member

    Публикаций:
    0
    Регистрация:
    10 дек 2019
    Сообщения:
    32
    Делал rebase по всем канонам, через менюшку иды едит-сеgментс-ребазе програм, и после этого он мне именно такой фокус с базой на 18... выдал
    По поводу символов, у меня стоит прогрузка символов с сервера майкрософт, и кеширование в папке, во всяком случае так настроено в GUI самого виндбг, если ида применяет другие настройки, то где их искать ?
    к тому же символы вместе с pdb ида грузит только для системных модулей, который она может выкачать с сервера майкрософт, символов для пользовательских библиотек там быть не может, плюс в опциях прописал, что бы грузило символы только при необходимости командой .symopt+0x4 (SYMOPT_DEFERRED_LOADS), но тем не менее при аттаче к процессу грузятся все модули которые есть в адресном пространстве, причем как я понял грузится именно не информация символов, а сами модули целиком, ну все адресное пространство занимаемое процессом, из за этого такие тупняки ? ida_rebase.png loading.png
    --- Сообщение объединено, 25 фев 2022 ---
    Так, загрузить по нужному адресу все удалось, единственное, что в статике функции декомпилируются хорошо, а когда под отладчиком, то некоторые из них не декомпилятся, но это ладно, не критично
    Брекпойнты, которыми я в статике пометил важные места так же все послетали, их просто нет, пустой список бряков
    --- Сообщение объединено, 25 фев 2022 ---
    И получается нужно каждый раз когда я перезагружаю программу, делать rebase снова, потому что модули грузятся по разным адресам, или же есть способ заставить иду расставлять все метки\имена относительно базы модуля, что бы можно было указать, вот это вот такой-то модуль, наложи ка мне готовую базу на него
     
  6. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.329
    Ну так на скрине у тебя галочка на ImageBase не стоит. По сути ты оставил прежний адрес образа, но просто подвинул сегменты, начиная с .text
     
  7. Flaer

    Flaer Member

    Публикаций:
    0
    Регистрация:
    10 дек 2019
    Сообщения:
    32
    Не, это просто на скрине стоит там галка, там же видишь и смещение дефолтное, я тогда все как надо сделал поставил на имейдж базе, но чет не сработало, я позже написал, что со второй попытки завелось как надо, может просто баг был, кто ж его знает, но по итогу все хорошо, правда отладка так и лагает ужасно, пошагово шагает секунды по 3 на каждый шаг