Сейчас на форуме: vsv1, NIKOLA, r0lka, johnniewalker (+5 невидимых)

 eXeL@B —› Софт, инструменты —› Безграмотный патч в IDA 4.8.0.847
Посл.ответ Сообщение

Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 августа 2005 18:31
· Личное сообщение · #1

Речь идёт о версии IDA, которую можно найти на CD крэкера, распространяемом нашим уважаемым bad_guy'ем. Если автор патча - не сам bad_guy, то это должно проявляться и в других источниках.
Проблема заключается в следующем. В ida.wll (ядре IDA) по RVA 0x8066A (file-offset 0x7FC6A) идёт последовательность из 6 nop'ов, которая явно замещает байты 0F 85 9A 00 00 00. Чуть позже (RVA 0x80672) стоит быйт EB вместо исходного 75. Если у вас (как и у меня) стоит IDA 4.8.0.847, немедленно проверьте это и, если у вас есть этот патч, измените его назад!
Этот патч решает одну не очень важную проблему: он позволяет конвертировать базы от IDA 4.5. Без этого патча конвертация (именно от этой версии) невозможна. Почему - подумайте сами А проблемы при использовании следующие. Теперь (при установленном патче) возникают проблемы поважнее. А именно, при загрузке IDB-базы, сохраненной уже в новой версии IDA, код загрузки будет считать, что база была создана ранней версией и попытается провести преобразование к новой! Это вызовет глюки, наиболее заметный из которых - "неубиваемые" хвосты функций.




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 22 августа 2005 19:22
· Личное сообщение · #2

вот и выкладывай CD, сразу заподозрят в создании патчей...

-----
Всем не угодишь




Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 августа 2005 19:32
· Личное сообщение · #3

Так я же и говорю, что это должно проявляться и в других источниках. У bad-guy слишком высокий класс мастерства и опыт, чтобы делать подобные ошибки. А за выкладывание CD ОГРОМНОЕ спасибо!




Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 22 августа 2005 21:45
· Личное сообщение · #4

diamondz пишет:
У bad-guy слишком высокий класс мастерства и опыт, чтобы делать подобные ошибки

Лестно, но это не совсем правда. Да и ошибки вообще каждый может делать, хотя всё же именно к этому патчу я отношения не имею.

-----
Всем не угодишь





Ранг: 70.5 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 23 августа 2005 02:15
· Личное сообщение · #5

Проверил свою иду , байты описаные выше сопадают , но почемуто никаких проблем замечено небыло ...




Ранг: 209.5 (наставник), 42thx
Активность: 0.10
Статус: Участник
WinCE ARM M@sTeR

Создано: 23 августа 2005 08:10
· Личное сообщение · #6

diamondz
Посмотрел у себя, тоже пропатчено, но никакого преобразования не заметил. Там диалог должен какой-нибудь выскакивать? И, поясни, если не трудно, что такое "неубиваемые" хвосты функций?

-----
Get busy living or get busy dying ©




Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2005 17:07
· Личное сообщение · #7

Функция, в которой всё это происходит, на псевдо-C выглядит примерно так:
...получить структуру inf - информацию о базе данных...
if (inf.version == 0x10) // я не помню, с чего именно там начинается, пусть будет 0x10
{
...преобразовать базу данных версии 0x10 к версии 0x11...
inf.version = 0x11;
}
if (inf.version == 0x11)
{
...преобразовать от версии 0x11 к версии 0x12...
inf.version = 0x12;
}
...skipped...
if (inf.version == 0x29) // <- здесь патч на if (true)
{
...преобразовать от версии 0x29 к 0x2A...
inf.version = 0x2A;
}
...skipped...

IDA, как известно, поддерживает открытие баз данных, созданных в более ранних версиях (с конвертацией к текущей версии). Эта функция как раз и занимается преобразованием к понятной новой версии форме. (Уточнение: в случае, когда нововведение не сводится к простому добавлению новых полей или переименованию чего-то, эта функция просто устанавливает соответствующие флаги, а работа делается в другом месте с сообщением "Upgrading database, please wait").
Теперь пусть открывается IDB-база, созданная уже новой версией. Если патча нет, то все if-блоки проскакиваются и в конце получается то же, что и в начале, а в начале было то, что сохранила IDA при предыдущем выходе из нее. А вот если патч есть, то проскакиваются все if-блоки до патча, а дальше все if-блоки выполняются! Так что теперь в конце уже не то, что надо.
Наиболее заметное проявление этого - "неубиваемые" хвосты функций. Начиная с версии 4.7, IDA поддерживает "разорванные" функции - функции, состоящие из нескольких связных кусков. Выделяется главный связный кусок, а все остальные именуются хвостами (function tail). Это очень полезно при изучении системных файлов от XP (и выше), а вот в обычных программах мне это ещё не встречалось. В результате этого патча при закрытии IDA и последующей загрузкой базы данных хвосты (по крайней мере, некоторые) становятся неудаляемыми: при попытке удалить их (через меню Edit->Functions->Delete function tail или из плагина del_func_tail()) просто ничего не происходит. Если вам такое не встречалось - у вас ещё всё впереди



Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2005 17:13 · Поправил: Модератор
· Личное сообщение · #8

Небольшое уточнение - преобразование к новой версии начинается примерно так:
bool bl = false; // в начале
...
if (inf.version==0x29)
{
if (!bl)
{
int res = ask_yn("Do you want to convert database format %d to current (%d) ?",0x29,0x1E0); 
// сообщение там другое, но смысл такой
if (res<=0) exit(); // если не хотим
}
bl = true;
...
}

Смысл этого такой, чтобы не спрашивать о преобразовании 2 раза. Запатчен также и оператор if(!bl) на if(false), чтобы это происходило молча и без вопросов.



Ранг: 160.1 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 25 августа 2005 17:49
· Личное сообщение · #9

diamondz
дык сделай правильный патч. Хотя имо в 4.8 итак глюков немеряно - одним больше / одним меньше...



Ранг: 3.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2005 18:01
· Личное сообщение · #10

Правильный патч состоит в отсутствии патча Конечно, если у вас нет старых баз данных. А если есть - можно сконвертировать пропатченной версией, сохранить (уже в новой версии) и убрать патч.
Минуточку, а чего это там "глюков немеряно"? Например?



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 25 августа 2005 18:09
· Личное сообщение · #11

Хватит мучить и без того глюкавую IDA PRO 4.8,
она глюкава в оригинале ;)



Ранг: 160.1 (ветеран)
Активность: 0.070
Статус: Участник

Создано: 26 августа 2005 10:13
· Личное сообщение · #12

diamondz пишет:
Правильный патч состоит в отсутствии патча

не подходит.


 eXeL@B —› Софт, инструменты —› Безграмотный патч в IDA 4.8.0.847
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати