D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
В продолжении цикла статей по реверсинг-инжиниринг для начинающих, предлагаю ознакомится с 20 статьей. И перед тем как начнем я немного изменю формат - написания статей
Нововведение в цикле статей:
- А именно, ранее было так что: для написания статей я выбирал программы, на свое усмотрение и кому то нравился такой подход а кому то нет. Поэтому что бы все были довольны, я предлагаю: совершенно новый формат. А именно - вы: в личные сообщения, скидываете софт что Вам интересен и я делаю статьи на этот софт на форуме.
- При этом, не важно есть на программе упаковщики, протекторы и на каком языке она написана. Самое главное что бы вы, подробнее рассказали (описали) о принципе активации (Я думаю это не сложно ?). То есть по какому принципу активируется программа, какие ограничения в демо-версии, триал версии или нюансы что влияют на активацию. После чего ваш софт, автоматически попадет в следующую статью (Номер - 21). Сразу скажу, что если софт будет очень сложный то в статью попадут по максимуму таких программ а в следующую за ней, остальной список. Так что, скинув софт, вы гарантировано - не будете игнорированы.
- При таком подходе, форум получит максимально пользы от предоставленной информации. А некоторые пользователи, что возмущались
, наконец то прекратят возмущаться и у них есть шанс скинуть свой софт что бы убедится что и такое я могу ломать (Думаете я могу ломать только простенький софт ???, увы это не так
). Просто, я не экстрасенс, при подборе материала для статей и кому нравится а кому нет - тут же смысл понятен ? Или я не прав ?
Если бы какой то софт что в привате или брут или чекер то нормально а если нет то плохо
. Так думали некоторые пользователи форума. Ну так в чем вопрос ? - Велком в ЛС и ваш софт попадет в статью.
- Для меня, не важно какой софт ломать, главное разобрать защиту и понять её смысл. А далее, если есть опыт (А он есть, поверьте мне
) и разбираетесь то это дело времени и все зависит от того сколько проверок в софте и все.
- Для следующей статьи, принимаются заявки: на любой софт, сложный, с протекторами, пакерами, привязками к железу. Давайте это сделаем и всем будет интересно что с этого получится. Да, я не спорю что может быть вариант софта с которим и не справлюсь, но это очень маленький процент, а далее время покажет.
Но забегая, немного наперед, скажу что: сегодня мы ломаем софт - одного и того же разработчика, написанного на разных языках программирования.
Ну что, начнем!.
Если вкратце сказать а с более детельной информацией на официальный сайт программы: https://www.gillmeister-software.com/products/batch-text-replacer/
Программа Bаtch Tеxt Replacеr предназначена для автоматической замены текста в большом количестве файлов. Она позволяет задать файлы, в которых нужно произвести замену, а также указать текст, который нужно заменить и новый текст, на который нужно заменить.
Программа работает следующим образом:
- Пользователь выбирает файлы, в которых нужно произвести замену текста.
- Пользователь указывает текст, который нужно заменить, и новый текст, на который нужно заменить.
- Программа открывает каждый выбранный файл и производит замену текста.
- Замененные файлы сохраняются в указанной пользователем папке.
Не смотря на то что: на программе нет дополнительной защиты (обфускатор, пакер, протектор), как показывает, вспомогательная утилита, ExeInfo PE - программе имеет свои особенности в защите.
Для примера, по стандарту (картинка выше)
- При запуске программы появляется окно в котором отображается количество дней тестового периода.
- Во "Menu" в вкладке "О программе" - показан статус что программа не зарегистрирована (not registered).
- Ну и последнее, если попробовать активировать софт, выдуманным ключом то: Кнопка что отвечает за активацию неактивна. А именно - Continue.
Ну и для начала видео, перед тем как продолжим:
Все манипуляции, с кодом , Видео: BTR-1.wmv (Имеется и в архиве, на всякий пожарный).
Исходя из моего плана: Что планируется рассмотреть и что мы уже увидели то - существует множество способов защиты программ от взлома:
1. Кодирование и обфускация: Это процесс изменения исходного кода программы таким образом, чтобы его было сложно понять и изменить. Некоторые инструменты автоматически обфусцируют код, заменяя переменные на бессмысленные имена, добавляя лишние инструкции и т.д. Это усложняет анализ кода и позволяет усложнить взлом. Подобное мы уже рассматривали и не раз.
2. Шифрование и защита данных: Если программа работает с конфиденциальными данными, их следует шифровать. Шифрование данных делает их непонятными для таких как я и вы , которые получают доступ к программе или базе данных. Также можно использовать механизмы защиты данных, такие как хэширование или подпись данных, чтобы убедиться, что они не были изменены. Частично, мы это уже рассматривали.
3. Проверка целостности программы: Чтобы обнаружить взлом программы, можно использовать механизмы проверки целостности. Это может быть достигнуто с помощью хэш-сумм или цифровых подписей. Проверка целостности позволяет обнаружить изменения в программе, которые могут быть вызваны взломом. И такой вариант был в моих статьях.
4. Ограничение доступа к программе: Ограничение доступа к программе может быть достигнуто путем реализации механизмов аутентификации и мутации кода. Например, можно требовать ввода пароля или использовать механизмы идентификации, постоянно меняя структуру. С таким видом защиты мы еще не работали но всему свое время. Кстати мутация, это более относится уже к вирусам, так как подобные алгоритмы ой как не любят антивирусы, но про это позже.
Но вот вопрос в чем ?, в сегодняшней программе нет особых зацепок. То есть при том что есть надпись "Demo" в главной форме и форма активации. Но на самом деле поиск по данным критериям ничего нам не даст. Сегодня нам нужно искать новые подходы, кто сомневается может сам провести анализ, исходя из того что мы уже пробовали. Ну вот почему я говорю что ничего простой способ не даст, ну хотя бы потому что каждый из вас ценит свое время и зачем его терять попусту - если можно все сделать намного проще.
А именно использовать программу Resource Hacker

С помощью софта вы можете изменять внешний вид и поведение программы, изменяя ее ресурсы. Например, вы можете изменить иконку приложения, заменить изображения в пользовательском интерфейсе или изменить текстовые строки в диалоговых окнах. Программа также может быть полезна для извлечения ресурсов из исполняемых файлов, если вам нужно использовать или модифицировать их в другом контексте.
Что я имею в виду я сейчас продемонстрирую на видео а после уже прокомментирую, так будет намного проще и понятней.
Все манипуляции, с кодом , Видео: BTR-2.wmv (Имеется и в архиве, на всякий пожарный).
Так вот: Что же мы делаем в данной ситуации и почему там полезная утилита что мы использовали, выше. Дело все в том что при использовании Resource Hacker - мы значительно упростили себе работу. А именно, мы нашли индекс строки где идет вызов функции, что явно - крутится возле проверки лицензии регистрации. Но это еще не все, для начала я приведу пример что мы сделали, не смотря на то что видео выше - имеется.
Долее имея индекс этой строки её нужно перевести в 16 - шестнадцатеричное значение. А именно: используя возможности Calculator индекс строки 62767 (в 16-чной системе) будет равен = 0F52Fh.
После чего, возникает вопрос: Ну и как мы эту информацию можем использовать, в наших целях ?. Так вот, конечно же, я не просто так это показываю. А все очень просто: воспользовавшись поиском, в отладчике IDA Pro, мы поищем это значение (Именно: 0F52Fh). Логика тут есть и сейчас вы, в этом, убедитесь. Понятное дело что поначалу ничего не понятно, но я стараюсь показать - максимально доступно. Если будут вопросы, по делу, то можете в теме задавать - на адекватные вопросы я отвечу, по возможности. Не думайте что это все так сложно, мое дело показать вам всю цепочку событий. Помните ?, как я говорил и говорю - главное разобраться и понять что мы делаем а все остальное это уже технические детали. То есть основа, всему, это логика и понимание действий, идем далее.
И делается это так.
А более подробней, я предлагаю, посмотреть видео.
Все манипуляции, с кодом , Видео: BTR-3.wmv (Имеется и в архиве, на всякий пожарный).
А далее, обязательно, нужно обратить внимание на код функции sub_CB2AB4, что вызывается рядом. Как говорится: Дыма без огня не бывает.
- Функция проверки вызывается по адресу: 00ADCD54 и если параметр Al что вернула наша функция равен 2 то программа зарегистрирована. А если нет то конечно же не зарегистрирована.
- А по адресу: 00ADCD6B, конечно же, условный переход JZ, то есть проверка этих самых условий. Ну и если что то не так, то сами понимаете, что капут и не активированный софт.
Вариант 1: Ну если функция просит значение AL = 2 то чего там думать да гадать - давайте ей предоставим такую возможность, принудительно
Вариант 2: Такой же вариант только с отличием в том что мы изменили, только одно условие в виде флага = 1. То есть: Используя второй вариант мы просто, заранее делаем два флага = 1 то есть Активируем лицензию. Согласитесь, получается интересная ситуация, как не крути а одну и туже последовательность можно - изменить в разных направлениях. Это так, для справки, но и для того что бы натолкнуть Вас на мысль.
В итоге, не смотря на выбор, вариантов, патчинга мы имеем результат в виде:
Некоторые пользователи спрашивали и сравнивали работу с разными отладчиками. Но если не любительски взяться за дело то лучше выбрать IDA Pro.В итоге мы можем сделать выводы какие:
- IDA Pro это мощный инструмент для анализа и реверс-инжиниринга программного обеспечения, который обладает мощнейшими особенностями.
- Может преобразовывать машинный код в ассемблерный код, что позволяет анализировать и понимать работу программы на низком уровне.
- Автоматически анализирует программу и создает граф поток управления, который помогает понять структуру программы и взаимодействие между функциями.
- Поддерживает множество архитектур процессоров. Это позволяет анализировать программы, написанные для разных платформ.
- Отладчик может работать с различными форматами файлов, такими как PE (Portable Executable), ELF (Executable and Linkable Format), Mach-O и другие.
- Имеет встроенный отладчик, который позволяет выполнять программу по шагам и анализировать ее состояние во время выполнения.
- Поддерживает разработку плагинов и скриптов на языке Python (Что не маловажно), а это позволяет расширить функциональность инструмента и автоматизировать задачи анализа. Про это мы еще поговорим и я поделюсь своими наработками.
- Имеет интуитивно понятный графический интерфейс, который упрощает работу с инструментом и позволяет визуализировать результаты анализа. Хотя понятно что изначально - ничего не понятно, но имейте терпения.
- IDA Pro является одним из самых мощных инструментов для реверс-инжиниринга и анализа программного обеспечения.
Все эти пункты я не просто так озвучил а только за того что, в будущем, а именно статья 21 - будет тому примером. Я покажу и расскажу все особенности и отличия в сравнении.
Ну и финале, по этой программе, советую посмотреть видео - там все подробно показано. Особенно видео будет полезно для тех кто вообще сомнивается в своих возможностях, попробуйте не все так сложно как кажется.
Все манипуляции, с кодом , Видео: BTR-4.wmv (Имеется и в архиве, на всякий пожарный).
Но поскольку я говорил что мы, сегодня, анализируем софт одного разработчика (на разных языках) то давайте приступим к анализу следующего пациента.
Gillmeister Word Text Replacer - это программа, которая предназначена для автоматической замены текста в документах Word. Она позволяет легко и быстро заменять определенные слова или фразы на другие, сохраняя форматирование и структуру документа. И обладает широкими возможностями настройки замены текста, включая использование регулярных выражений, игнорирование регистра, замену только целых слов и многое другое. Она также поддерживает работу с пакетами документов, позволяя заменять текст одновременно в нескольких файлах. Имеет простой и интуитивно понятный пользовательский интерфейс, который позволяет легко настроить параметры замены и выбрать файлы для обработки. Программа предоставляет возможность предварительного просмотра замен перед их применением, что помогает избежать ошибок. Ну а более подробную информацию можно найти на официальном сайте программы: https://www.gillmeister-software.com/products/word-text-replacer/download.aspx. Моя же цель - сделать её бесплатной, для народа и показать принцип защиты для Вас.
Принцип активации софта, как обычно, кажется простым - мы сначала проанализировали этот момент а после уже посмотрим на чем написан софт (Картинка выше).
- При запуске программы, нам говорят что 30 дней тестовый период. Ок, мы это поняли и идем далее.
- В окне "О программе (About)" нам показано что программа не зарегистрирована, это тоже понятно.
- А при вводе, левых, регистрационных данных - которые я ввожу традиционно (-EXE-XSS.IS) - нам дают понять что регистрация провалилась, это также очевидный факт.
Ну проверка обновлений на стороне сервера, да и все - от этого еще никто не пострадал

