Меню

Что значит пропатчить программу и как это сделать

Выполняю установку, настройку, сопровождение серверов. Для уточнения деталей используйте форму обратной связи

С патчами мы сталкиваемся не так часто, но и не так редко. В этой статье мы научимся патчить и создавать патчи. Патчить на самом деле легче, чем можно себе представить.

1) Учимся патчить.

Патчить будем на примере уязвимости для FreeBSD (http://www.securitylab.ru/vulnerability/368343.php). Качаем оттуда патч (wget http://security.FreeBSD.org/patches/SA-09:05/telnetd.patch). После этого нужно выяснить, куда же его положить, что бы патч прошёл успешно. Для этого можно вывести на экран первые несколько строк:

Смотрим внимательно и видим, какой файл он патчит. Поскольку путь начинается с contrib/telnetто можно предполодить, что файл должен находится в папке /usr/src. Копируем его туда и пробуем патчить:

Если после этого у вас на экран вывелось похожее на то, что ниже — значит всё удалось. Обычно стоит прочесть, вывод и удостоверится, что всё прошло succeed:

Если вдруг патчу не удаётся найти нужный файл, он выдаёт запрос на указания пути вручную:

Hmm. Looks like a new-style context diff to me.
The text leading up to this was:
—————————
|*** convert1.sh Sat Apr 11 13:40:58 2009
|— convert.sh Fri Dec 5 17:00:52 2008
—————————
File to patch:

после введения пути:

Хочу заметить, что утилита patch имеет так же параметры, которые можно использовать. Например, довольно позным может оказаться ключ -C (—check), который позволяет посмотреть, какие изменения будут произведены с файлом, но не пропатчит.

2) Создание патчей.

— обычный

Создание патчей происходит немного сложнее, чем патчить. Для этого берём 2 версии одного и того же файла, помещаем их в разные директории, называем одинаково. После этого будем пользоваться командой diff для выявления разницы между файлами. Здесь самое главное соблюсти порядок в котором подаются имена файлов. ИСХОДНЫЙ_ФАЙЛ — эталонный файл, ИЗМЕНЁННЫЙ_ФАЙЛ — файл, который содержит изменения.

После такой операции будет создан файл file.patch, который собственно будет патчем. Файл патча можно так же открыть в текстовом редакторе и подредактировать пути к файлам, если необходимо.

Вот это и всё. Если хотите большего функционала — читайте man к указанным здесь бинарникам.

— через svn

Опубликовано с разрешения редакции журнала RootUA и газеты FOSS News

Источник

Кое-что о том, как можно патчить приложения

Ищем, что патчить

Если тебе повезло и ты поймал программу в процессе ввода серийника на одной из этих API, то, выйдя из дебрей системных библиотек и немного потрассировав код, ты, скорее всего, найдешь место проверки или какой-нибудь другой манипуляции введенных тобой данных. Можно также ловить место регистрации функциями ShowWindow, MessageBoxA, MessageBoxExA, MessageBoxIndirectA и недокументированной MessageBoxTimeoutA, отвечающими за выводы различных окошек с сообщениями. Соответственно, если выдаются сообщения вида “Вы ввели неправильный код” или что-то очень похожее, то, когда вылезешь из системных дебрей, посмотри на код, находящийся выше/раньше вызова этого сообщения, чтобы найти код, критичный для взлома.

Если же программа проверяет, запустили ее с оригинального диска или нет, то, как правило, бывает достаточно брякнуться на API GetDriveTypeA. Эта функция просто проверяет тип заданного диска (в данном случае диска, с которого запущена программа). Если возвращенное значение равно пяти, значит это CD/DVD-привод. После запуска этой функции должны идти разные проверки на соответствие метки диска, наличия какого-нибудь файла и т.п. Их и нужно патчить.

Нашли? Патчим!

Существует несколько методов патчинга. Результаты их применения не отличаются: в любом случае будут модифицированы одни и те же байты и программа перестанет напоминать о регистрации, однако реализация методов различается. Разберемся с каждым.

Прямой патчинг

Сразу же попытаемся отловить процедуру регистрации, поставив бряки на описанные в начале статьи API-функции. Итак, жмем на кнопку Already Paid в NAG’е и видим окно с приглашением ввести регистрационный код.

Итак, анализируя выведенные строки (благо из-за размера exe-файла их там не очень много), я наткнулся на подозрительную:

0040631B PUSH game.0041DAA8 ASCII “radll_HasTheProductBeenPurchased”

Не нужно быть reverse engineer’ом, чтобы, взглянув на инструкцию call esi и на esi = 77E7B332 kernel32.GetProcAddress, сообразить, что из какой-то библиотеки берется адрес функции radll_HasTheProductBeenPurchased и он записывается в некоторую переменную по адресу 0042319C. Если посмотреть на строку Reflexiv.00A70000, можно сделать вывод, что эта функция берется из библиотеки ReflexiveArcade.dll. Ее мы обнаружим в папке игры в директории ReflexiveArcade.

Чтобы отучить игру от вредной привычки просить зарегистрироваться, достаточно пропатчить функцию с длинным названием в найденной библиотеке так, чтобы она все время утверждала, что программа успешно зарегистрирована. Но зачем патчить DLL, если можно пойти более изящным путем: просто записать по адресу 0042319C адрес не radll_HasTheProductBeenPurchased, а адрес своей функции, которая всегда возвращала бы единицу, означающую, что игра зарегистрирована.

Все. Нажмем Cancel для отмены дальнейшего ввода кода. Получена мини-функция из шести байт. Теперь вернемся к месту, где записывался адрес функции radll_HasTheProductBeenPurchased. Для этого выделим в окне регистров EIP, тыкнем по нему правой кнопкой мыши и выберем Origin. Окажемся по адресу 0040631B. В принципе, весь местный код нужно вырезать совсем: нам ни на что не сдался этот GetProcAddress. Поэтому, стоя на адресе 0040631B, нажмем пробел и введем MOV EAX,419900, то есть подставим вместо оригинального адреса функции свой. Остальные команды нам не нужны, поэтому вводим далее инструкции nop до адреса 00406329 включительно.

Читайте также:  Как сделать фотографию на белом фоне в домашних условиях

Нам остается только сохранить все изменения в программе и протестировать ее. Выделяем весь код с 00401000 по 00419FFF, выбираем в контекстном меню Copy to executable->Selection и указываем в появившемся окне файл, куда хотим сохранить пропатченную версию игры. После этого можно закрывать отладчик и пробовать запустить игру. Вуаля! Она прекрасно запустилась и, обращаю на это твое внимание, без всяких приглашений зарегистрироваться. При выходе из игры нас мило благодарят за приобретение.

Кстати, не могу не заметить, что подобным образом ломается любая игра с сайта www.reflexive.net.

Патчинг загрузчиком

Суть метода заключается в следующем: уже после того, как был обнаружен код для патчинга, пишется некоторая специальная утилитка-загрузчик (лоадера), которая запускает программу, ждет, пока она распакуется, и проверяет код на целостность, после чего патчит код. Использование этого метода позволяет, во-первых, обходить разнообразные противные проверки, работающие в начале программы, а во-вторых, уменьшить размер крэка до минимума.

; заголовок окна с сообщением об ошибке

; сообщение об ошибке

; имя файла программы

; записываемый в память процесса байт

write_buffer db 90h

; адрес, по которому будет

check_addr DWORD 401050h

; переменная, в которую производится

; считывание байта процесса

; структура информации о процессе

; структура информации о параметрах

start : ;начало программы

; запускаем нужные нам программы.

;если результат выполнения равен 0,

; то программа не найдена и не запустилась

; информируем об ошибке

; считываем память процесса по

; адресу check_addr в буфер buffer размером в 1 байт

; проверка на успешность считывания

; проверка на распакованность

; программы по этому адресу

;ждем проверку целостности кода

; записываем 1 байт write_buffer

; по адресу check_addr

; продолжаем выполнение программы

; закрываем хэндл процесса и

; завершаем свой процесс

= «text-align: justify;» > end start

Тут, я думаю, тебе все понятно. Просто запускаем процесс с помощью CreateProcess и модифицируем после некоторой паузы и нескольких проверок код программы, ответственный за регистрацию с помощью WriteProcessMemory. Кстати, по такому же принципу пишутся трейнеры к играм.

Inline-патчинг

На дорожку

Источник

LiveInternetLiveInternet

Рубрики

Метки

Цитатник

Скажите, Вы когда-нибудь любили? Скажите, Вы когда-нибудь любили? Скажите, в Вашем доме плыл.

Творожно-лимонное печенье с глазурью (быстро и легко) Творожно-лимонное печенье с глазурью (бы.

Кабачковый рулет с фаршем Кабачковый рулет с фаршем — нарядная закуска на каждый день и украшен.

Приложения

Музыка

Подписка по e-mail

Поиск по дневнику

Статистика

Как пользоваться keygen, crack, patch

Ни для кого не секрет, что в нашей стране 90% установленных программ на компьютерах не являются лицензионными. Программы уже взломаны, но чтобы их установить требуются некоторые навыки. В статье рассмотрены самые распространенные способы установки пиратских программ. Как пользоваться keygen? Как пользоваться crack? Что такое request code? Как пользоваться patch?

1. Инструкция по установке в текстовом файле

Первое, на что надо обратить внимание, есть ли в этой папке файл «readme.txt» или «прочти меня.txt» (могут быть и другие названия). Очень часто в нем написана инструкция по правильной установке программы. Если файл с инструкцией есть, то, смело, открываем его и следуем инструкции. Если файла нет, то ситуация немного усложняется.

2. Серийный номер в текстовом файле

Для подтверждения прав на программу иногда требуется серийный номер. Имея его, вы сможете установить программу бесплатно.

Серийный номер может потребоваться либо при установке программы, либо при первом запуске уже после установки. Пропустить этот шаг вы не сможете, дальше программа не пойдет, пока вы не введете серийный номер (рис.1).

Пример серийного номера: ADE-R119-F196-k9BA-17CD

В папке с программой (в той же папке что и установочный файл) может находиться файл с серийным номером. Чаще всего он называется «Серийный номер», «Serial number», «Ключ», «key», «crack». Открываем этот файл, копируем серийный номер и вставляем его в нужное место.

3. Как пользоваться keygen

Вот пример такой программы, если ее запустить (рис.2):

Нажимаем на кнопку «Generate» (рис.3)

4.Получение доступа при помощи «Request code»

Еще один вариант. Во время установки программы или после запуска установленной программы, на экране появляется окно с регистрацией. В папке с установочным файлом должен быть keygen.exe, crack.exe или что-то еще.
Пример окна регистрации (рис.4):

Иногда нужно выбрать режим регистрации, например, выбрать «ввести серийный номер». На экране появляется окно для ввода серийного номера. (рис.5)

В данном случае:
— Get an activation code – получить код активации
— Enter an activation code – ввести код активации (нужный нам вариант)

Теперь нам нужно скопировать «Request code» из окна на рис.4 (рис.5) и вставить в окно на рис.6. Выделяем Request code и нажимаем Cntr+C (горячая клавиша копировать).
Вставляем в последнее окно скопированный код (Cntr+V).

Обратите внимание.
Код скопировался не полностью, а только первая строчка. Вторую строчку кода нужно скопировать отдельно, в окне на рис.6 нужно поставить пробел, скопировать и вставить оставшуюся часть «Request code». Должно получиться так (рис.7):

Читайте также:  Как сделать самому тюнинг фар на ваз 2110

После этого в программе на рис.7 нажимаем кнопку «Calculate» (иногда называется Generate). Должно получиться так (рис.8):

Копируем «Auth code» из программы рис.7 в окно на рис.5 и получаем так (рис.9):

Нажимаем Next или Ok. Нам должны сообщить, что регистрация прошла успешно. Теперь программой можно пользоваться бесплатно.

Такая ситуация встречается довольно часто. Главное не забывайте, что Request code состоит из двух строчек.

5. Как пользоваться patch

Первое, что мы должны сделать, это установить программу (ту, которую мы хотим сделать бесплатной). После установки открывать программу не надо.

Дальше, надо переписать patch (или другой файл-патч) в папку, в которую мы установили программу. Скорее всего это диск С, папка Program files, папка с название программы (C:/Program files/«название программы»).

Дальше открываем файл patch (или другой файл-патч)

Вот пример файла patch.exe (рис.10):

Чаще всего в этом файле только одна кнопка. В данном случае это кнопка Apply patch. В некоторых случаях она может называться Crack. Нажимаем на эту кнопку и программой можно пользоваться бесплатно.

6. Файлы, для установки программы бесплатно, отсутствуют

Может быть и такое, что программу вы скачали без пиратского «лекарства». То есть, без готовых серийных номеров, кейгенов или патчей. Тогда задача усложняется. Лучше конечно скачивать программы с готовыми «лекарствами». Но что если все-таки такая проблема встала?

Источник

Патчинг EXE,DLL

Полезные советы

В этой статье хочу рассказать как самостоятельно пропатчить exe или dll файл,чтобы не ждать когда это сделает для вас кто-то другой.
Автор-Я.Статья не открывает Америку,просто поможет новичкам освоить самостоятельный патчинг бинарных файлов.

Примеры таких патчей:
— CamTime (увеличение времени бездействия камеры);
— DisableActiveDivertsNote (выключение сообщения о переадресации);
— Disable Loudspeaker Note (выключение сообщений о включении громкой связи);
— ChangeSplashScreen (изменение сплеша перед ручками)

Возьмем для примера два патча: DisableLoudspeakerNote и ChangeSplashScreen, на их основе разберем патчинг.

Нас интересует последняя строка. В ней указан файл,который патчится и собственно что на что меняется.

Жирным цветом выделен файл который патчится.
Красным-искомое значение в файле.
Синим-то,на что нам нужно поменять искомое значение в файле.

Для начала нам нужно определить в роме файл или нет,ведь патч может не работать и потому,что просто не подходит для этого файла.
Узнать можно у создателя патча или самостоятельно.
Чтобы узнать самостоятельно нужно открыть расжатый файл в hex-редакторе (MobilHex, встроенный hex-редактор в X-Plore).
Если бинарный файл вне рома,то адресам 18, 19, 1A, 1B соответствуют байты 00 00 0A 00.

Тут нужно рассказать немного о структуре хекс-редактора и принципе редактирования.
В левой стороне в основном расположены начальные адреса строки байтов. По центру-сами байты. Справа-переведенный из байтов текст.
Нумерация адресов идет в шестнадцатиричной системе. Тоесть порядок нумерации такой:

красным выделены нужные значения.В белой табличке адреса байтов,чтобы было понятнее и нагляднее.

Начинаем редактирование файла:

1. Копируем файл Z:/sys/bin/phone.exe в любую удобную директорию (у меня он был не сжат).

2. Открываем phone.exe в любом hex-редакторе

3. Выбираем в опциях и пишем искомое значение (обозначено красным цветом).
Если поиск не даст результатов, значит патч не подходит для этого файла. Тогда вам нужно обращаться к создателю патча, самостоятельно вы ничего не сможете сделать.
Если искомое значение найдено, то меняем его на нужное значение (обозначенное синим цветом).
Для наглядности смотрим на скрины:

(со SplashScreen.exe и патчем поступаем тем же образом).

4. После замены сохраняем файл.

5. После перемещаем модифицированный файл в c:/sys/bin/.Также если это exe то нужно не забыть скопировать соответствующий ему ресурсный файлик(если он у него есть конечно) из Z:/resource/apps/ в соответствующую директорию на диске С, иначе будут вечные перезагрузки смартфона. Для phone.exe это phone.r16, а у splashscreen.exe ресурсного файлика нету (значит и копировать не чего).

6. После применяем и ставим в автозапуск домайн ромпатчера (RPDomainPlus) патч c2z4bin.

Если все сделано правильно,то модифицированый файл должен работать.

Источник

Что значит пропатчить программу и как это сделать

Позже для распространения патчей стали использоваться магнитные ленты. Когда же были изобретены дискеты, патчи стали отправляться на дискетах в конвертах по почте. Сегодня, в эру повсеместного интернета, конечные пользователи скачивают патчи с сайтов разработчиков.

Виды патчей

Разработчики программного обеспечения публикуют патчи в различной форме.

Применение

Коротко выполняемые патчами задачи можно описать следующими действиями:

Операционные системы

В случае обновления операционных систем и серверного программного обеспечения патчи играют важную роль в поддержании безопасности и устранении дыр в защите. Чтобы облегчить установку таких обновлений, операционные системы часто поддерживают автоматические или полуавтоматические механизмы обновления. При этом осторожные пользователи (в частности, системные администраторы) обычно отключают автоустановку патчей, пока не убедятся в стабильной работе исправленных версий на чужих примерах. В случае больших или очень важных патчей разработчики часто сначала сами проводят предварительное тестирование (бета-тестирование).

Программное обеспечение

В разработке программного обеспечения патчи иногда требуются для устранения проблем с часто используемыми или важными библиотеками и частями исходного кода. Такое обычно происходит в широкомасштабных проектах, и значительно реже — в малых.

Читайте также:  Как сделать ссылку на паблик вконтакте словом

В open source-проектах патчи, исправляющие частные проблемы или добавляющие некоторую функциональность, такую как поддержка других языков, обычно отправляются авторам или публикуются в сети. Например, на ранних стадиях разработки ядра операционной системы — Линус Торвальдс, его автор, получал тысячи писем с патчами к его версии от множества программистов.

Сервер веб-мастерами для добавления функциональности к NCSA HTTPd. По легенде, отсюда и возникло название — означающее, что это есть по сути коллекция патчей: «a patchy server».

Все изменения кода Firefox и других продуктов Mozilla Foundation существуют в виде патчей, которые учитываются с помощью «багов» в системе

Компьютерные игры

В отличие от обычных приложений, в которых исправляются обнаруженные ошибки и недочеты и вводятся новые функции, для компьютерных игр патчи играют особую роль. В них они могут быть предназначены для изменения правил или алгоритмов игры. Необходимость в выпуске таких патчей возникает порой при обнаружении возможности жульничества игроков.

Особенно важны такого рода патчи в многопользовательских играх, где превосходство за счет недоработок игры одного игрока над другими имеет более серьезные последствия, чем при одиночной игре против компьютерных соперников. Чтобы сделать невозможным дальнейшее распространение найденной возможности читерства, исправленной с выходом патча, а также избежать конфликта версий, многопользовательские игры часто не допускают к игре игрока, использующего версию игры, отличную от официальной.

Другим примером является защита от копирования. Патч может параллельно внести изменения в систему защиты игры, что может выражаться, например, в невозможности устанавливать последующие патчи и обновления, если установлена «пиратская» версия игры.

Патч встроенного ПО

Во многих устройствах программное обеспечение находится в памяти самого устройства в виде т.н. прошивки, которая включает в себя сразу и операционную систему, управляющую работой устройства, и собственно набор программ, обеспечивающих выполнение тех или иных его функций. Поэтому если разработчиком предусмотрена возможность замены его прошивки (перепрошивка), то применение патча на программное обеспечение устройства чаще всего представляет собой полную замену целиком всей прошивки на более новую версию. Обычно такой патч состоит из файла, содержащего обновленный программный код в двоичном виде, и специальной программы, записывающей его в память устройства вместо прежней версии. Пример такого вида патчей — перепрошивка БИОСа материнской платы компьютера или современного мобильного телефона, подключенного к компьютеру.

Поскольку по сути перезаписывается не какая-то часть программ или функций, а вся операционная система устройства, любая неожиданная ошибка или вмешательство в процесс перепрошивки (например, выключение питания) могут помешать корректно записать ее до конца, что в свою очередь чаще всего приводит к полной неработоспособности устройства.

Разработка патчей

Автоматизация установки

Зачастую современные программы обновлений могут управлять патчами. Автоматизация всего процесса упрощает задачу конечного пользователя — ему достаточно запустить программу, а та уже решит, нужно ли ставить патчи, и в каком порядке. Бывает и так, что программа скачивает обновления из интернета без участия пользователя. Такой способ часто применяется в поддержке серверного программного обеспечения и операционных систем. В ситуации, когда администратору приходится следить за несколькими компьютерами такой подход помогает поддерживать надёжность системы в целом. Обычно таким способом происходит установка обновлений безопасности.

Вспомогательные утилиты

Чтобы все изменения, совершаемые патчем, происходили автоматически без участия пользователя существуют специальные утилиты, с помощью которых создают самоустанавливающиеся патчи. В них записывается информация, какие файлы и должны быть заменены, или какие программы запущены после распаковки, если должны быть изменено содержимое файлов. Чаще всего полученный таким образом патч представляет собой самораспаковывающийся архив, содержащий обновленные файлы целиком.

Интересные факты

Microsoft Flight Simulator выпустила специальный патч после атак 11 сентября 2001-го на World Trade Center в Нью-Йорке. Из карты города были изъяты башни торгового центра. Это редкий пример патча, выпущенного из уважения к чувствам людей, а не для исправления ошибки в программе или усиления защиты от копирования.

См. также

Ссылки

Смотреть что такое «Патч (программный)» в других словарях:

Патч — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете отредактиро … Википедия

Crysis — Разработчик … Википедия

Crysis Warhead — Обложка Crysis Warhead Разработчики Crytek Budapest (будапештский офис) … Википедия

CryEngine 2 — Игровой движок (Список) Официальный логотип движка … Википедия

OSx86 — Mac OS X 10.5.6, установленная на ноутбуке HP … Википедия

PhysX — У этого термина существуют и другие значения, см. PhysX (значения). PhysX Физический движок Оф … Википедия

PhyreEngine — Графический движок Разработчик Sony Computer Entertainment Europe Research Development Ключевой программист Мэтт Свобода Аппаратные платформы IBM PC совместимые компьютеры, PlayStation 3, PlayStation Portable … Википедия

PhysX (движок) — У этого термина существуют и другие значения, см. PhysX. PhysX Физический движок Официальный логотип Разработчики … Википедия

Final Fantasy VII (Famicom) — Final Fantasy VII Заглавный экран Разработчик ShenZhen Nanjing Technology Издатель ShenZhen Nanjing Technology Часть серии Final Fantasy (неофициально) Даты выпуска … Википедия

Источник

Adblock
detector