Посоветуйте книги/статьи по реверс-инженерингу
От: nen777w  
Дата: 24.04.13 22:01
Оценка:
Привет, посоветуйте хорошие статьи/книги по реверс-инженерингу.
Желательно с описанием использования современных средств: IDA, HexRays, OllyDbg.
Так получилось что сейчас занимаюсь реверсингом одной программы на писаной на Delphi, алгоритм который меня интересует очень большой и очень размазан,
а я чувствую что не хватает опыта. До этого приходилось заниматься "мелким хулиганством", но и там буквально тыкался как котенок изобретая свои способы и приемы.
Почитать про опыт использования инструментов описанных выше было бы очень полезно (особенно интересует IDA с HexRays).
По интернету полно статей о крекинге (что не интересует) интересуем именно методология реверс-инженеринга и чужой опыт.
Т.е. если брать данный конкретный случай, никаких обманок защит здесь нет, есть просто алгоритм размазанный по программе и есть IDA Pro + Hex Reays как инструмент
, возможности которого я уверен что на 100% не знаю, (+ утилиты типа Delphi Decompiler)
Спасибо.
з.ы.
Надеюсь ясно высказался.
Re: Посоветуйте книги/статьи по реверс-инженерингу
От: SenorProgramador Голландия riogamestudio.com
Дата: 24.04.13 22:09
Оценка: +1
Здравствуйте, nen777w, Вы писали:

N>Привет, посоветуйте хорошие статьи/книги по реверс-инженерингу.


http://www.ricardonarvaja.info/
Veni, vidi, vici
I came, I saw, I conquered
Re: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 25.04.13 07:06
Оценка:
Здравствуйте, 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]: Посоветуйте книги/статьи по реверс-инженерингу
От: nen777w  
Дата: 25.04.13 12:19
Оценка:
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]: Посоветуйте книги/статьи по реверс-инженерингу
От: SenorProgramador Голландия riogamestudio.com
Дата: 26.04.13 15:04
Оценка:
Здравствуйте, nen777w, Вы писали:

N>А сколько за это берут сейчас? Я просто не в курсе.


А что надо сделать?
"Давай техзаданье, нет техзаданья -- давай..." (с)
Veni, vidi, vici
I came, I saw, I conquered
Re[2]: Посоветуйте книги/статьи по реверс-инженерингу
От: _Ursus_  
Дата: 26.04.13 17:03
Оценка:
Здравствуйте, SenorProgramador, Вы писали:

SP>http://www.ricardonarvaja.info/


Могли бы и по-английски писать.
Re[3]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 27.04.13 07:57
Оценка:
Здравствуйте, nen777w, Вы писали:

pva>>Не думаю что оля понадобится если освоить иду.

N>Встречал мнения что Оля удобнее чем IDA, хотя что может быть удобнее hexrays ?
N>Ну а еще патчить (если нужно) можно только олей.
Если говорить образно, Оля и Ида — это как Паскаль и Си. И на том и на том инструменте можно сыграть профессионально, но Ида более продвинутый инструмент.
Да, напрямую ида патчить не позволяет. Но это вопрос элементарно решается скриптованием, либо плагинами. Впрочем, многие просто используют hiew, например.

N>А сколько за это берут сейчас? Я просто не в курсе.

Зависит от сложности задачи. Декомпиляция непротекченной делфи не шибко сложная.
newbie
Re[4]: Посоветуйте книги/статьи по реверс-инженерингу
От: nen777w  
Дата: 28.04.13 13:42
Оценка:
N>>А сколько за это берут сейчас? Я просто не в курсе.
pva>Зависит от сложности задачи. Декомпиляция непротекченной делфи не шибко сложная.

Вот вот! А она мне как раз и нужна.
Сейчас сижу расковыриваю алгоритм написанный на Delphi.
В связи с чем возник вот такой таск.
В программе которую я ковыряю используется сторонняя библиотека http://graphics32.org/wiki/, в частности такой класс оттуда: TBitmap32
Я при помощи прекрасного стороннего тула IDR глядя на стандартные классы из VLC которые IDR знает, более-менее разобрался
как Delphi генерирует код для класса, но пока еще туго (надо ставить компилятор и пробовать).
Так вот... Мне нужен скрипт для IDA которому я бы подсунул адрес по которому создан такой TBitmap32 а скрипт, сам бы выудил из данных этого класса
width, height, stride, bpp, и указатель на данные и сгенерировал бы например на выходе файл допустим формата ppm (Portable Pixmap).
Другими словами надо дамп этих битмапов делать что бы дальше с алгоритмом разбираться.

з.ы.
А вообще сейчас заведу наверно тему по IDA c моими глупыми вопросами.... будете меня пинать, наверно, но мне хуже не знать чем бояться спросить
Re[5]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 28.04.13 14:38
Оценка: 4 (1)
Здравствуйте, 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[6]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 28.04.13 18:52
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>IDA хорош для статического анализа, но для отладки, проверки гипотез "наживую" и т.п., я использовал OllyDbg, в которой много удобных возможностей (+plugin'ы). Да, в IDA есть отладчик, но я его никогда не использовал — ничего сказать не могу.

IDA хороша для любого анализа. Отладчик там ничуть не хуже оли. Для скриптования поддерживается тот же Python. А если что-то помощнее надо — то С/С++ плагины и Qt интеграция.
newbie
Re[7]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 28.04.13 19:02
Оценка:
Здравствуйте, pva, Вы писали:

pva>IDA хороша для любого анализа. Отладчик там ничуть не хуже оли. Для скриптования поддерживается тот же Python. А если что-то помощнее надо — то С/С++ плагины и Qt интеграция.


Ну супер, особенно учитывая что OllyDbg работает только с x32 кодом.
Re[7]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 28.04.13 19:13
Оценка:
Здравствуйте, pva, Вы писали:

pva>IDA хороша для любого анализа. Отладчик там ничуть не хуже оли.


Вот буквально ткнул пальцем в небо, и с первого раза попал: такая банальная фича как soft memory breakpoint (не hw), в IDA появилась только в 6.3:

Memory access breakpoints are supported since IDA version 6.3 for the following debuggers:

которая вышла только год назад.
В OllyDbg эта фича как минимум лет десять уже
Re[8]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 28.04.13 20:00
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>В OllyDbg эта фича как минимум лет десять уже

И чё? Какая разница 10 лет фиче или год? Да и учтите, что оля изначально отладчиком была. А ида им стала совсем недавно.
Да и скажу Вам по секрету, бряк на регион памяти нужен ну крайне редко. И в 99.9% случаев можно обойтись без него. Добавили, ну и ладно.
Есть там, конечно, еще недоработки, но новичкам они несущественны.
newbie
Re[9]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 29.04.13 06:46
Оценка:
Здравствуйте, 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]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 29.04.13 06:57
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP> afaik, эта фича есть практически во всех тулзах для дебаг-ревёрсинга. например в том же PyDBG.

То, что она есть, никак не влияет на ее полезность. Всю жизнь обходился без нее.
Про PyDbg вообще первый раз слышу. Это какая-то сборка напободие Immunity Debugger?

EP>Интересно, есть ли в IDA отладчике встроенные фичи-аналоги например для: run trace log, hit count?

Есть. И даже получше чем в олли. И replay есть и много чего еще, чего в оле не будет еще лет 100 с ее темпами развития.
Я уж не говорю что оля заточена сугубо под х86.
newbie
Re[11]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 29.04.13 07:11
Оценка:
Здравствуйте, pva, Вы писали:

pva>Про PyDbg вообще первый раз слышу. Это какая-то сборка напободие Immunity Debugger?


Нет, Immunity Debugger — это сборка на основе OllyDbg, а PyDBG — это отедльные python'ские скрипты (библиотека отладки).
То есть они работают полностью самостоятельно, без OllyDbg.
Ещё есть аналог — WinAppDbg.

