Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
Я тоже думал, что должна. Но почему-то символы, которые... 18.03.04 21:43 Число просмотров: 1397
Автор: E-Lenin Статус: Незарегистрированный пользователь
|
> Вроде должна быть загрузка debug info всех распространенных > форматов. Но есть еще вариант: если проект свой, можно
Я тоже думал, что должна. Но почему-то символы, которые легко видит софтайс, ida в упор видеть не хочет.
> сделать map при линковании, и по крайней мере глобальные > символы загрузить из него.
За совет спасибо, про этот вариант я как-то не подумал.... :) Но оказалось, что сам ida грузить мап файл не умеет. Скрипты, которые я нашёл, тоже, похоже, бесполезны. Нашёл вот ещё плагин, loadmap называется. Но он в исходниках - придётся качать sdk и компилить. Но, может, есть более простые решения?
Никто не сталкивался с аналогичной проблемой? IDA версии 4.3.0.740а, проект скомпилен под Delphi7, все дебажные опции, какие только можно, выставлены.
|
<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 файл - и вот оно, счастье! :) Есть символьные имена...
|
|
|