Exeinfo PE - это программа для анализа исполняемых файлов формата PE (Portable Executable). Она позволяет определить тип файла, а также информацию о версии и компиляторе, используемом для создания файла.
Программа имеет следующие функции и все их мы будем использовать, в дальнейших статьях. А некоторые уже использовали, но информация предоставлена не просто так:
1. Программа может определить, является ли файл исполняемым, DLL-файлом, скриптом и т. д. Это полезно, когда вы сталкиваетесь с неизвестным файлом и хотите узнать его назначение.
2. Может показать информацию о версии файла, включая номер версии, дату компиляции и авторство. Он также может определить компилятор, используемый для создания файла, такой как (к примеру) Microsoft Visual Studio или Borland Delphi.
3. Программа позволяет просмотреть различные разделы файла PE, такие как заголовок файла, таблицу импорта и экспорта, ресурсы и т. д. Это может быть полезно для понимания внутренней структуры файла и его содержимого.
4. Поиск и сравнение файлов: программа может искать файлы по определенным критериям, таким как сигнатура файла или хеш-сумма. Он также может сравнивать файлы и находить различия между ними.
Так вот, выходя из анализа, а это:
Мы можем сделать вывод что на программе нет дополнительной защиты. А с учетом того что она написана на, языке программирования, C# должно быть все просто - проще некуда. Так ли это ?, нам предстоит еще узнать. Ну а теперь переходим к отладке программе - как я показывал и говорил ранее. Сначала проведм анализ а далее действия и после уже выводы, в финале.
Также, как я показывал в предыдущих статьях, если утилита Exeinfo PE (или аналоги) - не определила разрядность программы, то есть x32 или x64. То отладчик подскажет, если что не так то при отладке он покажет соответствующее сообщение. Для примера, когда вы захотите запустить программу с под отладчика - для анализа:
Ну и естественно, тогда мы будем использовать отладчик DnSpy. Почему именно его - я говорил в предыдущих статьях. Повторяться не будем и следуем далее. А далее
я предлагаю, для начала включить логику и подумать. А именно, если программа, из анализа выше - при запуске выводит сообщение с количеством оставшихся триальных дней. То значит, где то, при запуске и вызывается функция проверки. А если она есть, то зацепившись за нее, мы раскрутим всю цепочку событий до винтика и сделаем правильные выводы. После чего пропатчим программу, собственно достигнем нашей, главной, цели. Так и делаем, закидываем программу в отладчик DnSpy x32 и переходим к точке входа программы.
Кто еще не знает то:
Точка входа в программу - это место, где программа начинает своё выполнение. В большинстве программ точка входа представляет собой функцию или метод, которые вызываются автоматически при запуске программы. В языке программирования C#, например, точкой входа является метод - main (по стандарту).
В нашем же случае, особых отличий нет. Но есть некоторые особенности на которые стоит обратить внимание. Но сначала смотрим на картинку, ниже:
Но для начала, посмотрите видео, что бы все было понятней на все 100%.
Все манипуляции, с кодом , Видео: BTR-5.wmv (Имеется и в архиве, на всякий пожарный).
В итоге что у нас получилось, выходя из просмотренного видео. Из основного, исполняемого файла, программы (WordTextReplacer.exe) - мы перешли в динамическую библиотеку (Decryption.dll). Эта библиотека расположена, радом, с исполняемым файлом программы. В предыдущих статьях, подобные конструкции - мы уже рассматривали.
А как мы знаем из предыдущих статей что:
- Динамическая библиотека (DLL, Dynamic Link Library) - это файл, содержащий код и данные, которые могут быть использованы несколькими программами одновременно. Они обычно содержат функции и процедуры, которые можно вызывать из других программ. DLL-файлы позволяют программам использовать общие ресурсы и функциональность, чтобы избежать дублирования кода.
- Одним из преимуществ использования динамических библиотек является: экономия памяти и удобство обновления программного обеспечения. Вместо того, чтобы каждая программа содержала полный код и данные, они могут ссылаться на общую DLL, что позволяет экономить ресурсы и упрощает процесс обновления (для общего примера).
- DLL-файлы могут быть написаны на различных языках программирования, таких как C++, C#, Delphi и других. Они также могут содержать ресурсы, такие как изображения, звуки и текстовые файлы.
- В операционных системах семейства Windows DLL-файлы широко используются для обеспечения общей функциональности, такой как работа с сетью, графическим интерфейсом пользователя, базами данных и другими задачами. Они также используются в разработке плагинов и расширений для программного обеспечения
А еще, в этих же библиотеках, могут хранится проверки данных лицензии. А именно вызовы функций или инных механизмов взаимодействия.
Так вот я веду это все дело к тому что: Если покрутить код и посмотреть зависимости, хотя часть строк зашифрованы (Обфускация) то можно понять что правит балом именно public bool Valid. Где в return передаются параметры и после чего принимается решение программой. Конечно же, нас, какие то условия не устраивают. И не смотря на старание разработчика усложнить алгоритм защиты, мы все же выяснили функцию что принимает главное решение по активации. Нам ничего не мешает, принудительно, заставить плясать программу по наши правилам. А именно: return this.dje_zBY67NUE7MFEZED9ZH7WF5_ejd; заменить на return true;. Ну и посмотреть что с этого получится.
Также, если мы хотим что бы лицензия отобразилась корректно. То есть на кого зарегистрирована программа то нужно и подправить форму "About (О программе)".
Для этого, нужно найти место где вызывается форма, тут ничего сложного нет. Для примера вот:
Весь процесс, от а до я можно посмотреть на следующем видео. Советую для укрепления материала.
Все манипуляции, с кодом , Видео: BTR-6.wmv (Имеется и в архиве, на всякий пожарный).
В итоге, мы получаем полностью зарегистрированную программу. Никаких триальных окон не появляется при запуске программы. Софт работает как лицензия, только с отличием в том что теперь его можно слить в интернет и все могут пользоваться без привязки к ключу активации. Свою работу я сделал и надеюсь всем было интересно.
А теперь немного подытожим \ и еще подскажу несколько нюансов:
- На сайте разработчика есть еще софт, он ломается также, по такому же принципу. Как мне нравится
когда люди клепают по 10 программ, продавая их. И у всех запрограммирован одинаковый алгоритм защиты. То есть, все тоже самое, отличие есть только по адресам где вызываются функции что логично.
- Как видите, при любой ситуации и при правильном подходе, можно найти верное решение, главное время и упорство.
- Жду предложений, по софту для будущих статей (как я говорил, в начале статьи)
, в личные сообщения - что бы не засорять основную тему. Гарантировано, все, ваши, предложения будут рассмотрены. После чего выйдет статья на форуме XSS.IS, где я так же покажу разбор той или иной защиты.
На сегодня, у меня, все. Всем доброй ночи!. :smile10:
В архиве:
В архиве:
Программы Virustotal:
- Batch Text Replacer / virustotal: https://www.virustotal.com/gui/file/1f0d6ee6c94d41dcfd36e4f926a28a25e6146df5a20b40bae4563fa94c2ea162
- Word Text Replacer / virustotal: https://www.virustotal.com/gui/file/f0e6042ac2585ff9c48e3e203bfa4d5b54c33d784206897dee18b2a8a2561afc
Инструменты для анализа:
- IDA v7.7 (Инсталлятор) / virustotal: https://www.virustotal.com/gui/file/84aa757b3f7262fc2bc05f3fc8b2591075e5cd3b6765d9b432efcb44b6e0c5cc
- R_hacker / virustotal:
- ExeinfoPe / virustotal: https://www.virustotal.com/gui/file/32e6df44a529d3bd543aae01365852990c0e7f3b4f84b5a7f9d7dfc18d6a46fd
- HttpAnalyzer / virustotal: https://www.virustotal.com/gui/file/f25541dee8f859b62c642d2e6e835c247900b5bc94a00cdbc4d894bab83796dd
- DnSpy x32 / virustotal: https://www.virustotal.com/gui/file/7ce05f1aafaaa87d046bbad1b07801777e724251b084bc7f70cef71c98b08105
- DnSpy x64 / virustotal: https://www.virustotal.com/gui/file/cc15f3f7836f5c976e058aabdd55af8635b484a6b9a5e94a2cb048856965f9e2
Скрытый контент для зарегистрированных пользователей.
Пароль к архиву: (S-T_20)-EXE-XSS.IS
Ссылка на файлы к статье:
View hidden content is available for registered users!