Здравствуйте, nen777w, Вы писали:
N>Мне нужен скрипт для IDA которому я бы подсунул адрес по которому создан такой TBitmap32 а скрипт, сам бы выудил из данных этого класса N>width, height, stride, bpp, и указатель на данные и сгенерировал бы например на выходе файл допустим формата ppm (Portable Pixmap). N>Другими словами надо дамп этих битмапов делать что бы дальше с алгоритмом разбираться.
1. можешь поэкспериментировать с Delphi, например:
uses Graphics;
var
bm : ^TBitmap;
w,h : integer;
begin
bm := 0;
w := bm^.Width;
h := bm^.Height;
write(w,h);
end.
asm:
Project1.dpr.6: bm := 0;
xor ebx,ebx
Project1.dpr.7: w := bm^.Width;
mov eax,[ebx]
mov edx,[eax]
all dword ptr [edx+$2c]
mov esi,eax
Project1.dpr.8: h := bm^.Height;
mov eax,[ebx]
mov edx,[eax]
all dword ptr [edx+$20]
mov ebx,eax
Project1.dpr.9: write(w,h);
mov eax,[$00413dd4]
mov edx,esi
all @Write0Long
mov edx,ebx
all @Write0Long
all Flush
и т.п.
Можешь такие действия сам воспроизвести "на живую", а можешь посмотреть откуда эти методы берут инфу.
Если есть точно такая же версия delphi/библиотеки — можешь прям скомпилировать код на дельфи, который будет дампить всё что нужно.
2. Кстати — изображения в памяти можно найти даже без указателя на TBitmap32.
Вот представь — в каком-то объекте где-то сидит изображение. Что это? — ну с вероятностью 0.971415926 это это просто массив байт аллоцированный целиком, за один раз. Сколько обычное приложение аллоцирует объектов такого характерного размера (если знать точное разрешение, то вообще шикарно)? То есть можно поставить conditional bp на функцию, которая делает аллокацию(какая там в delphi) — и выловить нужный указатель и подождать пока он заполнится...
N>Встречал мнения что Оля удобнее чем IDA, хотя что может быть удобнее hexrays ?
IDA хорош для статического анализа, но для отладки, проверки гипотез "наживую" и т.п., я использовал OllyDbg, в которой много удобных возможностей (+plugin'ы). Да, в IDA есть отладчик, но я его никогда не использовал — ничего сказать не могу.
По OllyDbg рекомендую уже упомянутые статьи-туториалы от Ricardo Narvaja — afaik, у них даже есть перевод на русский(где-то на wasm.ru, должно легко искаться). Да, и не надо пренебрегать crackme заданиями — это поможет получить практические навыки.
Также рекомендую посмотреть на PyDBG — по сути debug api + всякие фишки типа hook'ов, обвёрнутые Python'ом (это просто stand-alone скрипты). Для каких-то сложных/массивных/рутинных динамических скрипто-задач использую его, так как Python я знаю, а скриптовый синтаксис OllyDbg(который afaik asm-оподобный) учить нет никакого желания.
Re[7]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, nen777w, Вы писали:
N>Например сделать автоматический вызов скрипта как только указатель на данные станет равен не 0, ну или не сразу а через 2-3 команды call.
Для этого прийдется добавить обертку для трассировки скриптом. Смотри в справке "Index of debugger related IDC functions"
newbie
Re: Посоветуйте книги/статьи по реверс-инженерингу
Привет, посоветуйте хорошие статьи/книги по реверс-инженерингу.
Желательно с описанием использования современных средств: IDA, HexRays, OllyDbg.
Так получилось что сейчас занимаюсь реверсингом одной программы на писаной на Delphi, алгоритм который меня интересует очень большой и очень размазан,
а я чувствую что не хватает опыта. До этого приходилось заниматься "мелким хулиганством", но и там буквально тыкался как котенок изобретая свои способы и приемы.
Почитать про опыт использования инструментов описанных выше было бы очень полезно (особенно интересует IDA с HexRays).
По интернету полно статей о крекинге (что не интересует) интересуем именно методология реверс-инженеринга и чужой опыт.
Т.е. если брать данный конкретный случай, никаких обманок защит здесь нет, есть просто алгоритм размазанный по программе и есть IDA Pro + Hex Reays как инструмент
, возможности которого я уверен что на 100% не знаю, (+ утилиты типа Delphi Decompiler)
Спасибо.
з.ы.
Надеюсь ясно высказался.
Re: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, nen777w, Вы писали:
N>Привет, посоветуйте хорошие статьи/книги по реверс-инженерингу. N>Желательно с описанием использования современных средств: IDA, HexRays, OllyDbg.
The IDA PRO book. The unofficial guide to the world's most popular disassembler. 2nd Edition
Есть еще Reverse Engineering Code with IDA Pro, но про нее ничего сказать не могу.
Не думаю что оля понадобится если освоить иду.
N>Надеюсь ясно высказался.
Не проще отдать эту работу в аутсорс и заниматься любимым делом?
newbie
Re[2]: Посоветуйте книги/статьи по реверс-инженерингу
N>>Привет, посоветуйте хорошие статьи/книги по реверс-инженерингу. N>>Желательно с описанием использования современных средств: IDA, HexRays, OllyDbg. pva>The IDA PRO book. The unofficial guide to the world's most popular disassembler. 2nd Edition pva>Есть еще Reverse Engineering Code with IDA Pro, но про нее ничего сказать не могу.
Спасибо! Постараюсь найти эти книги.
Сейчас вот читаю мыщиха (Образ мышления IDA Pro)
pva>Не думаю что оля понадобится если освоить иду.
Встречал мнения что Оля удобнее чем IDA, хотя что может быть удобнее hexrays ?
Ну а еще патчить (если нужно) можно только олей.
N>>Надеюсь ясно высказался. pva>Не проще отдать эту работу в аутсорс и заниматься любимым делом?
А сколько за это берут сейчас? Я просто не в курсе.
Re[3]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, nen777w, Вы писали:
pva>>Не думаю что оля понадобится если освоить иду. N>Встречал мнения что Оля удобнее чем IDA, хотя что может быть удобнее hexrays ? N>Ну а еще патчить (если нужно) можно только олей.
Если говорить образно, Оля и Ида — это как Паскаль и Си. И на том и на том инструменте можно сыграть профессионально, но Ида более продвинутый инструмент.
Да, напрямую ида патчить не позволяет. Но это вопрос элементарно решается скриптованием, либо плагинами. Впрочем, многие просто используют hiew, например.
N>А сколько за это берут сейчас? Я просто не в курсе.
Зависит от сложности задачи. Декомпиляция непротекченной делфи не шибко сложная.
newbie
Re[4]: Посоветуйте книги/статьи по реверс-инженерингу
N>>А сколько за это берут сейчас? Я просто не в курсе. pva>Зависит от сложности задачи. Декомпиляция непротекченной делфи не шибко сложная.
Вот вот! А она мне как раз и нужна.
Сейчас сижу расковыриваю алгоритм написанный на Delphi.
В связи с чем возник вот такой таск.
В программе которую я ковыряю используется сторонняя библиотека http://graphics32.org/wiki/, в частности такой класс оттуда: TBitmap32
Я при помощи прекрасного стороннего тула IDR глядя на стандартные классы из VLC которые IDR знает, более-менее разобрался
как Delphi генерирует код для класса, но пока еще туго (надо ставить компилятор и пробовать).
Так вот... Мне нужен скрипт для IDA которому я бы подсунул адрес по которому создан такой TBitmap32 а скрипт, сам бы выудил из данных этого класса
width, height, stride, bpp, и указатель на данные и сгенерировал бы например на выходе файл допустим формата ppm (Portable Pixmap).
Другими словами надо дамп этих битмапов делать что бы дальше с алгоритмом разбираться.
з.ы.
А вообще сейчас заведу наверно тему по IDA c моими глупыми вопросами.... будете меня пинать, наверно, но мне хуже не знать чем бояться спросить
Re[6]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>IDA хорош для статического анализа, но для отладки, проверки гипотез "наживую" и т.п., я использовал OllyDbg, в которой много удобных возможностей (+plugin'ы). Да, в IDA есть отладчик, но я его никогда не использовал — ничего сказать не могу.
IDA хороша для любого анализа. Отладчик там ничуть не хуже оли. Для скриптования поддерживается тот же Python. А если что-то помощнее надо — то С/С++ плагины и Qt интеграция.
newbie
Re[7]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, pva, Вы писали:
pva>IDA хороша для любого анализа. Отладчик там ничуть не хуже оли. Для скриптования поддерживается тот же Python. А если что-то помощнее надо — то С/С++ плагины и Qt интеграция.
Ну супер, особенно учитывая что OllyDbg работает только с x32 кодом.
Re[7]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>В OllyDbg эта фича как минимум лет десять уже
И чё? Какая разница 10 лет фиче или год? Да и учтите, что оля изначально отладчиком была. А ида им стала совсем недавно.
Да и скажу Вам по секрету, бряк на регион памяти нужен ну крайне редко. И в 99.9% случаев можно обойтись без него. Добавили, ну и ладно.
Есть там, конечно, еще недоработки, но новичкам они несущественны.
newbie
Re[9]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, pva, Вы писали:
EP>>В OllyDbg эта фича как минимум лет десять уже pva>И чё? Какая разница 10 лет фиче или год?
afaik, эта фича есть практически во всех тулзах для дебаг-ревёрсинга. например в том же PyDBG.
А разница в том, что хорошо видно кто есть кто.
pva>Да и учтите, что оля изначально отладчиком была. А ида им стала совсем недавно.
Так о том и речь. Поэтому я использовал OllyDbg для отладки.
pva>Да и скажу Вам по секрету, бряк на регион памяти нужен ну крайне редко. И в 99.9% случаев можно обойтись без него. Добавили, ну и ладно.
Он хоть и реализуется как page access modify, но можно использовать как bp на отдельные ячейки памяти.
HW брейкпоинтов всего 4, а этих сколько хочешь.
pva>Есть там, конечно, еще недоработки, но новичкам они несущественны.
Интересно, есть ли в IDA отладчике встроенные фичи-аналоги например для: run trace log, hit count?
Re[10]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP> afaik, эта фича есть практически во всех тулзах для дебаг-ревёрсинга. например в том же PyDBG.
То, что она есть, никак не влияет на ее полезность. Всю жизнь обходился без нее.
Про PyDbg вообще первый раз слышу. Это какая-то сборка напободие Immunity Debugger?
EP>Интересно, есть ли в IDA отладчике встроенные фичи-аналоги например для: run trace log, hit count?
Есть. И даже получше чем в олли. И replay есть и много чего еще, чего в оле не будет еще лет 100 с ее темпами развития.
Я уж не говорю что оля заточена сугубо под х86.
newbie
Re[11]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, pva, Вы писали:
pva>Про PyDbg вообще первый раз слышу. Это какая-то сборка напободие Immunity Debugger?
Нет, Immunity Debugger — это сборка на основе OllyDbg, а PyDBG — это отедльные python'ские скрипты (библиотека отладки).
То есть они работают полностью самостоятельно, без OllyDbg.
Ещё есть аналог — WinAppDbg.
pva>Я уж не говорю что оля заточена сугубо под х86.
ну да, это уже упоминалось выше.
Re[12]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>То есть они работают полностью самостоятельно, без OllyDbg. EP>Ещё есть аналог — WinAppDbg.
Посмотрел WinAppDbg. Это же аналог старинной debug. Какой-то треш для энтузиазистов.
По сути, альтернатив иде сейчас нет. Кил-фичи
— Лучший анализ в статике
— Лучший декомпилятор из известных
— Поддержка кучи процессоров
— Поддержка кучи отладчиков, включая ядреный режим
— Развитые подсистемы скриптов и плагинов
Минусы:
— невменяемая цена на всю эту радость
— поддержка только генуине пользователей
Есть еще мелкие недочеты, но с ними можно жить.
newbie
Re[13]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, pva, Вы писали:
EP>>То есть они работают полностью самостоятельно, без OllyDbg. EP>>Ещё есть аналог — WinAppDbg. pva>Посмотрел WinAppDbg. Это же аналог старинной debug.
Что за debug?
pva>Какой-то треш для энтузиазистов.
Почему трэш?
Вот нужно запустить программу сто раз с разными параметрами, и сдампить некоторые данные, в некоторых местах, по некоторым условиям. Причём эту процедуру нужно повторять не один раз. Удобно же запустить stand-alone скрипт, а не запускать IDA (пусть и со скриптами внутри) и т.п. Тем более эти библиотеки бесплатны — можно ставить на машины без IDA
pva>По сути, альтернатив иде сейчас нет. Кил-фичи
согласен
pva>Минусы: pva> — невменяемая цена на всю эту радость
Есть бесплатные предыдущие версии, правда afaik без hex-rays.
pva> — поддержка только генуине пользователей
Это как? Нет поддержки спричаенных версий?
Re[14]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Что за debug? Я думал Вы старее.
EP>Вот нужно запустить программу сто раз с разными параметрами, и сдампить некоторые данные, в некоторых местах, по некоторым условиям. Причём эту процедуру нужно повторять не один раз. Удобно же запустить stand-alone скрипт, а не запускать IDA (пусть и со скриптами внутри) и т.п. Тем более эти библиотеки бесплатны — можно ставить на машины без IDA
Из аргументов разве что бесплатность принимается. Остальное все можно сделать и в ИДА. Интересно, а скрипты эти антидебаг поддерживают?
EP>Есть бесплатные предыдущие версии, правда afaik без hex-rays.
Кастрированные или слишком старые.
EP>Это как? Нет поддержки спричаенных версий?
Не в том дело. Если ты не оф, то ни багрепорты, ни фичреквести, ни любые доработки от тебя не примут. Какие бы полезные они не были. Там всех делят на владельцев иды и пиратов.
newbie
Re[15]: Посоветуйте книги/статьи по реверс-инженерингу
Я в первую очередь подумал о ней, но как это относится к библиотекам отладки — ума не приложу
Если имелся ввиду интерактивный режим — то я такие скрипты писал не в интерактивом режиме.
pva>Интересно, а скрипты эти антидебаг поддерживают?
Не знаю — я использовал в тех случаях когда anti-debug был не нужен, либо подавалось в PyDBG уже в пропатченном виде.
EP>>Это как? Нет поддержки спричаенных версий? pva>Не в том дело. Если ты не оф, то ни багрепорты, ни фичреквести, ни любые доработки от тебя не примут. Какие бы полезные они не были. Там всех делят на владельцев иды и пиратов.
Ну вроде логично же
Re[16]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, pva, Вы писали:
pva>Да и скажу Вам по секрету, бряк на регион памяти нужен ну крайне редко. И в 99.9% случаев можно обойтись без него. Добавили, ну и ладно.
При анализе защит обычно хардварными бряками и пользуются, + хардварные быстрее в сотни раз обычных мемори, чтото ты загнул про 99.9%
Re[10]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, Жора Корнев, Вы писали:
pva>>Да и скажу Вам по секрету, бряк на регион памяти нужен ну крайне редко. И в 99.9% случаев можно обойтись без него. Добавили, ну и ладно. ЖК>При анализе защит обычно хардварными бряками и пользуются, + хардварные быстрее в сотни раз обычных мемори, чтото ты загнул про 99.9%
=) Сдается мне, здесь стоит различать hwbp r/w и такую вещь как бряк на регион (устанавливается в оле на секцию памяти, при доступе к которой нужно брякнуться).
Хардварные бряки никто не отменял и их полезность не оспаривает.
newbie
Re[3]: Посоветуйте книги/статьи по реверс-инженерингу
N>Сейчас вот читаю мыщиха (Образ мышления IDA Pro)
выкинь каку. оно устарело не на один ледниковый период. сейчас в качестве скриптов в иде используется питон и эта книга совсем не по реверсу.
по реверсу у меня выходила всего одна книга -- фундаментальные основы хакерства. там показано как идентифицировать основные структуры языков высокого уровня. впрочем, она тоже сильно устарела, а мир ушел вперед.
есть одна хорошая книга на анг, но она про обратное инженерное проектирование. там основные концепции реверса. не уверен, что она вам будет интересна, т.к. она вообще не о компьютерах.
pva>>Не думаю что оля понадобится если освоить иду. N>Встречал мнения что Оля удобнее чем IDA, хотя что может быть удобнее hexrays ?
ольга -- это отладчик. она удобнее иды тем, что автоматически распознает все магические адреса в регистрах. типа POP EAX и в EAX какая-то фигня, а это не фигня, а это указатель на API функцию или базовый адрес загрузки DLL. ида об этом молчит, а ольга автоматически комментирует.
N>Ну а еще патчить (если нужно) можно только олей.
здраствуйте, я ваша тетя. с каких это пор идой нельзя патчить?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re[6]: Посоветуйте книги/статьи по реверс-инженерингу
Запомнить значение eax, а лучше открыть еще одну въюху ассемблерного листинга и стать курсором туда.
Замапить этот адрес на вот такую структуру (на данный момент что удалось мне расковырять):
Дождаться когда pBits_40h станет не равным 0, т.е. выделять память под битмапу. Прошагать еще один вызов (обычно после этого в эту память копируют даные).
Стать курсором на начало замапленой области, т.е. туда куда указывал eax, Shift+F2 и потом dump_ppm()
Скрипт вот:
А теперь вопрос гуру, как бы это еще больше автоматизировать?
Например сделать автоматический вызов скрипта как только указатель на данные станет равен не 0, ну или не сразу а через 2-3 команды call.
Спасибо.
з.ы.
Скрипт тоже попинайте если там что то не так.
Re[4]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, мыщъх, Вы писали:
М>ольга -- это отладчик. она удобнее иды тем, что автоматически распознает все магические адреса в регистрах. типа POP EAX и в EAX какая-то фигня, а это не фигня, а это указатель на API функцию или базовый адрес загрузки DLL. ида об этом молчит, а ольга автоматически комментирует.
Мыщьх, ты вообще дано иду видел? В ледниковом периоде наверно?
newbie
Re[4]: Посоветуйте книги/статьи по реверс-инженерингу
N>>Сейчас вот читаю мыщиха (Образ мышления IDA Pro) М>выкинь каку. оно устарело не на один ледниковый период. сейчас в качестве скриптов в иде используется питон и эта книга совсем не по реверсу.
Всеравно полезно почитать было. Тем боле я ж только эту главу и читал.
М>по реверсу у меня выходила всего одна книга -- фундаментальные основы хакерства. там показано как идентифицировать основные структуры языков высокого уровня. впрочем, она тоже сильно устарела, а мир ушел вперед.
Спасибо гляну.
N>>Ну а еще патчить (если нужно) можно только олей. М>здраствуйте, я ваша тетя. с каких это пор идой нельзя патчить?
Ну можно конечно, но мороки больше как мне показалось (хотя вот честно взять скрипт и попробовать я не пробовал).
В оле как то проще, ассемблировать + очень удобная фитча Оли добивать остаток длины команды nop-ами, IDA такое не делает.
Ну а потом Write to exe и все.
Re[11]: Посоветуйте книги/статьи по реверс-инженерингу
От:
Аноним
Дата:
02.05.13 07:25
Оценка:
pva>Про PyDbg вообще первый раз слышу. Это какая-то сборка напободие Immunity Debugger?
есть еще pykd ( pykd.codeplex.com ) для windbg.
например с помощью него на windbg портировали mona.py ( http://redmine.corelan.be/projects/mona — автоматизация поиска и эксплуатации уязвимостей )
Re: Посоветуйте книги/статьи по реверс-инженерингу
Почему-то кажется, что выковыривать какой-то нетривиальный алгоритм из ассемблерного кода это жестокое извращение.
Если алгоритм(например, обработка изображения) на C++ перевести на асм, уже непросто понимать что происходит, а если он еще и оптимизирован(переставлены команды асм'а итп) то что происходит понять становится почти невозможно (то есть проще самому написать).
Re[2]: Посоветуйте книги/статьи по реверс-инженерингу
Здравствуйте, HolyNick, Вы писали:
HN>Почему-то кажется, что выковыривать какой-то нетривиальный алгоритм из ассемблерного кода это жестокое извращение. HN>Если алгоритм(например, обработка изображения) на C++ перевести на асм, уже непросто понимать что происходит, а если он еще и оптимизирован(переставлены команды асм'а итп) то что происходит понять становится почти невозможно (то есть проще самому написать).
ну так reverse engineer'ы не пальцем деланы
Re[2]: Посоветуйте книги/статьи по реверс-инженерингу
HN>Почему-то кажется, что выковыривать какой-то нетривиальный алгоритм из ассемблерного кода это жестокое извращение.
Ну вот как раз похожим делом занимался недавно. Главное ИМХО как можно точнее восстановить структуры, а дальше зная примерно как пишуться приложения на высокоуровневых ЯП и как должен работать алгоритм уже дело техники и навыков.
У меня ушло на все около 5-ти дней.