![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Такой вопрос: как можно (если вообще можно) преобразовать файл формата .exe в файл формата .cpp?
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
можешь считать что никак.
|
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
А можно сделать как-нибудь так, чтобы хоть как-то понятен код стал. В формате .obj понять код, по-моему, нет шансов
![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Вот-вот. А разве после дизассемблирования получается не файл формата .obj? Я имею в виду из .exe файла можно сделать файл формата языка C++? |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
||||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
а ты сначала головой и руками попробуй, а там увидишь, насколько легко переводить ассемблерный код в С++-ный. ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Современные дизассемблеры типа Ida кой в чем может помочь. Например, определить что там присвоение строки, построить дерево вызовов функций. Иногда можно определить фрагмент стандартной библиотеки. Прожка DeDe может неплохо экзешник билдера разобрать. Но все это лишь частично.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
5 минут назад дизассемблировал собственную программу размером в 2500 строк (160Кб) (на языке С++), а получилась программа на языке ассемблера, наверное, в миллиард строк, а что делать с прогами в десятки мегабайт? Стоит пытаться понять такие программы или жизни не хватит?
|
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Ассемблер - язык для творческих личностей, один и тот же алгоритм можно написать в большом количестве вариаций. Иногда эти вариации бывают такие, что точную логику программы ты понять не сможешь. Простой пример умножение на 2. На ассемблере для этого можно использовать mul/imul, а можно shl/sal.
Если компилятор оптимизировал код, то твой exe2cpp дизассемблер может выдать что-то вроде этого:
А не
Возникнут сразу мысли о том, какие программисты были хитрые, что так зашифровали свой код ;) |
||||
|
|||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Мне понравилась фраза "exe2cpp дизассемблер". Она звучит как: "Существует программа, которая преобразует .exe файлы в .cpp файлы". Я прав?
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
SABROG, ха. очень может быть, что в результате выйдет unsigned char a = 2;
![]() Добавлено через 49 секунд
речь идет о гипотетической программе. |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Ну есть такая программа, сам не пробывал, возможно там есть вирус. Конвертит exe в Си и Asm: http://www.bbs.motion-bg.com/dl.php?file=19
Добавлено через 1 минуту и 34 секунды
Верно, как вариант может быть и такое. В зависимости от степени оптимизации ![]() |
|||
|
||||
KaraKum |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
А, чёрт! ![]() В дизассемблерном файле даже не понятно где кончается стандартный набор Windows функций и начинается текст самой программы ![]() |
||||
|
|||||
SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
![]() |
||||||
|
|||||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
То есть всё? Пиши пропало?
У меня есть такой пример: давным давно (ну поехали...) когда мне нравилась игра WarCraft3 и я в неё играл (и сейчас нравится) я встречал программу AMAI, сделанную поклонниками игры (как я слышал), которую нужно было устанавливать поверх игры и представляла она из себя противника который был гораздо сильнее компьютера от самого разроботчика игры "Blizzard". Так вот, это правда фанаты дизассемблировали игру и создали к ней приложение AMAI (ужас! игра весит около гигабайта!) или вероятнее это продукт от "Blizzard"? Это сообщение отредактировал(а) KaraKum - 3.12.2007, 18:21 |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Зависит от твоих задач. "Поклонники" и алгоритм запаковки определят и структуру файла и библиотеку напишут для распаковки и хуки расставят в нужных местах, чтобы найти адрес где вызывается искусственный интеллект и напишут свой интеллект, и напишут патчер памяти, чтобы приаттачиться к процессу и заменить 4 байта адреса оригинального AI на свой.
Мало кто дизассемблирует программу, чтобы понять какой алгоритм защиты стоит и попробывать найти в нем уязвимости. Обычно все идут по пути меньшего сопротивления, ищут слабые места, такие как поиск условий при которых программа думает, что она зарегистрирована. Это сообщение отредактировал(а) SABROG - 3.12.2007, 18:37 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
нет конечно тут важны 3 составляющие: время, голова, желание ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
В принципе моя задача по принципу как у "поклонников": создать приложение к уже существующей программе и получить возможность получать данные о некоторых внутренних для программы объектах.
Получается мне остаётся до конца освоить ассемблер (немножко уже знаю! ![]() ![]() ![]() |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
На современных технологиях, в автоматическом режиме, это невозможно.
Дело в том, что когда компьютер переводит с языка Си++ на машинный язык (это называется "компилированием") он выполняет операцию, которую можно было бы называть "аналитической". Он берёт конструкции на языке высокого уровня (например, Си++) и разбивает их на элементарные составляющие (машинные команды). Такие задачи с самого своего рождения компьютеры решали хорошо. А вот обратную операцию, которую можно было бы назвать "синтетической", компьютеры решают плохо. Сюда относится и обратный перевод с машинного языка, и распознавание образов и речи. Многие из этих задач традиционно относятся к сфере так называемого "искусственного интеллекта". Эти задачи состоят в том, чтобы агрегировать множество частностей (например, машинных команд или пикселей) и распознать в них целостный образ (например, конструкцию языка Си++ или напечатанную букву). Интересно заметить, что люди характеризуются обратным свойством: даже самые бестолковые из нас легко распознают образы (например, узнают знакомые лица, картины, символы и другое), и с большим трудом раскладывают образ на составляющие (например, способны узнаваемо нарисовать своего приятеля или выразить в словах какое-то переживание или впечатление). |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Мда. Не обнадёживающий прогноз.
Можете посоветовать какую-нибудь литературу, что поможет в данном вопросе? Я вроде освоил ассемблер по учебнику В Юров. Assembler, но слова библиотека распаковки, жуки, приаттачиваться и патчер памяти для меня новые ![]() |
|||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Если бы все было именно так, то давно бы были написаны декомпиляторы для всех компиляторов (конечно, шаблоны они бы не восстанавливали). Компиляторы не просто раскладывают на "элементарные составляющие", но еще и оптимизируют. Так вот иногда после оптимизации код становится совершенно непохожим на оригинал. Кому интересно, соберите какой-нибудь проект на C++ с помощью GCC указав опции -O2 -g3 (оптимизация + отладка) и попробуйте пройтись отладчиком. Будете сильно удивлены поведению отладчика. Я, например, как-то пол дня потратил на то, чтобы понять, почему у меня не входит в тело оператора if, хотя судя по переменным должно было. Добавлено через 2 минуты и 16 секунд
не "жуки", а "хуки". Читай "перехватчики". "Патчер памяти" - это программа, способная изменять память любого процесса. |
||||
|
|||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Вот-вот. Я имею в виду где об этом можно узнать не понаслышке Есть какая-нибудь подходящая для такого дела литература?
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
||||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Подумай лишний раз надо это тебе или нет. Многим геймерам хватает ArtMoney. Я как-то в эти дебри лазил, использовал SoftIce, IDA Pro, программы для снятия дампа памяти процесса, чтобы на винт сбросить ту же программу в exe файл, но уже полностью распакованную. Писал патчеры/тренеры на fasme, изучал алгоритмы шифрования, чтобы редактировать save файлы и т.п. Просто занимался кряком программ, кейгенами. Но, чтобы серьезно этим заниматься жизни не хватит и надо иметь математический склад ума. Разработчики защит тоже на месте не стоят, один gameguard чего стоит, пока драйвер клавиатуры и мышки не напишешь ничего не сделать, они ведь ко всему прочему еще под каждую игру свою версию выпускают, поэтому универсальных патчей нету. Неблагодарное это дело ковырять чужие программы, если за это не планируется получать хороший доход. |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
С помощью какой программы можно дизассемблировать .exe файлы?
|
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: 2 Всего: 7 |
Ну вот, например, стандартная U*X-овская утилита "objdump" умеет (в числе прочего) и дисассемблировать машинный код. Поищите порт под Win -- он работает и с объектными файлами, и с EXE формата PE. Подробнее об этом: http://en.wikipedia.org/wiki/Objdump А по поводу восстановления объектных файлов до исходников на языке высокого уровня, есть старая аналогия: "Это примерно так же просто, как восстановить живую корову из кучи говяжих котлет ." ;) --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
сложновато... |
|||
|
||||
Loony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
А какого рода приложение и с какой целью это делается? Возможно уже есть SDK от разработчиков! |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Ну вот буквально недельку назад небеизвестная в определённых кругах группа YAG зарелизила декомпилер от Ильфака(автор IDA) стоимостью 2k$.
Вот примерчик: ![]() А вот результата работы над той же функцией шестнадцатиричныхлучей: ![]() Так, что можешь найти сие творение гениальных рук без проблем и облегчить себе жизнь, если совесть позволит конечно ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Loony |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
Помоему ему это не очень подходит! Получит он кучу ассемблерных листингов и что делать будет с ними!? Тут должны помочь либо IDA, либо Olly, т.е. дабагер. Только все равно тут работы, в зависимости от сложности защиты программы и наличия необходимых знаний, от нескольких дней до бесконечности! Имхо, не простая это задача в наше время! Это сообщение отредактировал(а) Loony - 7.12.2007, 13:59 |
|||
|
||||
Puoar |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.11.2007 Репутация: нет Всего: 1 |
А я видел bat2asm от китайских вундеркиндов
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Скажем так, сейчас все языки программирования это HLL2ASM, а вот обратное фиг. Только Hex Rays, да и то из того что я увидел врятли он сильно поможет. Это сообщение отредактировал(а) SABROG - 7.12.2007, 15:50 |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
exe2compilable_source - это сказка. В любом случае надо обтачивать результат руками и тут у HexRays проблемы, ибо интерактивность листинга с Pseudocode фактически нулевая. В любом случае сначала надо поработать над asm-листингом, а далее уже и псевдокод можно до ума довести. Т.е. без знания ассемблера и процесса дизассемблирования опять же никуда. Но плагин очень хороший, тем более пока только первая версия, если такие вот сливы на паблик не снизят инициативы в его развитии, со стороны автора, то продукт обещает быть очень полезным. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
KaraKum |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Основы ассемблера я знаю, но если будет нужно, то освою и весь - дело того стоит, но проблема в том, что я, например, скомпилировав такое консольное приложение :
после его дизассемблирования получил текстовый файл размером почти 2 мегабайта! Это же роман "Война и мир"! Я понимаю, что и на ассемблере этот фрагмент состоит из нескольких строк, а остальное занимает код стандартных функций Windows, но всё же... Это сообщение отредактировал(а) KaraKum - 9.12.2007, 07:55 |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
что все же? ![]()
кроме ассемблера обязательно нужно знание формата исполняемых файлов (или библиотек) тогда можно быстро отметать ненужную тебе информацию -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Visual C++ 7. Никакие настройки не менял. Есть возможность сократить размер конечного файла? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Да. Раз у тебя визуалка, просмотри настройки компилятора, там их не мало и скомпиль в релиз-варианте. |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Вобщем, всё что нужно - это возможность получать информацию о динамическом изменении уже созданной программы и способность отправлять этой программе сообщения, подобно пользователю. Проблема заключается в получении информации из работающей программы. Декомпилированный .exe файл этой программы весит 7Mb в текстовом формате ![]() Это сообщение отредактировал(а) KaraKum - 11.12.2007, 19:06 |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
Конечно, так как С++ тянет всё что ему пожелается(то и есть заголовочные файлы, стандартные функции...) Дизассемблер тебе не поможет понять логику. Можеш использовать отладчики(sowt-ice, с его установкой помочь не могу), ну или встроеный в Windows Debug(то и есть (отладчик==дзенщик)=true) ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
серьезно? - а для чего тогда, как ты думаешь, дизассемблер вообще нужен?
soft-ice. "встроенный" отладчик(debug.exe) не предназначен для отладки win32-приложений. |
|||
|
||||
Solomon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 471 Регистрация: 23.1.2006 Где: Украина Киев Репутация: нет Всего: 2 |
...
Это сообщение отредактировал(а) Solomon - 6.5.2008, 14:44 -------------------- Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром... Соломон 2008 |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
Не ну конечно когда программа в несколько сотен тысяч строк(так как они ассемблерские, то их еще больше) то понять логику программы раз плюнуть(правда это не возможно) но вот Dump - может. Так что с этих пор будем его называть сверх способный программист. Вообщето Дизасемблер нужен для программного кода, ну а логику понять из него(без отладчика) невозможно. |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
Lycifer, задавая в одной ветке вопрос "как читать и изменять байты в .exe", не стоит здесь пытаться выдавать свое мнение за непреложную истину, да еще и в таких категоричных выражениях.
по поводу же твоего неуместного сарказма на тему моих возможностей я высказываться не буду. формат общения не тот. |
|||
|
||||
d06osipov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 1.11.2006 Репутация: нет Всего: нет |
Это сделать в точности невозможно, хотя бы потому, что в exe файле не хранятся никакие символы (если он не скомпилирован для отладки). То есть компилятор не сохраняет имена переменных, классов, функций и т. п., они просто не нужны в выходном файле.
А у меня есть ещё пример. Была такая игра --- TTD, Transport Tycoon Delux. Фанаты (а именно, Ludvig Strigeus, автор известной программы uTorrent, см. http://en.wikipedia.org/wiki/Ludvig_Strigeus) дизассемблировали её и переписали полностью на чистый С, получилось продолжение, Open TTD (кстати, Open Source). Я сомневаюсь что это возможно было всё переписать вручную, скорее всего, хоть какая-то автоматизация была. Но при желании, думаю, можно найти больше информации по этой теме. Это сообщение отредактировал(а) d06osipov - 6.5.2008, 18:43 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
d06osipov, если честно, я не очень понимаю смысла дизассемблирования кода игры - в ней нет, по моему, каких-то очень серьезных алгоритмов, требующих такого подхода, хотя про OpenTTD написано, что он был именно дизассемблирован с помощью IDA, но надо иметь в виду, что это Wiki. Хотя, возможно, что дизассемблированию подвергался код, ответственный за чтение файлов данных.
Lycifer, анализу подвергаются только определенные участки кода (остальные проглядываются "по диагонали" с целью определения точек входа в нужную процедуру). Поверь мне, например, сделать из shareware программы обычную можно минут за 30, если, конечно, сложных защит не понаставлено. И все это делается с помощью дизассемблера и hex-редактора. Никто никогда не будет разбираться в коде отрисовки окошек и пр., так как это можно сделать посвоему с тем же результатом. Это сообщение отредактировал(а) bsa - 6.5.2008, 23:07 |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Прикольно ![]() Чо правда? ![]() Эээ, а эт легально? Ну почему - не всегда ![]() |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
bsa, я с тобой согласен, конечно если нет защиты не какой(защита типа в файле лежит пароль), то nop забить легко, ну вот когда идёт речь например о подписи, то там не так всё просто, логику будеш понимать годами.(Это не считая что если программеры, не придумали защиты что-то вроде xml, а для получения которого требуется подключится к SQL - и сколько времени у тебя уйдёт? - года)
Добавлено через 2 минуты и 30 секунд Dump, если ты не понял я создал тему в которой речь идёт для получение программно инфу про исполняемый файлы(к примеру: контрольная сумма или изменить exe файл) |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ты хоть сам понял, что написал? Я, например, один раз снимал защиту с одной библиотеки, которая хотела серийник. Делов было на 10-20 минут... просто отключил проверку ключа на валидность. Логику понимать годами вообще не нужно. Алгоритмы цифровых подписей можно по пальцам пересчитать. Поэтому нужно определить какой из них и добыть ключ - остально дело техники. Если у тебя "что-то вроде xml, а для получения которого требуется подключится к SQL" ![]() Кстати, XML - это открытый текстовый файл, который взламывать смысла нет никакого. |
|||
|
||||
d06osipov |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 1.11.2006 Репутация: нет Всего: нет |
Ну, например, чтобы не перерисовывать графику. OpenTTD действительно использует графические файлы GRF из старого TTD. А как понять их формат? Кроме того, TTD уже была сделана очень добротно и очень хорошо продумана, ведь кроме алгоритмов интерес могут представлять ещё и проектные решения (правда, меня бы очень удивило, если бы их можно было бы выкопать из готовой программы). Кстати, у меня давно зреет вопрос по этой теме. Я сказал, что в exe файле нет никаких символов. Но RTTI позволяет получить по ходу выполнения программы строковое название типа! Откуда он их берёт? Неужели, действительно, названия всех классов лежат в исполняемом файле, если включён RTTI.
А что, Microsoft уже добилась принятия закона о запрете бесплатного и Open Source ПО? Добавлено через 8 минут и 10 секунд Бал ещё забавный случай связанный с первыми версиями коммерческой программы FineReader. Разработчики тогда заявили об использовании новейших алгоритмов --- имеющие опыт чтения машинного кода могли убедиться в этом, отыскав их признаки в дизассемблированном коде. Однако, позже выяснилось, что никаких алгоритмов нет, а разработчики специально запутывали код. |
||||
|
|||||
Любитель |
|
||||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
А где же ещё? Читаем матчасть по typeinfo.
Во-первых, причём тут МС? Во-вторых, речь, конечно, про дизассемблирование какого-то продукта для осздания его аналога. |
||||
|
|||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
bsa, не выдумывай глупасти. ТО что ты проставил "nop" вместо проверки значения(а то и просто сделал переход к метке) - это все на энтуитивном уровне понятно. Так вот на счет подпись - почитай прежде чем писать(алгоритмы там не причем). Так что бы забить "nop", лучше отладчиком чем дизассемблером.
Насчет xml: Защиту строят так что бы "ХАКЕРАМ" было менее понятно(Например в .xml сохраняется класс и после чего требуется большое время что бы что-то из этого понять, так как его писал не человек, а машина) - так что дизассемблер это чисто так, что бы умнее казатся. Добавлено через 1 минуту и 20 секунд Любитель - ну я думаю тебе к дяди Билу |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Не, ну вообще и отладчик, и дизасм для редактирования непосредественно не преданзначены (хот ьи обычно поддерживают его как расширение). При чём тут XML? XML наоброт упрощает разбор ![]() ![]() Ещё раз - ты это к чему сказал? ? |
|||
|
||||
Lycifer |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
На счет .xml туда стока всего можно заполнить что бкз отладчика разобраться не реально(бывает что просто не реально = человеческой жизни просто не хватит) Всякие придуманные бинарные данные, если их будет сотен пять(строк) то что бы понять какой какой действительный.... Да, а еще прикольно когда выставляют последовательное сравнение этих строк в хаотическом порядки при чем можно очень долго улучшать защиту= большой логике что поломать в принципе не возможно.
Я имел ввиду что забить нупами операцию, просто так что бы перед кемнибудь повепендриватся (например перед друзьями) |
||||||||
|
|||||||||
bsa |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Кстати, когда содержимое класса куда-то сохраняется, то это, по моему, зовется сериализацией. Думаю, эта процедура не заслуживает, чтобы ей занимались через дизассемблер. Ладно. Все это был оффтопик. А по теме могу сказать, что существуют два типа действий: обратимые и необратимые. Так вот, компиляция - это необратимое действие, так как исходный текст программы получить невозможно в принципе, а при очень большом везении (компилятор в принципе не знает, что такое оптимизация) можно получить исходный текст похожий на оригинал только с относительно низкоуровневых языков (С, Pascal). А программу написанную на С++ еще сложнее преобразовать к исходному тексту, так как там используются шаблоны и пространства имен... |
||||||||||
|
|||||||||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
С этим я стобой согласен xml: у меня сейчас в проекте их тысячи(проект пишу понятное дело не сам), как раз в этом проекте используется xml файл для защиты(правда не только он), Сначала программа была написана для сериализации ключа, в проекте xml дисиализуется и проверка происходит со сравнениями(при этом всем проверка в нескольких файлах), также идет в набор к этом key.snk(если ты знаеш что это, если не знаеш то почитай) Добавлено через 47 секунд Насчет key.snk - товзлом отладчиком здесь ой как нужен |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
||||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
При чём тут именно XML? ;) Короче весь разговор об XML реально ни о чём ![]() ЗЫ Предлагаю закончить обсуждение ![]() Добавлено через 2 минуты и 18 секунд Сам понял, что сказал? Понятия не имею, что за key.snk, знаю, что *.snk в .Net используются для цифровой подписи (strong name key). При чём отладчик и что значит "взлом key.snk"? |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
Если когото редактирования exe файла не повергает в шок - значит он совсем не знает что такое серьезная программа.
Я не хочу больше с вами спорить - это бесполезно |
|||
|
||||
KaraKum |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Именно.
Приблизительно можно посчитать время, которое потратится на перевод .exe-файла в .cpp: время её создания умноженное на количество людей, которые её делали + сложность, связанная с непониманием того как именно разроботчики реализовывали те или иные вещи. Вообщем на переделку какой-нибудь среднестатистической игры может уйти с десяток лет - проще самому написать новую. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
KaraKum, а никто не пытается восстанавливать исходный код программы - это бессмысленно. Дизассемблирование нужно исключительно с целью "понять, как же они это сделали" и не более того. Большинство функций можно восстановить просто зная входные и выходные данные.
|
|||
|
||||
klfd |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 10.4.2008 Репутация: нет Всего: нет |
...
Это сообщение отредактировал(а) klfd - 18.5.2008, 11:34 |
|||
|
||||
500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
-------------------- |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |