Reverse Engineering
От: nen777w  
Дата: 29.11.10 19:58
Оценка:
Решил попробовать для себя приобрести этот навык, пока что ради развлечения мозга а там посмотрим может затянет.
Из моих навыков RE на сегодня имею следующее, в хронологическом порядке:
— был успешный опыт взлома первых версий Xoreax IncrediBuild, тогда использовал SoftIce.
— есть успешный опыт взлома серии продуктов одной известной компании, имя тут называть не буду,
ломал что бы показать знакомому который там работает насколько хреново они сделали защиту триала. Юзал: IDA, OllyDbg
— есть успешный опыт взлома других программных продуктов, но только для себя. тоже: IDA, OllyDbg, PEiD

знание ассемблера есть, но оцениваю их как слабые, по реверс инженерингу вообще ничего не знаю.
Сегодня подумал что интересно было бы научиться, с чего начать посоветуют матёрые товарищи в этом деле?


22.12.10 01:01: Перенесено модератором из 'Низкоуровневое программирование' — kochetkov.vladimir
30.12.10 03:08: Перенесено модератором из 'Информационная безопасность' — Valery A. Boronin
Re: Reverse Engineering
От: Аноним  
Дата: 30.11.10 07:41
Оценка:
N>знание ассемблера есть, но оцениваю их как слабые, по реверс инженерингу вообще ничего не знаю.
N>Сегодня подумал что интересно было бы научиться, с чего начать

начать стоит с этого
http://www.wasm.ru/publist.php
Re: Reverse Engineering
От: Black Fregat  
Дата: 30.11.10 13:50
Оценка:
Прежде искусства реверсинга я бы поставил искусство разбора чужих текстов. Можете Вы без всякого реверсинга просто взять чужой текст в исходниках и понять, что там делается, зачем и как? А ведь для реверсинга надо понимать то же самое уже по коду.

Для обучения собственно реверсингу я бы предложил брать исходные тексты разной степени сложности, компилировать их в бинарники, потом загружать в тот же IDA — и медитировать. Основа навыка реверсинга — это узнавание конструкций, когда смотришь на целые куски кода и сразу соображаешь, зачем они тут. Потом брать готовые программы, для которые примерно представляешь, как сам бы написал. И практика, практика, практика. Теорию читать по мере необходимости — как затык, так на сайт, почитать, что умные люди пишут
Re: Reverse Engineering
От: pva  
Дата: 30.11.10 22:04
Оценка: 2 (1) +1 -1
Здравствуйте, nen777w, Вы писали:

N>Решил попробовать для себя приобрести этот навык, пока что ради развлечения мозга а там посмотрим может затянет.

А смысл? Ради развлечения мозга поучаствуйте в оpen source.
newbie
Re[2]: Reverse Engineering
От: Аноним  
Дата: 01.12.10 15:59
Оценка:
Здравствуйте, Black Fregat, Вы писали:

BF>Прежде искусства реверсинга я бы поставил искусство разбора чужих текстов. Можете Вы без всякого реверсинга просто взять чужой текст в исходниках и понять, что там делается, зачем и как? А ведь для реверсинга надо понимать то же самое уже по коду.


BF>Для обучения собственно реверсингу я бы предложил брать исходные тексты разной степени сложности, компилировать их в бинарники, потом загружать в тот же IDA — и медитировать. Основа навыка реверсинга — это узнавание конструкций, когда смотришь на целые куски кода и сразу соображаешь, зачем они тут. Потом брать готовые программы, для которые примерно представляешь, как сам бы написал. И практика, практика, практика. Теорию читать по мере необходимости — как затык, так на сайт, почитать, что умные люди пишут


+1
чуствуется рука профи, а если не профи. то человека хорошо разбирающегося в этом.

я бы добавил еще такой вариант
просите кого то что бы скомпилировали вам без отладочной информации
два разных проекта под две платформы к примеру Windows и Unix
соурсы которого вы даже не видели
размер бинаря пусть будет для начала около мегабайта или полтора
и медитируете
пару часов времени каждый день на три месяца, это считайте что вы вообще реверсингом не занимаетесь
минимум часов по 10, на три месяца
а потом попросите что бы вам дали теже буилды с отладочной инфой и сами исходники
и проверяйте себя
потом другой проект, и так хотя бы три четыре проекта разберите

даже для новичка который пройдет такой курс, это будет уже не плохим жирнючим плюсиком, если вы достигните хороших навыков

из книг я бы ничего не посоветовал
в них много воды, и всего несколько конструкций. к примеру по тем же vtable
а этого очень мало
увы, искусство реверса сечас это восновном опыт.
Re: Reverse Engineering
От: ipse Россия  
Дата: 22.12.10 08:07
Оценка: :)))
Здравствуйте, nen777w, Вы писали:

N>Сегодня подумал что интересно было бы научиться, с чего начать посоветуют матёрые товарищи в этом деле?

С вдумчивого изучения УК
Re: Reverse Engineering
От: Jakop Россия https://wmspanel.com
Дата: 22.12.10 23:54
Оценка: 5 (2)
Здравствуйте, nen777w, Вы писали:

к разговору о реверсе. Вот это меня просто изумило. Думал я что-то понимаю в реверсе, но это просто высший пилотаж:
здесь
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
Re: Reverse Engineering
От: pfinkelshtein Израиль http://www.truscont.com
Дата: 03.01.11 20:06
Оценка: +1
Здравствуйте, nen777w, Вы писали:

N>- был успешный опыт взлома первых версий Xoreax IncrediBuild, тогда использовал SoftIce.

N>- есть успешный опыт взлома серии продуктов одной известной компании, имя тут называть не буду,
N> ломал что бы показать знакомому который там работает насколько хреново они сделали защиту триала. Юзал: IDA, OllyDbg
N>- есть успешный опыт взлома других программных продуктов, но только для себя. тоже: IDA, OllyDbg, PEiD

взлом и reverse engineering немного разные вещи. очень часто для взлома не требуется разбираться в чужом коде.

N>знание ассемблера есть, но оцениваю их как слабые, по реверс инженерингу вообще ничего не знаю.

N>Сегодня подумал что интересно было бы научиться, с чего начать посоветуют матёрые товарищи в этом деле?

во первых зачем? за взлом не платят, да и по голове не погладят. но если правильно понимать цели для которых используется reverse engineering то можно найти полезное применение.
Peter Finkelshtein, skype: pfinkelshtein
Re[2]: Reverse Engineering
От: мыщъх США http://nezumi-lab.org
Дата: 03.01.11 20:41
Оценка:
Здравствуйте, Jakop, Вы писали:

J>Здравствуйте, nen777w, Вы писали:


J>к разговору о реверсе. Вот это меня просто изумило. Думал я что-то понимаю в реверсе, но это просто высший пилотаж:

J>здесь
и это хорошая иллюстрация того, что реверсер должен хорошо разбираться не только в ассемблере и операционной системе, но и куче смежных областей, а так же представлять как пишутся программы.

так же это хорошая иллюстрация генеральной тактики реверсинга, заключающейся в последовательной генерации и проверке рабочих гипотез. типа: допустим, утверждение A истинно, тогда из него следует B, которое можно проверить. если B ложно, то генерируем следующее утверждение. гипотезы обычно следуют в порядке усложнения их проверки, а так же исходя из принципа "не переусложняй" (если о работе программы ничего не известно, но следует начинать, что программисты выбрали что-то очень простое и базовое, а не стали мудрить).

мне достаточно часто приходилось реверсировать алгоритмы (в основном для работы с графикой) и 90% работы выполнялось без дизассемблера и отладчика вообще, т.к. лезть внутрь даже простого графического фильтра, удаляющего артефакты, бессмысленно -- дизассемблер ничего умного не покажет и мы утонем в деталях. а вот если мы генерируем разные изображения и сравниваем вход с выходом, то мы получаем гораздо больше пищи для анализа.

аналогичным образом я реверсил драйвер NTFS, выполняя различные операции с ФС и сравнивая дисковые образы до и после. без дизассемблирования и точек останова, впрочем, полностью обойтись не удалось, но анализу подверглась лишь небольшая часть драйвера и я уже отчетливо представлял что и где искать.

так же во множестве реверсировал разные нестандартные форматы типа "сохранений" игр. в простейшем случае это вообще тривиальная операция. типа сохранился, походил взад-вперед, сохранился, выстрелил, сохранился. сравнил три образа. отличия первого и второго образа, очевидно, к патронам отношения не имеют -- отбрасываем их сразу. а вот между вторым и третьим -- уже смотрим. однако, на практике размер сохранений зачастую отличается, т.к. файл имеет сложную внутреннюю структуру с полями переменной длинны и потому приходится писать более сложные компараторы. так же хучатся все операции чтения и позиционирования -- т.к. зачастую файл читается не в один проход.

реконструкция сетевых протоколов происходит примерно так же. в основном это работа черным ящиком, над которым проводятся разные эксперименты. дизассемблеруются только небольшие участки кода для уточнения поведения программы в случаях, которые сложно смоделировать.
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[2]: Reverse Engineering
От: мыщъх США http://nezumi-lab.org
Дата: 03.01.11 20:56
Оценка:
Здравствуйте, pfinkelshtein, Вы писали:

P>Здравствуйте, nen777w, Вы писали:


P>взлом и reverse engineering немного разные вещи. очень часто для взлома не требуется разбираться в чужом коде.

так ведь и для реверсинга необязательно спускаться на уровень кода. допустим, нас интересует как программа ухитряется, ну... допустим, выводить японские шрифты в консольном приложении на русской винде при том, что фонтов у нас нет. начинаем перехватывать API и сообщения и видим, что программа их рисует через GDI. задаемся вопросом -- а как она себя поведет в полноэкранном режиме? и видим, что -- а никак. в полноэкранном GDI отдыхает. и мы разобрались с этим вообще не спускаясь на уровень дизасма.

N>>знание ассемблера есть, но оцениваю их как слабые, по реверс инженерингу вообще ничего не знаю.

N>>Сегодня подумал что интересно было бы научиться, с чего начать посоветуют матёрые товарищи в этом деле?
P>во первых зачем? за взлом не платят, да и по голове не погладят.
ну... как сказать... прежде, чем научиться защищать, необходимо знать как хакеры это реально ломают. т.е. познакомиться с их методами работы и имеющимся инструментарием.

> но если правильно понимать цели для которых используется reverse engineering то можно найти полезное применение.

а что за цели-то? цели у всех разные. наиболее емкая область реверсинга (из числа легальных) — секьюрити. за ней следует анализ закрытых форматов данных и протокол для создания альтернативных клиентов. за все остальное уже практически ничего не платят, а если и платят, то не как за основную деятельность (допустим, вы пишите панельку к браузеру и вам интересно как конкурентам удалось реализовать эту фичу, вы реверсите их продукт втихую, т.к. это не совсем легальная деятельность уже получается, но... не пойман -- не вор и хрен докажешь откуда вы сперли эту идею, но платят вам не за реверсинг, а за написание панелек).
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[3]: Reverse Engineering
От: pfinkelshtein Израиль http://www.truscont.com
Дата: 03.01.11 21:14
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>так ведь и для реверсинга необязательно спускаться на уровень кода. допустим, нас интересует как программа ухитряется, ну... допустим, выводить японские шрифты в консольном приложении на русской винде при том, что фонтов у нас нет. начинаем перехватывать API и сообщения и видим, что программа их рисует через GDI. задаемся вопросом -- а как она себя поведет в полноэкранном режиме? и видим, что -- а никак. в полноэкранном GDI отдыхает. и мы разобрались с этим вообще не спускаясь на уровень дизасма.


мониторинг API позволяет воспроизвести последовательность действий, соответственно набросать примерный "код" и только имея примерный код начинается работа по reverse engineering. мониторинг API для взлома в большинстве случаев сводится к поиску "критичной" функции, например обращения к реестру после ввода ключа, или обращению к файлу и т.п.

N>>>знание ассемблера есть, но оцениваю их как слабые, по реверс инженерингу вообще ничего не знаю.

N>>>Сегодня подумал что интересно было бы научиться, с чего начать посоветуют матёрые товарищи в этом деле?
P>>во первых зачем? за взлом не платят, да и по голове не погладят.
М>ну... как сказать... прежде, чем научиться защищать, необходимо знать как хакеры это реально ломают. т.е. познакомиться с их методами работы и имеющимся инструментарием.

игра в кошки-мышки. только не всегда мышка имеет время побыть кошкой чтобы знать как убегать.

>> но если правильно понимать цели для которых используется reverse engineering то можно найти полезное применение.

М>а что за цели-то? цели у всех разные. наиболее емкая область реверсинга (из числа легальных) — секьюрити. за ней следует анализ закрытых форматов данных и протокол для создания альтернативных клиентов. за все остальное уже практически ничего не платят, а если и платят, то не как за основную деятельность (допустим, вы пишите панельку к браузеру и вам интересно как конкурентам удалось реализовать эту фичу, вы реверсите их продукт втихую, т.к. это не совсем легальная деятельность уже получается, но... не пойман -- не вор и хрен докажешь откуда вы сперли эту идею, но платят вам не за реверсинг, а за написание панелек).

экономически не выгодно разбирать софт конкурентов. проще переманить разработчика из конкурирующей конторы.
Peter Finkelshtein, skype: pfinkelshtein
Re[4]: Reverse Engineering
От: мыщъх США http://nezumi-lab.org
Дата: 03.01.11 21:45
Оценка: 3 (1) +1
Здравствуйте, pfinkelshtein, Вы писали:

P>Здравствуйте, мыщъх, Вы писали:


P> мониторинг API позволяет воспроизвести последовательность действий, соответственно набросать

P> примерный "код" и только имея примерный код начинается работа по reverse engineering.
последовательность API + аргументы -- зачастую (но не всегда) это все, что нам требуется. ну там еще вытащим адреса возврата и глянем на control flow плюс распознанные библиотечные функции. все еще не понятно как оно работает? ну тогда да... тогда начинаем рыть вглубь.

> мониторинг API для взлома

стоп. я не говорил о взломе.

> в большинстве случаев сводится к поиску "критичной" функции, например обращения

> к реестру после ввода ключа, или обращению к файлу и т.п.
как раз-таки при взломе мониторинг API зачастую бесполезен. допустим, из чтения документации становится ясно, что программа хочет ключевой файл. какие функции будем мониторить? к тому же успешное чтение ключевого файла не гарантирует его успешной работы. грубо говоря, программа прочитала файл и положила его в реестр. а при перезапуске стала вычитывать из реестра, чтобы проверить его опять. а если она еще и в иннет лазит... причем в иннет может лазить манагер обновлений и тут API Функции вообще ничего не дадут, т.к. манагер обновлений работает по сценарию "взял-и-передал", а проверка валидности ключа осуществляется совсем в другом месте и без API.

М>>ну... как сказать... прежде, чем научиться защищать, необходимо знать как хакеры это реально ломают. т.е. познакомиться с их методами работы и имеющимся инструментарием.

P>игра в кошки-мышки. только не всегда мышка имеет время побыть кошкой чтобы знать как убегать.
ага. и потому мы имеем кучу защит, которые ломаются в день выхода релиза даже начинающими хакерами. не, я не против. пускай защита будет тривиальной и тупой до ужаса, т.к. часть людей все равно купит, а часть будет упорно искать варез, но если мы все-таки приняли решение защищать, то тут без знаний о противнике никуда...

P>экономически не выгодно разбирать софт конкурентов.

P>проще переманить разработчика из конкурирующей конторы.
да что вы говорите. во-первых, по американским законом переманивать даже более незаконно чем реверсить (особенно с учетом того, что факт реверса трудно доказать, особенно если он осуществлялся на местах без санкции руководства).

во-вторых, обычно неясно кто же именно писал этот кусок кода и кого конкретно переманивать. даже если это open-source часто бывает так, что автор у нас один (и его имя в каждом сорце), но реально проект вдохновлен человеком, который в тени и просто дает автору советы по технически сложным вопросом и без него автор далеко не уплывет.

в-третьих, ну я вот тут нашим манагерам говорю, что есть супер-талантливый человек, побочным продуктом деятельности которого является опен-сорс проект, который на 60% дублирует наш функционал и если его нанять на обычную зарплату и дать ему заниматься только этим -- фирма заработает миллионы баксов. а фиг там... бюрократия...

в-четвертых, _ВАМ_ ваш манагер ставит задачу по принципу -- а вот у конкурентов это есть, следовательно, у нас должно быть не хуже. и что вы ему ответите? нанимайте конкурентов путь они вам все это пишут? а не боитесь услышать в ответ -- а на фига ты такой умный нам нужен? за что мы тебе вообще деньги платим?

в-пятых, хоть американцы (и в меньшей степени европейцы) и порхают с цвета на цветок как пчелы, многие предпочитают сидеть на одном месте. вот взять к примеру меня. при всей моей непоседливости рвать когти и уходить в другую фирму можно только если увольняют с этой или на другой предлагают _намного_ лучшие условия, но, поскольку, "меня и тут неплохо кормят" (с) это должно быть какие-то фантастически большие деньги, чтобы я бросил то, что уже имею тут и ушел в другое место...
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[5]: Reverse Engineering
От: pfinkelshtein Израиль http://www.truscont.com
Дата: 03.01.11 22:36
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>>>ну... как сказать... прежде, чем научиться защищать, необходимо знать как хакеры это реально ломают. т.е. познакомиться с их методами работы и имеющимся инструментарием.

P>>игра в кошки-мышки. только не всегда мышка имеет время побыть кошкой чтобы знать как убегать.
М>ага. и потому мы имеем кучу защит, которые ломаются в день выхода релиза даже начинающими хакерами. не, я не против. пускай защита будет тривиальной и тупой до ужаса, т.к. часть людей все равно купит, а часть будет упорно искать варез, но если мы все-таки приняли решение защищать, то тут без знаний о противнике никуда...

как это не печально, но это так, и есть на это причины. в большинстве случаем разработчики не знают ничего о взломе, а хакеры не умеют писают код (как говорится ломать не строить). нанимать хакера на работу как девелопера гиблое дело.

а теперь скажи у тебя дома на двери крутой замок стоит? а ты знаешь что его можно сломать за 20 секунд? готов ли ты заплатить лишних 500 баксов чтобы усилить его и на взлом потребовалось не 20, а 50 секунд? а может все-таки не нужен замок на входную дверь? или хоть какой но нужен? дома ведь вещи подороже софта будут?

дело в том что задача разработчика сделать самую крутую защиту. а задача манагера зарабоать как можно больше денег чтобы платить тебе побольше. для этого ему нужно как можно меньше потратить и как можно быстрее продать и побольше.

P>>экономически не выгодно разбирать софт конкурентов.

P>>проще переманить разработчика из конкурирующей конторы.
М>да что вы говорите. во-первых, по американским законом переманивать даже более незаконно чем реверсить (особенно с учетом того, что факт реверса трудно доказать, особенно если он осуществлялся на местах без санкции руководства).

неа, как раз суды кладут на договор NDA и принимают сторону разработчика.

М>в-третьих, ну я вот тут нашим манагерам говорю, что есть супер-талантливый человек, побочным продуктом деятельности которого является опен-сорс проект, который на 60% дублирует наш функционал и если его нанять на обычную зарплату и дать ему заниматься только этим -- фирма заработает миллионы баксов. а фиг там... бюрократия...


чтобы заработать милионны баксов нужно не только разработать, поэтому манагеры относятся песимистично. для них нужны более весомые аргументы.

М>в-четвертых, _ВАМ_ ваш манагер ставит задачу по принципу -- а вот у конкурентов это есть, следовательно, у нас должно быть не хуже. и что вы ему ответите? нанимайте конкурентов путь они вам все это пишут? а не боитесь услышать в ответ -- а на фига ты такой умный нам нужен? за что мы тебе вообще деньги платим?


а как ты думаешь что они скажут на то что на создание этой фичи нужно потратить пару недель на reverse engineering продукции конкурента, если можно потратить это время на дизайн или разработку? манагер все оценивает в бабках. кстати у меня нету манагера, так что мне не поставят задачу

ПЫСЫ. боюсь мы уходим от темы
Peter Finkelshtein, skype: pfinkelshtein
Re[6]: Reverse Engineering
От: мыщъх США http://nezumi-lab.org
Дата: 03.01.11 23:09
Оценка: 7 (1)
Здравствуйте, pfinkelshtein, Вы писали:

P>Здравствуйте, мыщъх, Вы писали:


P>как это не печально, но это так, и есть на это причины. в большинстве случаем разработчики не знают ничего о взломе, а хакеры не умеют писают код (как говорится ломать не строить). нанимать хакера на работу как девелопера гиблое дело.


я и не предлагал хакера нанимать на работу девелопера. у них мозги сильно по разному устроены и лишь единицы ухитряются сочетать и то, и это.

хорошо. вот конкретный пример. если девелопер знает, что такое перекрестные ссылки и как матерятся хакеры когда видят вызов функции по указателю, передаваемому в качестве аргумента от аргумента от аргумента, который в свою очередь является результатом некой сложной функции, то дизассемблер умирает, т.к. call eax вызывает черт знает что, т.к. eax это аргумент от аргумента и эти аргументы разные в разных прогонах. типа конечный автомат. если компилятор его не оптимизирует с перепугу, то хрен такое отревесишь без травы с пивом.

но это ладно, конечный автомат еще реализовать надо (девелоперам влом). хорошо. будем использовать адресную арифиметику, чтобы убить перекрестные ссылки -- это реализуется на раз два три, а очень даже эффективно. точки останова на ключ сносятся напрочь путем игнорирования первых нескольких байт. ставить точки останова в середину тоже не выйдет, т.к. защита проверив первый значимый байт и убедившись в его левизне до остальных просто не доходит. а если еще ключ перед проверкой размножить в памяти, то хакер будет долго гадать в каком именно месте происходит проверка, а где идет просто передача ключа как аргумента.

вот вам пара приемов которые практически не осложняют разработку, но серьезно досаждают хакерам. или вот...
static int x = 0; if (x == 0) {x = 1; ...полезная нагрузка... } не дает возможности быстро снять дамп. но чтобы написать такой код, нужно знать как хакеры ломают программы и как работают дамперы

P>а теперь скажи у тебя дома на двери крутой замок стоит?

я вообще дверь не замыкаю. и дверь на балкон на первом этаже не закрытая и ничего.

P> а ты знаешь что его можно сломать за 20 секунд?

вообще-то в курсе.

> готов ли ты заплатить лишних 500 баксов чтобы усилить его и на взлом потребовалось не 20, а 50 секунд?

о чем я и говорю. имеет смысл две крайности. просто замок от честных людей и на другом полюсе очень сильно навороченная защита, где не только замок, но еще и видео наблюдение, сейф и живая охрана. промежуточные состояния большого смысла не имеют, особенно если грабят по наводке. если грабят просто так, то замок за 500 баксов с замком за 100 баксов, что стоит в соседней квартире дает мне шанс, т.к. разница в 30 секунд для грабителя _очень_ существенна, а гарантий, что более дорогой замок означает более зажиточного хозяина у него нет...

> а может все-таки не нужен замок на входную дверь? или хоть какой но нужен? дома ведь вещи подороже софта будут?

ну вот у нас в многоэтажке есть замок на входную дверь всего дома (подъездов у нас нет), замок от гаража (через который проникаешь в дом), замок от черного входа. все. двери в сами квартиры запирают далеко не все.

М>>да что вы говорите. во-первых, по американским законом переманивать даже более незаконно чем реверсить (особенно с учетом того, что факт реверса трудно доказать, особенно если он осуществлялся на местах без санкции руководства).

P>неа, как раз суды кладут на договор NDA и принимают сторону разработчика.
ну погуглите как одни фирмы судятся с другими за то, что они переманивают сотрудников. как скрыть факт, что переманили? а никак. он очень хорошо заметен и легко доказуемым. как доказать, что имел место акт реверса? сложно доказать это будет, тем более если не тупо дернули код, а полностью его переработали и даже улучшили.

P>а как ты думаешь что они скажут на то что на создание этой фичи нужно потратить пару недель на reverse engineering продукции конкурента, если можно потратить это время на дизайн или разработку? манагер все оценивает в бабках. кстати у меня нету манагера, так что мне не поставят задачу


вот. у вас нету манагера. а у меня есть. и мне ставят задачи. и я говорю -- братья по разуму, но это же вообще не моя область!!! давайте наймем спеца и он сделает все за пять минут, а мне только месяц спецификации курить нужно. и что мне говорят? вооот...
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[7]: Reverse Engineering
От: pfinkelshtein Израиль http://www.truscont.com
Дата: 03.01.11 23:54
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>хорошо. вот конкретный пример. если девелопер знает, что такое перекрестные ссылки и как матерятся хакеры когда видят вызов функции по указателю, передаваемому в качестве аргумента от аргумента от аргумента, который в свою очередь является результатом некой сложной функции, то дизассемблер умирает, т.к. call eax вызывает черт знает что, т.к. eax это аргумент от аргумента и эти аргументы разные в разных прогонах. типа конечный автомат. если компилятор его не оптимизирует с перепугу, то хрен такое отревесишь без травы с пивом.


кстати такое используется в вирусах для создания перемещаемого кода. не только для вызовов функций но и для переменных. но это не так страшно.

М>вот вам пара приемов которые практически не осложняют разработку, но серьезно досаждают хакерам. или вот...

М>static int x = 0; if (x == 0) {x = 1; ...полезная нагрузка... } не дает возможности быстро снять дамп. но чтобы написать такой код, нужно знать как хакеры ломают программы и как работают дамперы

скажи, а не проще ли эмулятор написать? и нафик вообще тогда разбираться с кодом? насколько я видел твой профиль ты спец по CD/DVD защите. эмулятор для CD написать работы дня на 2.

допустим програмист знает что хакер сделал эмулятор. как бы ты боролся с этим? писать другой драйвер? теперь для защиты требуется права админа для установки драйвера против эмуляции.

P>>а теперь скажи у тебя дома на двери крутой замок стоит?

М>я вообще дверь не замыкаю. и дверь на балкон на первом этаже не закрытая и ничего.

P>> а ты знаешь что его можно сломать за 20 секунд?

М>вообще-то в курсе.

мне тоже показывали как цепь для моего мотоцикла за 5 секунд перекусывали...

>> готов ли ты заплатить лишних 500 баксов чтобы усилить его и на взлом потребовалось не 20, а 50 секунд?

М>о чем я и говорю. имеет смысл две крайности. просто замок от честных людей и на другом полюсе очень сильно навороченная защита, где не только замок, но еще и видео наблюдение, сейф и живая охрана. промежуточные состояния большого смысла не имеют, особенно если грабят по наводке. если грабят просто так, то замок за 500 баксов с замком за 100 баксов, что стоит в соседней квартире дает мне шанс, т.к. разница в 30 секунд для грабителя _очень_ существенна, а гарантий, что более дорогой замок означает более зажиточного хозяина у него нет...

всегда нужна золотая середина. поэтому я и говорю что тратить 10$ на защиту софта который стоит 20$ не целесообразно.
но если софт стоит 100$ то нужно задуматься.

конечно если речь идет от защите банка, то да нужна супер защита, и не важно сколько она будет стоить.

М>ну погуглите как одни фирмы судятся с другими за то, что они переманивают сотрудников. как скрыть факт, что переманили? а никак. он очень хорошо заметен и легко доказуемым. как доказать, что имел место акт реверса? сложно доказать это будет, тем более если не тупо дернули код, а полностью его переработали и даже улучшили.


с точки зрения закона: между конкурентами нет договоров, следовательно подать в суд проблематитчно. есть договор между работателем и работником. обычно договор NDA. и вот работник нарушил договор и ушел к конкуренту. допустим прошлая фирма работодатель подала в суд и выиграла процесс (что маловероятно). что она возьмет с бывшего работника? отсудит миллион баксов? он же не сможет заплатить. чего фирма добьется?

М>вот. у вас нету манагера. а у меня есть. и мне ставят задачи. и я говорю -- братья по разуму, но это же вообще не моя область!!! давайте наймем спеца и он сделает все за пять минут, а мне только месяц спецификации курить нужно. и что мне говорят? вооот...


а кому щас легко? кстати курить вредно, лучше пить виски и почему я не живу в россии?
Peter Finkelshtein, skype: pfinkelshtein
Re[7]: Reverse Engineering
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 09.01.11 19:33
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>я и не предлагал хакера нанимать на работу девелопера. у них мозги сильно по разному устроены и лишь единицы ухитряются сочетать и то, и это.

+1

М>вот вам пара приемов которые практически не осложняют разработку, но серьезно досаждают хакерам. или вот...

М>static int x = 0; if (x == 0) {x = 1; ...полезная нагрузка... } не дает возможности быстро снять дамп. но чтобы написать такой код, нужно знать как хакеры ломают программы и как работают дамперы
мыщъх, спасибо за хорошие, жизненные примеры, вспомнились часы проведенные в IDA.
См. ниже — к тебе тоже вопрос-предложение относится

2 все: кто может накидать прямых ссылок на места в Сети, где можно отыскать подборки (по возможности в сжатом виде) подобных полезных приемов и практик, а также взгляд с разных сторон ("как работают такие-то") на их применение — думаю будет полезно для всех читающих этот форум (да и не только).

PS Безадресная отправка в гугл (или даже адресная на wasm.ru
Автор:
Дата: 30.11.10
, etc) не будет считаться. Поясню, что было бы полезным: речь идет о любовно собранных подборках ссылок по данной теме\контексту, которые не жалко расшарить с соратниками по ремеслу.

PPS Подобная подборка была бы в т.ч. и отличным ответом топикстартеру, и кандидатом в некий FAQ (если качество окажется на высоте)
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[8]: Reverse Engineering
От: pva  
Дата: 09.01.11 21:05
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

VAB>2 все: кто может накидать прямых ссылок на места в Сети, где можно отыскать подборки (по возможности в сжатом виде) подобных полезных приемов и практик, а также взгляд с разных сторон ("как работают такие-то") на их применение — думаю будет полезно для всех читающих этот форум (да и не только).

Валерий, то что накидал мыщъх — это прошлый век. Если хочется таких приемов, возьмите любой автоматический обфускатор и смотрите выход. Где-то на цитфоруме была статейка на эту тему пятилетней давности. Да и в гугле по обфускации хватает статей даже для начинающих.
Сложность разбора зависит от количества применяемых паттернов.
newbie
Re[9]: Reverse Engineering
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 09.01.11 21:40
Оценка:
VAB>>2 все: кто может накидать прямых ссылок на места в Сети, где можно отыскать подборки (по возможности в сжатом виде) подобных полезных приемов и практик, а также взгляд с разных сторон ("как работают такие-то") на их применение — думаю будет полезно для всех читающих этот форум (да и не только).
pva>Валерий, то что накидал мыщъх — это прошлый век. Если хочется таких приемов, возьмите любой автоматический обфускатор и смотрите выход. Где-то на цитфоруме была статейка на эту тему пятилетней давности. Да и в гугле по обфускации хватает статей даже для начинающих.
вот о том и была речь — собрать прямые ссылки (уж постарайтесь найти, коли говорите что есть), а не рассказы про прошлый век и отсылы в обфускаторы... хотя про обфускаторы — грамотное дополнение\направление для раскопок.

PVA, Вы же понимаете что многие здесь способны за конечное время найти информацию самостоятельно, в т.ч. через различные инструменты, речь о том как это можно сделать быстрее. Лазать и гуглить, чтобы помочь автору ветки или разобраться с состоянием дел в обфускаторах и навесных защитах \ реверсинге — времени нет у многих здесь, включая меня. Хотя для кого-то это основной хлеб и возможно информация под рукой — потому и предложение выше. И по причине предполагаемых объемов информации по теме — пожелание выделенное жирным в цитате выше.

А от того, что прошлый век — неправильным не становится.
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Reverse Engineering
От: Jakop Россия https://wmspanel.com
Дата: 09.01.11 22:37
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>Здравствуйте, Jakop, Вы писали:


J>>Здравствуйте, nen777w, Вы писали:


J>>к разговору о реверсе. Вот это меня просто изумило. Думал я что-то понимаю в реверсе, но это просто высший пилотаж:

J>>здесь
М>и это хорошая иллюстрация того, что реверсер должен хорошо разбираться не только в ассемблере и операционной системе, но и куче смежных областей, а так же представлять как пишутся программы.

[skipped]
М>реконструкция сетевых протоколов происходит примерно так же. в основном это работа черным ящиком, над которым проводятся разные эксперименты. дизассемблеруются только небольшие участки кода для уточнения поведения программы в случаях, которые сложно смоделировать.
[skipped]

я тоже стараюсь не лезть в ассемблер и когда возможно использую вот эту штуку или подобную для того, чтобы быстро понять что происходит в программе
здесь
Автор: Jakop
Дата: 13.10.10


Народ как-то холодно отнесся к этой задумке когда я поместил ее в Исходники, но мне лично эта штука очень помогала и экономила время
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
Re[10]: Reverse Engineering
От: pva  
Дата: 10.01.11 08:20
Оценка:
Здравствуйте, Valery A. Boronin, Вы писали:

VAB>А от того, что прошлый век — неправильным не становится.

Начинать отсюда:
http://citforum.ru/security/software/
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.