Можно ли декомпилировать dll
Скажите, есть ли сегодня механизмы написания DLL на Delphi, которую невозможно было бы декомпилировать - если да, то дайте пожалуйста информацию или какие-то правильные ссылки на информацию, на какой версии Delphi и как это можно сделать?
Возможно, вы имели ввиду устойчивость к взлому? Потому что на любой версии Delphi привести исполняемый код к исходному виду pas-файлов не получится, если отключить отладочную информацию. Компилятор Delphi создает нативный, а не интерпретируемый код, так что можно считать что компиляция - это "путь в один конец"
Декомпилировать в исходный код невозможно будет dll, созданную в любой версии Delphi (если не включать в неё отладочную информацию, как сказали выше). Однако декомпилировать в псевдо-код или в ассемблер - можно любое приложение. И защиты от этого не существует, иначе приложение не сможет выполняться. Однако можно затруднить взлом, но это решается усложнением алгоритма работы приложения и слабо зависит от среды разработки. Ещё есть такая вещь как полиморфный код, который изменяет сам себя в процессе выполнения, но это с вероятностью 99% заставит делать стойку на ваше приложение все антивирусы.
Я делаю DLL, с которой будет работать коммерческая обработка 1С, конечно же смысл данной DLL в том, чтобы она выполняла часть сложного функционала, а так-же проверяла лицензии на неком веб-ресурсе. Т.е.коммерческая обработка 1С будет использовать методы из DLL. И вот нужно защититься от того, чтобы не могли вскрыть алгоритм того функционала, который делает DLL.
Ну тут можно попробовать шифровать код, как делают, например, всякие asprotect (AFAIR) и защиты на игрушках. Но при наличии желания, времени и средств вскрыть возможно любую защиту, поэтому весь вопрос в балансе - стоимость приложения/трудозатраты на взлом.
Раз вы не знаете, как защитить ваше приложение - лучше не пытаться изобрести велосипед, в противном случае очень велика вероятность того, что у вас будет навешана куча проверок, но все они легко нивелируются всего одной заменой jz на jnz (к примеру). Возьмите готовое решение - ASProtect, VMProtect и т.п. Это будет гораздо правильнее.
Добрый день всем! Помогите пожалуйста советом, как декомпилировать библиотеку dll, чтоб увидеть исходный ее текст. Заранее спасибо!
Декомпиляция DLL
Здравствуйте я хочу сделать мод на игру я скачал один мод и попытался его декомпилировать многие.
Декомпиляция dll
Возможна ли декомпиляция dll'ки, защищенной Themida, если есть ThemidaSDK.h и Obfuscator.cpp, с.
Декомпиляция DLL
Какими инструментами можно декомпилировать dll файла, который я закрепил?
А что вообще представляет собой dll? Это типа как архив RAR, в котором распологаются другие файлы, или это как бы подпрограмма, входящая в состав какой либо программы? Я хочу декомпилировать один новый аудиокодек (LPEC), просто интересно посмотреть, по какому принципу происходит оцифровка звукового сигнала в этот формат (LPEC Audio). В нем же я думаю и прописан алгоритм, по которому происходит оцифровка. Имя файла lpecplug.dll Я так думаю, что он написан на C++
А где ж тогда прописан алгоритм оцифровки? В описании этой библиотеки написано SONY LPEC Encoder/decoder. Я так думаю это и есть кодировщик.
А как ее дизассемблировать? Посоветуйте пожалуйста какую нибуть прогу для этого. Я просто начинающий прогер, я думал, что преобразование из машинного кода назад в исходный текст это декомпиляция. Там нан много чего есть, раз 5 Мб занимает. А так если ее открыть в обычном редакторе, то там одни закарючки, т.е. машинный код.
Да, но только не получится восстановить ее иходный код.
Максисум что можно - получить ассемблерный листинг программы - немного облагороженный машанный код.
Я не думаю что он как-то поможет понять алгоритм работы DLL, т. к. чтобы его понять, нужно иметь не малые знания и опыт работы с ассемблером.
Не факт! Там может быть много "мусора". Тут многое зависит от использованого компилятора.
Я понял. Но я хотел узнать не алгоритм работы DLL, а алгоритм оцифровки звукового сигнала с помощью этой DLL. То есть исходный код восстановить невозможно? А можно как то узнать, в каком редакторе написан этот кодер и соответственно каким компилятором скомпилирован?
Да, но только не получится восстановить ее иходный код.
Максисум что можно - получить ассемблерный листинг программы - немного облагороженный машанный код.
Я не думаю что он как-то поможет понять алгоритм работы DLL, т. к. чтобы его понять, нужно иметь не малые знания и опыт работы с ассемблером.
Не факт! Там может быть много "мусора". Тут многое зависит от использованого компилятора.
Открой в HEX редакторе.
Да, но только не получится восстановить ее иходный код.
Максисум что можно - получить ассемблерный листинг программы - немного облагороженный машанный код.
Я не думаю что он как-то поможет понять алгоритм работы DLL, т. к. чтобы его понять, нужно иметь не малые знания и опыт работы с ассемблером.
Не факт! Там может быть много "мусора". Тут многое зависит от использованого компилятора.
Открой в HEX редакторе.
Кстати, никто не знает, где взять крэк для этой программы? А то у меня всего 21 день остался для регистрации.
Есть разные dll:
------если под Win32 - лучше про это забыть, потому, что там фактически сохраняется исполняемый код. Но если очень надо, то есть дизассемблер IDA.
------если под дотнет, то есть стандартный дизассемблер ILDASM.
IDA у меня есть, но я открывал с помощью PE Explorer. Там сразу видно стало, что находится внутри ДЛЛ. Там папки, в них иконки, текстовые файлы, функции и т.п. Т.е. я увидел то, что хотел. Спасибо вам всем большое за помощь мне в дизассемблировании библиотек ДЛЛ.
Есть разные dll:
------если под Win32 - лучше про это забыть, потому, что там фактически сохраняется исполняемый код. Но если очень надо, то есть дизассемблер IDA.
------если под дотнет, то есть стандартный дизассемблер ILDASM.
Интересно, а как в DLL и в EXE добавляются ресурсы? То есть всякие картинки, иконки, иногда там даже мелолии бывают и видеозаписи короткие в формате AVI.
Просто интересно, как добавить в программу ресурсы, допустим, если сам пишешь какую-нибудь программу?
А с помощью программы PE Explorer можно добавлять ресурсы? Там есть возможность редактирования и удаления ресурсов. А функция добавления есть там?
Добавлено через 3 минуты
Может они добавляются в той же среде программирования, в которой пишут исходный код перед компиляцией? То есть пишут программу, добавляют ресурсы, а затем компилируют. И получается в конечном итоге готовая DLL или EXE.
DLL не отличается от EXE. это по сути один и тот же формат PE файла, за исключением того что в DLL не предусмотрена точка входа в программу и сам DLL помечен в заголовке своей "структуры" что он DLL - динамически подключаемая библиотека. Это файлы ОС Виндовс представляющие собой байт код разделенный на разделы информационные , ресурсные, непосредственно сам код - хотя его может даже и не быть )))
Декомпиляция из dll в C++
У меня есть библиотека dll, как её можно декомпилировать в C++? Точно знаю, что она написана на.
Декомпиляция dll файла
Читал, все говорят что можно, а чем не пишут. Сам файл размером 101 Кб. Написан он по любому на C.
Декомпиляция .dll файла
Вопрос поднимался, но там всё довольно старо. Можно ли как-то декомпилировать .dll, изменить в.
Декомпиляция .dll и .exe, написанных на VC++
Здравствуйте. Я далек от программирования, но люблю поиграть в игрушки и поэкспериментировать. У.
Декомпиляция 32 битной dll и компиляция в 64 битную
Доброго времени суток. Может кто сталкивался в задаче перевода 32 битной dll в 64 битную. Есть.
Декомпиляция .dll файла и разбор содержимого
Всем Привет! С помощью JetBrains dotPeek 2019.3.4 декомпелировал dll файл часть содержимого.
Декомпиляция .dll файла и разбор содержимого
Всем Привет! С помощью JetBrains dotPeek 2019.3.4 декомпелировал dll файл часть содержимого.
Декомпиляция exe файла для изменения параметра подключения
У меня такая проблема. Есть скомпилированный рабочий exe файл-программа, которая подключается по.
Декомпиляция DLL
Здравствуйте я хочу сделать мод на игру я скачал один мод и попытался его декомпилировать многие.
Декомпиляция компиляция .xap файла
День добрый! Подскажите плиз. Чем можно декомпилировать .xap файл и потом его правильно собрать.
PEx86, 0 protection
На сей раз нам дают exe-шник.
Загружаем его в IDA Pro.
В программе не сохранена отладочная информация, поэтому мы не видим привычных нам названий функций типа main. Давайте просмотрим строки в программе, для этого нажмем +F12.
Мы находимся в секции rdata. Давайте найдем все ссылки в коде на этот адрес. Для этого нажмем X.
Таким образом в коде программы есть всего одно обращение к нашей строке. Кликаем два раза и переходим в код.
Мы находимся в основном коде программы. Декомпилируем.
Здесь происходит проверка какого-то числа a2 и строки a1. Давайте переведем числовое в символьное.
Для этого необходимо на числе нажать R. И наш код преобразился.
Строку мы теперь знаем, осталось выяснить что за число a2. Посмотрим все ссылки на данную функцию.
Она вызывается всего один раз.
Как можно увидеть в качестве второго параметра передается длина строки. Проверим найденный пароль.
Сдаем и получаем 5 очков.
Отладчики:
-
, бесплатный, прекрасный 32-битный отладчик, для которого вы можете найти множество пользовательских плагинов и скриптов, чтобы сделать его еще более полезным. , бесплатный, вполне способный отладчик от Microsoft. WinDbg особенно полезен для просмотра внутреннего устройства Windows, поскольку он знает о структурах данных больше, чем другие отладчики. , SICE друзьям. Коммерческое использование и разработка прекратились в 2006 году. SoftICE - это своего рода хардкорный инструмент, который работает под управлением операционной системы (и останавливает всю систему при запуске). SoftICE по-прежнему используется многими профессионалами, хотя его может быть трудно получить и он может не работать на некотором оборудовании (или программном обеспечении, а именно, он не будет работать на картах Vista или NVIDIA gfx).
ELFx86, Basic
Нас просят найти пароль.
Загрузим программу в отладчик IDA Pro (я пользуюсь версией 7.0) и нажмем F5, чтобы декомпилировать программу.
Таким образом введенное имя сравнивается со строкой john, а пароль — с the ripper.
Таким образом мы верно решили задание и получаем свой пароль. Сдаем его и зарабатываем еще 5 очков.
Дизассемблеры:
-
(коммерческая) - топовый дизассемблер / отладчик. Используется большинством профессионалов, таких как аналитики вредоносных программ и т. Д. Стоит довольно много долларов (существует бесплатная версия , но она довольно ограничена) (бесплатно) - немного устарел, но выполняет свою работу. Я считаю, что в наши дни W32Dasm отказался от программного обеспечения, и существует множество созданных пользователями хаков для добавления некоторых очень полезных функций. Вам придется поискать лучшую версию.
C, GCC32
Рассмотрим самый простой случай. Это первое задание на реверс.
В заданиях такого типа, когда пароль хранится в виде строки, его можно найти не использую никаких специальных средств. Давайте запустим программу, и посмотрим что она выводит.
Таким образом, из расположенных рядом строк, есть одна, похожая на пароль. Попробуем ее.
Задание выполнено. Сдаем пароль, получаем 5 очков.
Извлечение и просмотр внедренного исходного кода
Исходные файлы, внедренные в файл символов, можно извлечь с помощью команды Извлечь исходный код в контекстном меню окна Модули.
Извлеченные исходные файлы добавляются в решение как прочие файлы. В Visual Studio функция "Прочие файлы" по умолчанию отключена. Чтобы включить эту функцию, установите флажок Инструменты > Параметры > Среда > Документы > Показывать прочие файлы в Обозревателе решений. Без включения этой функции вы не сможете открыть извлеченный исходный код.
Извлеченные исходные файлы отображаются в разделе прочих файлов в Обозревателе решений.
Создание и внедрение исходного кода для сборки
ELF-C++, 0 protection
Нам предлагают решить программу на C++.
Сделаем граф поменьше.
Таким образом нам нужно пройти два условия. Разберем их. В первом условии количество аргументов сравнивается с 1. То есть в программу должно быть больше одного аргумента (первый — это название программы).
Разберем второе условие.
Введенная нами строка сравнивается со строкой, которая передается в качестве параметра в функцию plouf. Декомпилируем ее.
Разбираем код. На самом деле a2 — является строкой. Таким образом, цикл выполняется от i=0, до момента пока i-й элемент строки а2 не будет равен 0 (то есть пока не достигнет конца строки).
V3 = a2[i]
V5 = length(a3)
V6 = a3[i%v5]
То есть строка по адресу a1 будет равна двум проксоренным строкам a2 и a3. Вернемся в главную функцию и найдем эти строки.
Так нам нужно определить параметры var_C и var_10. Их найдем чуть выше. Это строки unk_8048ВС4 и unk_8048DCC соответственно.
Найдем значение строк.
Что же, напишем код, чтобы их проксорить.
PE-DotNet, 0 protection
Определить его можно с помощью утилиты file.
Давайте откроем проект CrackMe и найдем функции и методы.
Метод Button1_Click проверяет пароль по нажатие кнопки.
В исходном коде найдем пароль. Проверем его.
На этом пока все. Продолжение следует… Вы можете присоединиться к нам в Telegram. Там можете предлагать свои темы и участвовать в голосовании на выбор темы для следующих статей.
Известные ограничения
Требуется режим прерывания выполнения
Создание исходного кода с помощью декомпиляции возможно только в том случае, если отладчик находится в режиме прерывания выполнения и приложение приостановлено. Например, Visual Studio переходит в режим прерывания, попадая в точку останова или в исключение. Вы можете легко активировать прерывание выполнения Visual Studio при следующем запуске кода с помощью команды Прервать все ().
Ограничения декомпиляции
Отладка оптимизированных сборок или сборок выпуска
При отладке кода, декомпилированного из сборки, которая была скомпилирована с использованием оптимизаций компилятора, вы можете столкнуться со следующими проблемами:
- точки останова могут не всегда быть привязаны к соответствующим исходным расположениям;
- при пошаговом выполнении шаг может не всегда переходить в правильное место;
- имена локальных переменных могут быть неточными;
- некоторые переменные могут быть недоступны для оценки.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Надежность декомпиляции
Относительно небольшой процент попыток декомпиляции может привести к сбою. Это происходит из-за ошибки пустой ссылки точки последовательности в ILSpy. Мы устранили этот сбой путем перехвата таких проблем и корректного завершения попытки декомпиляции.
Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.
Ограничения при работе с асинхронным кодом
Результаты декомпиляции модулей с шаблонами кода async/await могут быть неполными или неудачными в целом. Шаблоны кода async/await и машины состояния yield state-machine в ILSpy реализованы только частично.
Дополнительные сведения можно найти в описании проблемы GitHub Состояние генератора PDB.
Только мой код
Параметры режима Только мой код (JMC) позволяют Visual Studio выполнять шаг с обходом системы, платформы, библиотеки и других вызовов непользовательского кода. Во время сеанса отладки в окне Модули отображаются модули кода, которые отладчик воспринимает как "Мой код" (т. е. пользовательский код).
При декомпиляции оптимизированных модулей или модулей выпуска создается непользовательский код. Если отладчик прерывается в декомпилированном непользовательском коде, появляется окно Отсутствует источник. Чтобы отключить режим "Только мой код", перейдите в раздел Инструменты > Параметры (или Отладка > Параметры) > Отладка > Общие и снимите флажок Включить только мой код. .
Извлеченный исходный код
Исходный код, извлеченный из сборки, имеет следующие ограничения.
- Имена и расположение созданных файлов нельзя настроить.
- Файлы являются временными и будут удалены Visual Studio.
- Файлы помещаются в одну папку без использования какой-либо иерархии, которая была в оригинальных исходных файлах.
- Имя каждого файла содержит хэш контрольной суммы файла.
Edit 2: I now use DotPeek from Jetbrains. Its ability to decompile as I need to while debugging is amazing.
ILDASM is your friend. But Reflector is a soulmate
Or you could use MS’s ILDAsm (also free)
With Reflector check the file disassembler plugin too if you want to extract source.
Мой друг скачал какое-то вредоносное ПО с Facebook, и мне любопытно посмотреть, что оно делает, не заразив меня. Я знаю, что вы не можете декомпилировать .exe, но могу ли я хотя бы просмотреть его в сборке или подключить отладчик?
Извините за сверхпоздний ответ . но, как мне кажется, это произошло так: она запустила вредоносную программу, которая в какой-то момент заспамила всем ее контактам в FB (мне) ссылку на "видео", в котором вас просили скачать "новый кодек". Я предполагаю, что в этом смысле он вел себя как червь.
С помощью отладчика вы можете выполнять сборку программы в интерактивном режиме.
С помощью дизассемблера можно более подробно просмотреть сборку программы.
С помощью декомпилятора вы можете превратить программу обратно в частичный исходный код, предполагая, что вы знаете, на чем она была написана (это вы можете узнать с помощью бесплатных инструментов, таких как PEiD - если программа упакована, вам нужно сначала ее распаковать. ИЛИ Detect-it-Easy, если вы нигде не можете найти PEiD. В настоящее время DIE имеет сильное сообщество разработчиков на github ).
Создание исходного кода
Символы не загружены
Исходный код не найден
Создание исходного кода
Символы не загружены
Исходный код не найден
Декомпиляторы:
Некоторые связанные инструменты, которые могут пригодиться во всем, что вы делаете, - это редакторы ресурсов, такие как ResourceHacker (бесплатно) и хороший шестнадцатеричный редактор, такой как Hex Workshop (коммерческий).
Кроме того, если вы проводите анализ вредоносных программ (или используете SICE) , я искренне предлагаю запускать все внутри виртуальной машины, а именно VMware Workstation . В случае SICE он защитит вашу реальную систему от BSOD, а в случае вредоносного ПО - вашу реальную систему от целевой программы. Вы можете прочитать об анализе вредоносных программ с помощью VMware здесь .
Лично я использую Olly, WinDbg & W32Dasm и некоторые более мелкие служебные программы.
Кроме того , помните , что разборка или даже отладки других людей программного обеспечения, как правило , против лицензионного соглашения в по крайней мере :)
Я ценю последний абзац за его общность, хороший совет, но он забавен в контексте вопроса: я сомневаюсь, что вирус поставляется с лицензионным соглашением с конечным пользователем! ;-)
На самом деле, некоторые вредоносные программы и даже трояны в последнее время содержали в себе лицензионные соглашения (ох уж эти русские . ). Конечно, они могут (и остаются) игнорироваться исследователями, потому что можно предположить, что никто не пойдет с ними в суд. .. Кроме того, они обычно слишком плохо написаны, чтобы что-то значить в суде в любом случае.
Обратите внимание, что большинство вредоносных программ в наши дни (по крайней мере, скомпилированные вредоносные программы) могут легко определить, работает ли оно в VMWare, Virtual PC, WINE, VirtualBox и т. Д.
Все, что я вижу, это кодирование типа X86, такое как push mov. Я хочу декомпилировать exe, но не знаю языка исходного кода. При загрузке я выбрал переносимый исполняемый файл и мета-компьютер. Я вижу функцию запуска, но она написана на языке ассемблера. Может ли кто-нибудь помочь мне просмотреть реальный код, например C или C ++?
Отличный пост psoul отвечает на ваш вопрос, поэтому я не буду копировать его хорошую работу, но я чувствую, что это поможет объяснить, почему это одновременно совершенно правильный, но также ужасно глупый вопрос. В конце концов, это место, где можно учиться, верно?
Современные компьютерные программы создаются посредством серии преобразований, начиная с ввода читаемого человеком тела текстовых инструкций (называемого «исходным кодом») и заканчивая машиночитаемым телом инструкций (также называемых «двоичным» или «машинным»). код").
Способ, которым компьютер выполняет набор инструкций машинного кода, в конечном итоге очень прост. Каждое действие, которое может предпринять процессор (например, чтение из памяти, сложение двух значений), представлено числовым кодом. Если бы я сказал вам, что число 1 означало крик, а число 2 означало хихиканье, а затем поднял карточки с цифрами 1 или 2, ожидая, что вы будете кричать или хихикать соответственно, я бы использовал ту же систему, что и компьютер. работать.
Двоичный файл - это просто набор этих кодов (обычно называемых «операционными кодами») и информации («аргументы»), на которую действуют операционные коды.
Теперь ассемблер - это компьютерный язык, где каждое командное слово на языке представляет ровно один код операции на процессоре. Существует прямой перевод 1: 1 между командой языка ассемблера и кодом операции процессора. Вот почему сборка кодирования для процессора x386 отличается от сборки кодирования для процессора ARM.
Дизассемблирование сводится к следующему: программа считывает двоичный код (машинный код), заменяет операционные коды их эквивалентными командами на языке ассемблера и выводит результат в виде текстового файла. Это важно понимать; если ваш компьютер может читать двоичный файл, то вы также можете прочитать двоичный файл либо вручную с таблицей кодов операций в руке (ick), либо с помощью дизассемблера.
У дизассемблеров есть несколько новых уловок и все такое, но важно понимать, что дизассемблер - это, в конечном счете, механизм поиска и замены. Вот почему любое лицензионное соглашение, которое запрещает это, в конечном итоге является выдуванием горячего воздуха. Вы не можете сразу разрешить компьютеру читать данные программы, а также запретить компьютеру чтение данных программы.
(Не поймите меня неправильно, попытки сделать это были. Они работают так же хорошо, как DRM для файлов песен.)
Однако есть предостережения в отношении подхода к разборке. Имена переменных не существуют; такого не существует для вашего процессора. Вызов библиотеки чертовски сбивает с толку и часто требует разборки дополнительных двоичных файлов. А сборку чертовски тяжело читать в самых лучших условиях.
Большинство профессиональных программистов не могут сидеть и читать на ассемблере без головной боли. Для любителя этого просто не произойдет.
В любом случае, это несколько замалчиваемое объяснение, но я надеюсь, что оно поможет. Каждый может свободно исправлять любые искажения с моей стороны; Прошло много времени. ;)
В данной статье 5 первых заданий, узнаем основы дизассемблирования, решим задачи начального уровня реверса, а также декомпилируем dotNet приложение.
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Читайте также: