информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Спасибо за скрипт. 26.03.04 11:42  Число просмотров: 1287
Автор: E-Lenin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вот idc-скрипт, которым я пользовался. Переписать его под

Спасибо за скрипт.
В конце концов, проблема решилась подобным образом. Не без гимороя скомпилил плагин loadmap под свою версию sdk, загрузил map файл - и вот оно, счастье! :) Есть символьные имена...
<programming>
Как заставить IDA читать Debug Info из программ написанных на Delphi? 17.03.04 14:47  
Автор: E-Lenin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Столкнулся с такой ситуацией. Имеем проект на Delphi. Компилим debug build, грузим в softice loader. В итоге имеем вызовы функций вида call TForm@TComp@GetVersion (например) и осмысленные имена переменных вида [ebp-TempString].
Загружаем тот екзешник в IDA и имеем уже текст вида Call sub_xxx, переменные - [ebp-var1].
Вопросы, собственно, следующие: можно ли научить IDA понимать символьную информацию из екзешника? Или, может, есть плагины/скрипты для конвертации софтайсных *.nms файлов в понятных IDA формат?
Для конвертации *.map в *.sym такое есть, а вот если надо обратно - как быть? Или, может, я чего не так делаю, может при компиляции надо какую-нибудь хитрую опцию задать?
Всем заранее благодарность за дельные советы.
Уточнение 19.03.04 15:18  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
Извини, а конечная цель - какая?
Не совсем понятно.

Если есть исходники, то зачем тебе IDA?
А в реальной жизни, тебе вряд ли придется исследовать программу, у которой есть Debug Info.
Да не извиняйся, я объясню... :) Итак, имеем программу,... 19.03.04 19:38  
Автор: E-Lenin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Извини, а конечная цель - какая?
> Не совсем понятно.

Да не извиняйся, я объясню... :) Итак, имеем программу, программа имеет защиту от стороннего производителя, поставляемую в виде дельфи-компонента. Сам компонент можно скачать, в составе есть examples. Поскольку Flair идашный с дельфийными модулями работать не умеет, компилим example в дебаг моде, грузим в IDA, выясняем все символьные имена. После чего применяем idb2pat или idb2sig, получаем сигнатуры для интересующих нас функций дельфийного компонента. Полученные сигнатуры применяем на исходную программу.

> Если есть исходники, то зачем тебе IDA?

Надеюсь, я достаточно понятно выше объяснил...

> А в реальной жизни, тебе вряд ли придется исследовать
> программу, у которой есть Debug Info.

Ну эта... Я как бы и раньше смутно догадывался... :) Спасибо, теперь ты развеял все мои сомненья.... :)
А что за защита-то? 20.03.04 18:01  
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
> Полученные сигнатуры применяем на исходную программу..
>
Ясно. А что за защита-то (по времени, по ключу, etc..)?

Может, тогда линк на программу оставишь, мы все дружно посмотрим :)
Вроде должна быть загрузка debug info всех распространенных... 17.03.04 17:55  
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вроде должна быть загрузка debug info всех распространенных форматов. Но есть еще вариант: если проект свой, можно сделать map при линковании, и по крайней мере глобальные символы загрузить из него.
Я тоже думал, что должна. Но почему-то символы, которые... 18.03.04 21:43  
Автор: E-Lenin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вроде должна быть загрузка debug info всех распространенных
> форматов. Но есть еще вариант: если проект свой, можно

Я тоже думал, что должна. Но почему-то символы, которые легко видит софтайс, ida в упор видеть не хочет.

> сделать map при линковании, и по крайней мере глобальные
> символы загрузить из него.

За совет спасибо, про этот вариант я как-то не подумал.... :) Но оказалось, что сам ida грузить мап файл не умеет. Скрипты, которые я нашёл, тоже, похоже, бесполезны. Нашёл вот ещё плагин, loadmap называется. Но он в исходниках - придётся качать sdk и компилить. Но, может, есть более простые решения?
Никто не сталкивался с аналогичной проблемой? IDA версии 4.3.0.740а, проект скомпилен под Delphi7, все дебажные опции, какие только можно, выставлены.
IDC эта версия понимает? 22.03.04 16:26  
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот idc-скрипт, которым я пользовался. Переписать его под слегка другой входной формат наверное несложно.
static main(void)
{
auto mapname,file,str ;
auto seg,offset,c,i,j,n ;

mapname = AskStr("*.map","Enter map file name:") ;
file = fopen(mapname,"rt") ;
while(1)
{
str = readstr(file) ;
if ( str == -1 ) return ;
if ( strstr(str,"Publics by Value") != -1 ) break ;
}
Message("Starting...\n");
while(1)
{
str = readstr(file) ;
if ( str == -1 ) break ;
n = strlen(str) ;
if ( n < 6 ) continue ;
c = strstr(str,":") ;
if ( c == -1 ) continue ;
seg = xtol(str) ;
for(i=0;i<n;i=i+1) if ( substr(str,i,i+1) == ":" ) break ;
if ( i >= n ) continue ;
offset = xtol(substr(str,i+1,-1)) ;
for(1;i<n;i=i+1) if ( substr(str,i,i+1) <= " " ) break ;
if ( i >= n ) continue ;
for(1;i<n;i=i+1) if ( substr(str,i,i+1) > " " ) break ;
if ( i >= n ) continue ;
for(j=i;j<=n;j=j+1) if ( substr(str,j,j+1) <= " " ) break ;
Message("inserting name %s at %d\n",substr(str,i,j),offset);
if ( MakeName(offset,substr(str,i,j)) ) continue ;
Message("Failed insert name ") ;
Message(substr(str,i,j)) ;
Message("\n") ;
}
fclose(file) ;
Message("LoadMap32 finished\n");
}
Спасибо за скрипт. 26.03.04 11:42  
Автор: E-Lenin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вот idc-скрипт, которым я пользовался. Переписать его под

Спасибо за скрипт.
В конце концов, проблема решилась подобным образом. Не без гимороя скомпилил плагин loadmap под свою версию sdk, загрузил map файл - и вот оно, счастье! :) Есть символьные имена...
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach