Привет всем.
Наверное техническим специалистом будет интересно почитать про "настоящих" экспертов в реверс инжениринге, которые работают в Лаборатории Касперского: http://dmitryart1985.livejournal.com/8069.html
Настолько умные товарищи, что в уме дизасемблируют бинарник восстанавливая исходный код программы вплоть до названия функций и переменных, при этом читая "Отче наш" на старо-гречеком языке. Так сказать одним глазком туда, одним сюда...
Интересно ваше мнение.
Здравствуйте, dmart, Вы писали:
D>Привет всем. D>Наверное техническим специалистом будет интересно почитать про "настоящих" экспертов в реверс инжениринге, которые работают в Лаборатории Касперского: http://dmitryart1985.livejournal.com/8069.html D>Настолько умные товарищи, что в уме дизасемблируют бинарник восстанавливая исходный код программы вплоть до названия функций и переменных, при этом читая "Отче наш" на старо-гречеком языке. Так сказать одним глазком туда, одним сюда... D>Интересно ваше мнение.
да, бинарник можно восстановить вплоть до осмысленных названий функций и переменных.
если в бинарнике есть названия функций и переменных (строки), то можно восстановить их как они были в исходнике.
два куска кода можно сравнить, и даже если имена переменных не совпадают, можно сказать что
int add(int a, int b) { return a+b; }
имеет ту же функциональность что и
int sub1(int arg1, int arg2) { return arg1+arg2; }
Я вот не вкуриваю, вы идиоты или только прикидываетесь? Нет, я понимаю, можно журналистам втереть про то, что имена функций из бинарника нельзя вытянуть, но нам-то зачем мозги полоскать? Тем более приводя ссылку на отчет есета, где весь функционал и имена функций расписаны по самое не хочу... мы ж не только прочитать можем, мы еще и понимаем, что там написано. Ладно ты, геймдев это штука заразная, но брат-то твой компилеры писал. Поговори с ним, пусть он тебе хоть что-то объяснит, чтобы ты так не позорился на весь инет.
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Abyx, Вы писали:
A>да, бинарник можно восстановить вплоть до осмысленных названий функций и переменных.
Восстановить можно имена классов исключений если они имеют виртуальный деструктор, они сохраняются в замангленном виде для RTTI. Имена функций и переменных уникального (не библиотечного) кода не восстанавливаются в принципе. Потому что в бинарнике их тупо нет ни в каком виде. Их можно самому заново придумать, но никак не восстановить.
Такие заново придуманные имена функций не могут быть основанием для экспертного заключения, ибо иначе можно все что угодно написать.
A>если в бинарнике есть названия функций и переменных (строки), то можно восстановить их как они были в исходнике.
Строки да, но названий функций и переменных там нет если их специально туда не включали.
A>два куска кода можно сравнить, и даже если имена переменных не совпадают, можно сказать что A>int add(int a, int b) { return a+b; } A>имеет ту же функциональность что и A>int sub1(int arg1, int arg2) { return arg1+arg2; }
Что-то я сомневаюсь что этот експерт делал такой весьма нетривиальный анализ. Для этого нужна действительно высокая квалификация, иначе можно взять пару библиотечных функций и каждую вторую программу признать малварей на том основании что оно местами похоже.
Здравствуйте, linuz, Вы писали: A>>да, бинарник можно восстановить вплоть до осмысленных названий функций и переменных. L>Восстановить можно имена классов исключений если они имеют виртуальный деструктор, они сохраняются в замангленном виде для RTTI. Имена функций и переменных уникального (не библиотечного) кода не восстанавливаются в принципе. Потому что в бинарнике их тупо нет ни в каком виде. Их можно самому заново придумать, но никак не восстановить.
Там мальчик выложил отчет ESET-а. Насколько я его понял, внутрях червя фреймворк для плагинов, то бишь некислая куча имен методов, классов и тому подобное там есть. Наверное, их и восстановили.
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Abyx, Вы писали:
A>да, бинарник можно восстановить вплоть до осмысленных названий функций и переменных. A>если в бинарнике есть названия функций и переменных (строки), то можно восстановить их как они были в исходнике.
Угу, а еще паспортные данные автора. Коммерческие ботнеты же идиоты пишут.
A>два куска кода можно сравнить, и даже если имена переменных не совпадают, можно сказать что A>int add(int a, int b) { return a+b; } A>имеет ту же функциональность что и A>int sub1(int arg1, int arg2) { return arg1+arg2; }
А это, скорее всего, заинлайнится и даже функцией не будет. Зато, в разных местах могут использоваться разные регистры и/или разная адресация, код может быть неидентичен.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Ромашка, Вы писали:
Р>Я вот не вкуриваю, вы идиоты или только прикидываетесь? Нет, я понимаю, можно журналистам втереть про то, что имена функций из бинарника нельзя вытянуть, но нам-то зачем мозги полоскать? Тем более приводя ссылку на отчет есета, где весь функционал и имена функций расписаны по самое не хочу... мы ж не только прочитать можем, мы еще и понимаем, что там написано. Ладно ты, геймдев это штука заразная, но брат-то твой компилеры писал. Поговори с ним, пусть он тебе хоть что-то объяснит, чтобы ты так не позорился на весь инет.
Там совсем другое доказывали, что "эксперт" — фуфло. Говорит общие фразы, а как спрашивают конкретику — "я не помню", "это не требуется", и т.п.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, dmart, Вы писали:
D>Интересно ваше мнение.
Наше мнение — ЖЖ автора пропитан баттхертом и из-за этого лишен объективности и иногда автор вообще невменяем.
Странно такую чущь тащить на программерский форум.
Простой пример
Да будет известно эксперту Ануфриеву, что компиляция – это процесс, происходящий с потерей данных, имена функций и переменных при трансляции в машинный код просто удаляются, сам же код оптимизируется и может быть частично изменён.
К примеру, inline функции – функция как таковая исчезает, а её код вставляется в места вызова этой inline функции, и многое-многое другое.
Да будет известно автору, что IDA, на которую несколько раз мягко намекает эксперт Ануфриев, как раз умеет восстанавливать исходный код (с разницей до имен переменных, иногда с именами переменных), в том числе оптимизированный, в том числе с inline-функциями. Называется это декомпиляция, про разницу между декомпиляцией и дизассемблированием, автор, видимо, не в курсе.
В IDA есть возможность декомпиляции кода, произведеного распространенными компиляторами, техники оптимизации которых хорошо известны и реверсятся.
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте, dmart, Вы писали: D>>Привет всем.
Р>Пока, Дима.
Р>Я вот не вкуриваю, вы идиоты или только прикидываетесь?
вот цитата из текста по ссылке:
...если Вы откроете Ida Pro... Она может восстанавливать и наименования функций, она восстанавливает все библиотеки, системные. Более того, есть дополнительные модули, которые можно писать и самому, которые даже и в исходные коды часть могут вернуть.
вам не кажется, что это бред сивой кобылы? ida-pro -- черный ящик. восстановить имена функций она может только если это библиотечные функции или имена функций по тем или иным причинам присутствуют в бинарнике. однако, сходство имен функций ни о чем не говорит, т.к. нужно доказать, что это уникальные имена и они не принадлежат никакой другой программе, а присутствуют только в анализируемом бинарнике.
про исходные коды это бред в квадрате. компиляция это преобразование А, а декомпиляция это преобразование Б. между А и Б нет ничего общего. декомпиляция не есть процесс обратный компиляции.
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.
Здравствуйте, мыщъх, Вы писали: М>вам не кажется, что это бред сивой кобылы? ida-pro -- черный ящик. восстановить имена функций она может только если это библиотечные функции или имена функций по тем или иным причинам присутствуют в бинарнике. однако, сходство имен функций ни о чем не говорит, т.к. нужно доказать, что это уникальные имена и они не принадлежат никакой другой программе, а присутствуют только в анализируемом бинарнике.
Мыщъх, ты о них слишком хорошего мнения.
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте, мыщъх, Вы писали: М>>вам не кажется, что это бред сивой кобылы? ida-pro -- черный ящик. восстановить имена функций она может только если это библиотечные функции или имена функций по тем или иным причинам присутствуют в бинарнике. однако, сходство имен функций ни о чем не говорит, т.к. нужно доказать, что это уникальные имена и они не принадлежат никакой другой программе, а присутствуют только в анализируемом бинарнике.
Р>Мыщъх, ты о них слишком хорошего мнения.
Р>
Написал так радостно. А на самом деле очередную чушь. Это страка значит что был сгенерён pdb файл при компиляции, и ничего больше.
Иди ты считаешь что малварь распространяют с многомегабайтными pdb файлами, чтобы облегчить работу таких "экспертов" как Ануфриев?
Здравствуйте, dmart, Вы писали: D>Написал так радостно. А на самом деле очередную чушь. Это страка значит что был сгенерён pdb файл при компиляции, и ничего больше.
Дима, это подпись. Это значит, что дальше сравнение бинарников можно проводить только и исключительно для того, чтобы срубить побольше бабла с заказчика.
D>Иди ты считаешь что малварь распространяют с многомегабайтными pdb файлами, чтобы облегчить работу таких "экспертов" как Ануфриев?
Я допускаю, что людям, оставившим такое в бинарнике, хватит на подобное дурости.
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Ромашка, Вы писали:
Р>Дима, это подпись. Это значит, что дальше сравнение бинарников можно проводить только и исключительно для того, чтобы срубить побольше бабла с заказчика.
В строчке пути к pdb фамилия автора не написана. В экспертизе написано что исходники лежали в C:\Projects. Как-то не вяжется одно с другим.
Здравствуйте, linuz, Вы писали: L>В строчке пути к pdb фамилия автора не написана. В экспертизе написано что исходники лежали в C:\Projects. Как-то не вяжется одно с другим.
Прочитал экспертизу. Сорри, почему-то думал, что сравнивают бинарники (разных версий?). Да, не вяжется. Да и пофиг, анализ ботнета есть, исходники есть, квалификация эксперта достаточна, чтобы связать одно с другим. Один черт исходников недостаточно, это только средство. Нужно доказывать сам факт совершения правонарушения. Если у следствия этого нет, то им ничего не будет, если у следствия это есть, то даже отсутствие исходников их не спасет.
ЗЫ. Дима, вы вообще серьезно? Вас поймали с исходниками крупнейшего ботнета и вы пытаетесь доказать, что это какой-то другой ботнет??? Это типа вас повязали с калашом в руках над еще теплым трупом и вы пытаетесь доказать, что у вас в руках не калаш, а ТТ потому-что "функционал совпадает"?
Всё, что нас не убивает, ещё горько об этом пожалеет.
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте, linuz, Вы писали: L>>В строчке пути к pdb фамилия автора не написана. В экспертизе написано что исходники лежали в C:\Projects. Как-то не вяжется одно с другим.
Р>Прочитал экспертизу. Сорри, почему-то думал, что сравнивают бинарники (разных версий?). Да, не вяжется. Да и пофиг, анализ ботнета есть, исходники есть, квалификация эксперта достаточна, чтобы связать одно с другим. Один черт исходников недостаточно, это только средство. Нужно доказывать сам факт совершения правонарушения. Если у следствия этого нет, то им ничего не будет, если у следствия это есть, то даже отсутствие исходников их не спасет.
Какая у него квалификация. 2 года работы. И полное отсутствие знаний в реверс энжиниренге? Это же понятно при общении с ним.
Р>ЗЫ. Дима, вы вообще серьезно? Вас поймали с исходниками крупнейшего ботнета и вы пытаетесь доказать, что это какой-то другой ботнет??? Это типа вас повязали с калашом в руках над еще теплым трупом и вы пытаетесь доказать, что у вас в руках не калаш, а ТТ потому-что "функционал совпадает"?
А нас не поймали. Читайте окончание моего поста на ЖЖ. Эти сорсы, которых у меня не было, требовали от меня 5 месяцев угрозами.
Более того, тот злощастный ноутбук при передаче в ЛК менял и упаковку и включался 6 раз. Я не знаю, что там за код оказался.
БОлее того, исследование ЕСЕТа написано предвзято. Если поднять статистику по спаму M86, то окажется что ботнет первый с конца. Когда это он крупнейшим был?
Здравствуйте, dmart, Вы писали:
D>А нас не поймали. Читайте окончание моего поста на ЖЖ. Эти сорсы, которых у меня не было, требовали от меня 5 месяцев угрозами. D>Более того, тот злощастный ноутбук при передаче в ЛК менял и упаковку и включался 6 раз.
Оставив в стороне ваше мнение об экспертизе, расскажите, пожалуйста, подробнее, как вы определили, что "злощастный ноутбук при передаче в ЛК менял и упаковку и включался 6 раз" и почему в таком случае этот факт не был учтен следствием? Это же чистой воды подлог, если правда. Из текста в ЖЖ это совсем непонятно.
>Я не знаю, что там за код оказался.
Ну это любой на вашем месте бы сказал D>БОлее того, исследование ЕСЕТа написано предвзято.
Ну конечно!
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте, мыщъх, Вы писали:
Р>Мыщъх, ты о них слишком хорошего мнения.
а классная у вас цветовая раскраска в иде! но вы поскипали цитату "эксперта", который говорил, что ида _восстанавливает_ имена функций. очевидно, восстанавливает она через FLIRT. там какие-то еще плагины упоминались -- хз что там "эксперт" скачал из тырнета. есть и такие плаги, которые восстанавливают имена криптографических функций с той или иной вероятностью угадать или промазать.
нормальный эксперт оглашает методики анализа. но этот "эксперт" об их существовании даже не подозревает. отберите у его иду, дайте ему грип. тогда экспертный вывод о родственных связях между exe и сорцами строится на совпадении текстовых строк, среди которых, возможно, есть и уникальные.
на приведенном вами фрагменте виден путь к .pdb файлу, который, вай-вай, за уникальный прокатывает только в судах, где приговор выносится еще до начала заседания.
'botnet' это очень слабый аргумент. практически каждый второй хацкер даст такое название директории.
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.
Здравствуйте, eqw, Вы писали:
eqw>Здравствуйте, dmart, Вы писали:
eqw>Да будет известно автору, что IDA, на которую несколько раз мягко намекает эксперт Ануфриев,
для нормального суда ида не аргумент. если вывод "эксперта" базируется на сходстве результатов работы декомпилятора с исходными текстами, то декомпилятор должен быть простым и прозрачным. а если это "черный ящик", то такой цырк нам не нужен, поскольку, де-юре "эксперт" говорит -- мы засунули бинарник в ЭВМ, машина пожжужала, покряхтеля и выдала результат "казнить нельзя помиловать". очевидно же где тут запятая.
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.
Здравствуйте, мыщъх, Вы писали:
М>Здравствуйте, eqw, Вы писали:
eqw>>Здравствуйте, dmart, Вы писали:
eqw>>Да будет известно автору, что IDA, на которую несколько раз мягко намекает эксперт Ануфриев,
М>для нормального суда ида не аргумент.
Да нет, почему. Суд принимает во внимание мнение экспертов. Если эксперта кто-то считает некомпетентным или предвзятым, его имеют право отвести.
> если вывод "эксперта" базируется на сходстве результатов работы декомпилятора с исходными текстами, то декомпилятор должен быть простым и прозрачным.
Никто никому ничего не должен.
>мы засунули бинарник в ЭВМ, машина пожжужала, покряхтеля и выдала результат "казнить нельзя помиловать".
Забавно, что современные антивирусы с эмуляторами и эвристиками примерно так и работают
Здравствуйте, Ромашка, Вы писали:
Р>Здравствуйте, dmart, Вы писали: D>>Написал так радостно. А на самом деле очередную чушь. Это страка значит что был сгенерён pdb файл при компиляции, и ничего больше.
Р>Дима, это подпись. Это значит, что дальше сравнение бинарников можно проводить только и исключительно для того, чтобы срубить побольше бабла с заказчика.
это подпись? мама, роди меня обратно. щоб ваш банк такие подписи использовал. и по ним позволят переводить деньги с вашего счета.
ответьте на простой вопрос: какова вероятность, что совершенно посторонний хакер вася пупкин
1) юзает eclipse и держит проекты в корне E:
2) ботнет называет ботнетом, а не блакджеком
это улика, но не более того. если у подозреваемого сорцы лежает именно там -- его можно начинать прорабатывать, но на доказательство это не тянет. у меня, кстати, тоже есть сорцы по аналогичному пути. только я не автор. я просто скачал zip из интернета, кинул в корень на E: и распаковал с путями.
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.