Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга.
Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
Здравствуйте, Syrdon, Вы писали:
S>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
Конечно НУЖЕН !!!
Вот только задача эта не реальная
Здравствуйте, Syrdon, Вы писали:
S>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
Вы ассемблерный код, выдаваемый оптимизирующим компилятором, видели?
(сообщения от анонимов не читаю, не отвечаю)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Xander Zerge, Вы писали:
XZ>Здравствуйте, Syrdon, Вы писали:
S>>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
XZ>Вы ассемблерный код, выдаваемый оптимизирующим компилятором, видели?
RecStudio уже очень близок к тому декомпилятору, который нужен мне лично.
Пусть у него будет навалом псевдопеременных с именами регистров — потерпим.
Я всего лишь утверждаю, что программу известной структуры можно декомпилировать с помощью отладчика, специального редактора и "...аной матери".
Что нам сунет оптимизирующий компилятор?
Уберет переменные в регистры? Потерпим! Всё равно рано или поздно они уйдут в память.
Поменяет порядок инструкций для равномерной загрузке конвейеров? Решается автоматически деоптимизацией.
Сделает функции fastcall — стерпим. Обнаружим по первому использованию.
Пожмотится за записях в стэк? Решаемо автоматически.
Развернёт маленькие циклы? VC их четвертует... Да больно.
Но мы хотим систему для реинжениринга. Пусть она будет состоять из декомпилятора + дебаггера + редактора.
Похоже, Вы не только разбираетесь в теме, но и горите энтузиазмом... имхо, дело это слишком уж сложное и долгое, выгоднее найти одного из ведущих игроков рынка и устроиться работать на него удаленно. Если Вы действительно крутой, Вам не откажут (имхо).
Здравствуйте, 8bit, Вы писали:
8>Здравствуйте, Syrdon, Вы писали:
S>>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
8>Конечно НУЖЕН !!! 8>Вот только задача эта не реальная
Еще как реальная. Ты REC видел? Это что касается C
Уж поверь я знаю что говорю
Здравствуйте, Ник, Вы писали:
Ник>Похоже, Вы не только разбираетесь в теме, но и горите энтузиазмом... имхо, дело это слишком уж сложное и долгое, выгоднее найти одного из ведущих игроков рынка и устроиться работать на него удаленно. Если Вы действительно крутой, Вам не откажут (имхо).
Я просто так поинтересовался... Чисто теоретически... Ну нравится мне языком чесать!
Понимаю, что дело сложное и долгое, что таргет-группа мизерна и на половину состоит из хулиганья.
А тут под шкафом лежат документы на свою сдохшую фирму и хочется пухленькую брюнетку-секретаршу...
Здравствуйте, GPcH, Вы писали:
GPH>Еще как реальная. Ты REC видел? Это что касается C
Если бы этот Rec ещё чуть нежнее работал, ему бы цены не было.
На каждом imul он давится, с отложенным cmp не справляется, не всегда корректно отличает локальные переменные от параметров, но в целом именно то, что нужно.
Совместить бы это с символьным отладчиком и редактором!
Здравствуйте, Syrdon, Вы писали:
S>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
Ну а сам то как думаешь?
Сколько десятков человек в мире страдает от отсутствия такого тула?
В 99.9999% задач, исходники есть.
А если исходников нету, то первый вопрос, а зачем тебе дебажить чужой код?
Владелец чужого кода навернякак будет против
В общем для развелечения можешь заняться,
но если хочешь деньгу на этому заработать, то забудь...
Здравствуйте, Syrdon, Вы писали:
S>Здравствуйте, FR, Вы писали:
S>>>Что нам сунет оптимизирующий компилятор?
FR>>Про Whole Program Optimization и Link-time Code Generation слышал?
S>Точно, забыл. Инлайнинг практически не побороть, как я понимаю. Только редактор, который умеет рефакторить.
Там не только инлайнинг, а еще распределение регистров не смотря на границы функций, оптимизированная загрузка глобальных переменных (вплоть до полного выноса в регистр), оптимизация разыминования указателей, наплевательское отношения к соглашению о вызовах.
Я немного смотрел ассемблерный вывод, в общем душераздирающее зрелище, особенно функции раскиданные и перемешанные друг с другом
Здравствуйте, Syrdon, Вы писали:
S>Правда. Ну какой-то такой декомпилятор в подмножество С, совмещённый с редактором, для обратного инжениринга. S>Скажем неплохо было бы это совместить с (чужим) дебаггером, чтобы можно было программу снабдить отладочной информацией.
ты вначале определись кому это надо. т.е. кто твой потенциальный покупатель ибо крякеры удавятся но не заплатят. а те кто может заплатить — им скорее всего такой инстрУмент не нужОн. ситуация утери исходников при нормальной политике бекапов случается крайне редко
Здравствуйте, Syrdon, Вы писали:
S>Точно, забыл. Инлайнинг практически не побороть, как я понимаю. Только редактор, который умеет рефакторить.
А ещё будет чума, когда вам попадётся код из под чего ООПэшного с сотней-другой классов/шаблонов. Там куча функций будут друг друга дёргать, гонять какие-то непонятные декомпилеру структуры данных, масса указателей, таблиц указателей на функции (те, которые виртуальные)... Пинцет! А полируется это всё глобальной оптимизацией, выкидыванием хлама... А вот есть ещё "Profile-Guided Optimization", которая ещё и не такого наворотит...
Да не-е-ет, уж легче сдохнуть!
(сообщения от анонимов не читаю, не отвечаю)
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, FR, Вы писали:
FR>Там не только инлайнинг, а еще распределение регистров не смотря на границы функций, оптимизированная загрузка глобальных переменных (вплоть до полного выноса в регистр), оптимизация разыминования указателей, наплевательское отношения к соглашению о вызовах. FR>Я немного смотрел ассемблерный вывод, в общем душераздирающее зрелище, особенно функции раскиданные и перемешанные друг с другом
Та да... Ну вынос глобальной в регистры может быть только в сравнительно маленькой программе. В большой не пронесёшь переменную, как Данко зажигалку.
Особенно брутально, что оно может из вызова функции с константой породить отдельное тело функции.
Распределение регистров за функции я, вроде, понял. fastcall-изация. С этим можно бороться, расширяя список параметров.
С порядком инструкций что-то всё же можно сделать.
Просто остаётся надеятся, что функции сохранят свои тела. Всех не переинлайните!
Руку на ... сердце, единственный путь к пухленькой секретарше — декомпилятор legacy. За всё остальное по рукам дадут.
Просто нужно всего пару шагов за RecStudio и оболочку по-удобней.
Здравствуйте, Syrdon, Вы писали:
S>Хорошо. Остановимся на С. Объявленные мертвыми живут дольше.
Ты лучше определись, на чем остановиться. На Си или на пухленькой секретрше?
Здравствуйте, Аноним, Вы писали:
А>Владелец чужого кода навернякак будет против
Во первых, владельца можно послать, иногда даже по закону:
ЗАКОН ОБ АВТОРСКОМ ПРАВЕ И СМЕЖНЫХ ПРАВАХ
(в ред. Федеральных законов от 19.07.1995 N 110-ФЗ, от 20.07.2004 N 72-ФЗ)
Статья 25. Свободное воспроизведение программ для ЭВМ и баз данных. Декомпилирование программ для ЭВМ
...
2. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия автора или иного обладателя исключительных прав и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий:
1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников;
2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию;
3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, если это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления любого другого действия, нарушающего авторское право.
Во вторых, далеко не всегда владелец кода в принципе есть. Часто, обобенно если дело касается дорогого железа (электронных микроскопов, лабораторного оборудования средств технического контроля) владелец к моменту декомпиляции может уже не существовать.
Re[3]: Нужен ли миру декомпилятор?
От:
Аноним
Дата:
24.08.06 07:03
Оценка:
Да ради бога.
Можешь создавать такой супер тул
и пользоваться особенностями российского законодательства.
Гарантированно обогатишься