pva>Я уж не говорю что оля заточена сугубо под х86.


ну да, это уже упоминалось выше.
Re[12]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 29.04.13 09:13
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>То есть они работают полностью самостоятельно, без OllyDbg.

EP>Ещё есть аналог — WinAppDbg.
Посмотрел WinAppDbg. Это же аналог старинной debug. Какой-то треш для энтузиазистов.
По сути, альтернатив иде сейчас нет. Кил-фичи
— Лучший анализ в статике
— Лучший декомпилятор из известных
— Поддержка кучи процессоров
— Поддержка кучи отладчиков, включая ядреный режим
— Развитые подсистемы скриптов и плагинов
Минусы:
— невменяемая цена на всю эту радость
— поддержка только генуине пользователей

Есть еще мелкие недочеты, но с ними можно жить.
newbie
Re[13]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 29.04.13 09:37
Оценка:
Здравствуйте, pva, Вы писали:

EP>>То есть они работают полностью самостоятельно, без OllyDbg.

EP>>Ещё есть аналог — WinAppDbg.
pva>Посмотрел WinAppDbg. Это же аналог старинной debug.

Что за debug?

pva>Какой-то треш для энтузиазистов.


Почему трэш?
Вот нужно запустить программу сто раз с разными параметрами, и сдампить некоторые данные, в некоторых местах, по некоторым условиям. Причём эту процедуру нужно повторять не один раз. Удобно же запустить stand-alone скрипт, а не запускать IDA (пусть и со скриптами внутри) и т.п. Тем более эти библиотеки бесплатны — можно ставить на машины без IDA

pva>По сути, альтернатив иде сейчас нет. Кил-фичи


согласен

pva>Минусы:

pva> — невменяемая цена на всю эту радость

Есть бесплатные предыдущие версии, правда afaik без hex-rays.

pva> — поддержка только генуине пользователей


Это как? Нет поддержки спричаенных версий?
Re[14]: Посоветуйте книги/статьи по реверс-инженерингу
От: pva  
Дата: 29.04.13 12:10
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Что за debug?

Я думал Вы старее.

EP>Вот нужно запустить программу сто раз с разными параметрами, и сдампить некоторые данные, в некоторых местах, по некоторым условиям. Причём эту процедуру нужно повторять не один раз. Удобно же запустить stand-alone скрипт, а не запускать IDA (пусть и со скриптами внутри) и т.п. Тем более эти библиотеки бесплатны — можно ставить на машины без IDA

Из аргументов разве что бесплатность принимается. Остальное все можно сделать и в ИДА. Интересно, а скрипты эти антидебаг поддерживают?

EP>Есть бесплатные предыдущие версии, правда afaik без hex-rays.

Кастрированные или слишком старые.

EP>Это как? Нет поддержки спричаенных версий?

Не в том дело. Если ты не оф, то ни багрепорты, ни фичреквести, ни любые доработки от тебя не примут. Какие бы полезные они не были. Там всех делят на владельцев иды и пиратов.
newbie
Re[15]: Посоветуйте книги/статьи по реверс-инженерингу
От: Evgeny.Panasyuk Россия  
Дата: 29.04.13 12:19
Оценка:
Здравствуйте, pva, Вы писали:

EP>>Что за debug?

pva>Я думал Вы старее.

Я в первую очередь подумал о ней, но как это относится к библиотекам отладки — ума не приложу
Если имелся ввиду интерактивный режим — то я такие скрипты писал не в интерактивом режиме.

pva>Интересно, а скрипты эти антидебаг поддерживают?


Не знаю — я использовал в тех случаях когда anti-debug был не нужен, либо подавалось в PyDBG уже в пропатченном виде.

EP>>Это как? Нет поддержки спричаенных версий?

pva>Не в том дело. Если ты не оф, то ни багрепорты, ни фичреквести, ни любые доработки от тебя не примут. Какие бы полезные они не были. Там всех делят на владельцев иды и пиратов.

Ну вроде логично же
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.