информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСтрашный баг в WindowsВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Уточнение 19.03.04 15:18  Число просмотров: 1319
Автор: Neznaika <Alex> Статус: Member
<"чистая" ссылка>
Извини, а конечная цель - какая?
Не совсем понятно.

Если есть исходники, то зачем тебе IDA?
А в реальной жизни, тебе вряд ли придется исследовать программу, у которой есть Debug Info.
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach