Привет всем! Ребята, помогите мне разобраться вот с чем: как сделать так чтобы в SoftIce я мог видеть не голый ассемблерный листинг, а листинг, обработанный мною с помощью IDA? Что-то у меня не получается добиться этого Я делаю так: 1. С помощью я IDA формирую MAP-файл; 2. Потом я этот MAP-файл перегоняю в SYM-файл, с помощью утилитки IDASYM, которую я взял с этого сайта; 3. Далее я этот SYM-файл перегоняю в NMS-файл, с помощью Symbol loader’а; 4. На следующем шаге я открываю этот NMS-файл в Symbol loader’е и выполняю команду Load. Загрузка проходит нормально. 5. Теперь я открываю сам EXE-файл и выполняю команду Load. Мне выдается предупреждение: An error occured during symbol translation/load. Load executable anyway? Я соглашаюсь на продолжение загрузки; 6. Все, SoftIce показывает голый ассемблерный листинг, и я по идее могу (???) переключится в режим показа исходника, сработанного с помощью IDA, нажатием клавиши F3. Но этого переключения почему-то не происходит… Почему у меня не получается это сделать? Команда TABLE показывает что моя таблица символов активна, а команда SYM показывает, что исходник, судя по тем символам которые я вижу, загружен. В чем трабла? Может быть это происходит из-за того, что нужен PDB-файл. Если это так, то как мне его получить? (Исходников исследуемой проги у меня нет) З.Ы.: IDA PRO v4.5.0.762 PC и SoftIce v4.3.0 З.З.Ы: Спасайте, я уже несколько дней мучаюсь с этой проблемой…
MAP-файл не содержит информации об "исходниках". NMS-файл, полученный из него, будет содержать только глобальные имена. Более полно превратить результаты дизассемблирования в NMS-файл позволяет IDA-плагин i2s.
Ты все правильно делал, только exe-ник можно запускать просто так, без лоадера. Главное загрузить nms-файл. Теперь ты должен командой symloc положить таблицу символов на map-карту exe-ника. Т.е. допустим у тебя после ID'ы есть таблица вроде 0001:00000040 unknown_libname_322 0001:00000054 @$xp$11System@Byte 0001:00000058 unknown_libname_323 0001:00000068 @$xp$11System@Word ... 0002:00000054 Buffer 0002:00000074 Caption 0002:000004C0 WndClass 0002:000004F3 aMsSansSerif ... и т.д. делаеш так - map32 proga.exe, получаеш к примеру proga.exe .text 001B:00400000 proga.exe .data 0023:00510000 proga.exe .rsrc 0023:00620000 теперь ложеш нужные тебе сегменты символов (0001:, 0002 на нужные тебе секции проги вот так: symloc 1 1B 00400000 <- теперь символ @$xp$11System@Byte соответствует адресу 001B:00400054 symloc 2 23 00510000 <- символ WndClass будет соответствовать адресу 0023:005104С0 символы должны сразу появиться на экране. Надеюсь понятно пояснил?
Godness Извини за задержку с ответом, я был в off-line... Спасибо за объяснение. Я сейчас попробую это сделать, и позже сообщу, что получилось... Кстати, сразу возникло два вопроса: 1. Я так понимаю, что подобным образом прийдется накладывать каждую строку... Если процедурка не большая, то еще ладно, а что делать, если она большая (к примеру, 500 строк)? 2. После того как я наложу все символы, как мне сохранить результат? Или в следующий раз все придется делать заново?
Godness Все получилось, ну почти все... С метками перехода и именами переменных все OK. Предыдущие два вопроса снимаются)) Но непонятки все еще остались. Допустим, я вижу в листинге, полученном в IDA следующую инструкцию: cmp eax, 111h это мне не нравится, и я заменяю значение 111h, на WM_COMMAND и у меня получается cmp eax, WM_COMMAND все, теперь я хочу эту инструкцию увидеть в SoftICE именно в этом виде, но получаю облом. В символах загруженных в SoftICE вообще нет упоминания о WM_COMMAND... А эта инструкция отображается как обычно cmp eax, 111h Можно ли с этим что-то сделать или нет?
Привет всем! Я сейчас скачал и добавил в IDA новую версию плагина ida2sice_402. И попробовал поработать с ней. И, о чудо, получилось именно то, что мне нужно!!!! В SoftIce я увидел тот же листинг, который был в IDA! Причем со всеми изменениями, которые я туда внес! Одним словом - РУЛЕЗ!!! Причем, те действия, которые я описывал в своем первом посте уже не нужны (точнее, не нужны шаги: 1, 2 и 3), и то, что предложил Godness тоже не понадобилось. Все стало намного проще! green, спасибо за наводку!!!