Для того, чтобы завести некоторые функции в OS X (в особенности на ноутбуках), мы вынуждены прибегать к изменению DSDT и SSDT. В этом мануале мы расскажем основополагающие понятия работы с вашими оригинальными файлами ACPI.
Вы, конечно, можете использовать чужой DSDT и прочие файлы (config.plist, какие-то кастомные кексты), но это не гарантирует полноценной работоспособности, и даже наоборот приводит к непонятным, жутким, дичайшим багам. Вы банально не можете проверить происхождение этих файлов, и разобраться в них вы тоже вряд ли сможете. Любое маленькое изменение в настройках биоса, любое маленькое отличие по железу (будь то даже жёсткий диск другой модели), приводит к трагическим последствиям, вплоть до чрезмерного накала процессора, ведущего к износу компонентов железа.
Поэтому, давайте договоримся сразу – используем только оригинальные файлы, к которым причастны только производитель и мы.
Основные принципы работы с ACPI:
Основные, и в то же время эталонные принципы работы с DSDT:
Новый Лот — Бонус-Код — Патч 1.21 — Просадки FPS — Модпак — WoT Это Новости
Всегда использовать только оригинальные таблицы;
Нельзя брать таблицы из программ, наподобие AIDA64 или подобных, поскольку они подхватывают DSDT, который уже отредактирован загрузчиком операционной системы, а так же нельзя использовать патченный DSDT какими-либо программами, типа DSDTPatcher. Только оригинал, правленный руками, может выступать в качестве вашей основы для корректировки.
Никогда не брать чужие DSDT в сети;
Потому что даже из-за одного несовпадения значения в биосе, дсдт может работать криво, и вы не разберетесь в синтаксисе другого человека. А бед это может принести немало.
Используйте только MaciASL;
Никаких DSDTEditor, DSDTPatcher, и прочих программ. Ничего, кроме MaciASL. Актуальная версия лежит здесь.
Процесс патчинга происходит в несколько этапов:
Извлечение оригинальных файлов;
Разбор (disassembling) нативных файлов;
Анализ и фильтрация;
Патчинг;
Компилирование, и установка файлов.
Также, в статье есть несколько лайфхаков, как можно подправить некоторые вещи. Список “Якорей”:
Извлечение оригинальных файлов:
Patchmatic;
Clover (F4);
Linux.
Сборка iASL-декомпилятора через терминал;
Исправление проблемы с просыпанием компьютера.
Начинаем.
1. Извлечение оригинальных файлов.
Любой биос сообщает ACPI-таблицы операционной системе. Следовательно, их можно извлечь из любой ОС, для дальнейшей работы по корректировке файлов.
Успешное извлечение возможно в Linux, OS X, Windows, а так же с помощью Clover’а. Нативные файлы в целом идентичны, но могут иметь различные названия (в зависимости от софта). В этой статье мы сфокусируемся на трёх методах извлечения: Используя patchmatic в OS X; Используя Clover; Используя Debian-образный Linux.
Рекомендуем ознакомиться со всеми, чтобы выбрать для себя что-то наиболее подходящее.
Извлечение с помощью Patchmatic:
Если вы уже установили OS X, но вы не использовали опции загрузчика по корректировке ACPI, вы можете извлечь нативные DSDT/SSDT через patchmatic. Скачайте Patchmatic здесь: https://github.com/RehabMan/OS-X-MaciASL-patchmatic. Для большей лёгкости использования в терминале, положите копию (необходимо разархивировать) в директорию “/usr/bin”.
Самый странный Мод для GTA San Andreas #shorts
После установки patchmatic’а, вызывайте терминал, и вводите следующее:
cd ~/Desktop
mkdir extract
cd extract
patchmatic -extract
Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake
Return (GPRW (0x6D, 0x03))
>
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake
Store (Arg0, PMEE)
>
Источник: torrentmac.name
Что такое патченная программа
Скриншот программы Shape Collage
Shape Collage — лучшая, на мой взгляд, программа для создания эффектных коллажей из набора фотографий. Коллаж в виде «разбросанных фотографий» создается буквально за несколько кликов, результаты ее работы я частенько использую при оформлении статей. Когда-то давно программа была бесплатной, затем аффтар решил подрезать с нее денег, в незарегистрированной версии добавил маркеры на готовый коллаж и запретил экспорт в .PSD-формат. Предыдущие версии были написаны на Java, регистрация с обязательной онлайн-активацией, поэтому нормально подкорректировать их мне не удавалось. С 3-й версии программа Shape Collage переписана на Qt, размер заметно подрос, но зато появилась возможность вносить в ее работу любые нужные нам изменения.
Скачиваем дистрибутив, устанавливаем, смотрим что у нас получилось. Среди мегатонн библиотек Qt находится главный исполняемый файл ShapeCollage.exe. Он ничем не упакован, отправляем его в дизассемблер и параллельно смотрим на поведение программы. А нам сразу же предлагают обновиться до версии «Pro», где нет маркеров и есть возможность сохранять коллажи в редактируемом формате PhotoShop.
Окно регистрации программы
При вводе ключа выполняется принудительная онлайн-проверка, она же активация. То есть какой бы мы ключ ни ввели, до момента проверки он будет считаться невалидным. Придется патчить, чтобы программа работала вообще без ключа или около того. Поскольку в Shape Collage заявлен так называемый режим «Pro», то есть полный, то искать надо что-нибудь связанное с этим словом.
Например, по строке «Shape Collage Pro» поиск выводит нас на интересный участок кода, по всей видимости как раз отвечающий за реакцию на успешную или неуспешную активацию. Часть кода приходится пропускать, так как он не относится напрямую к интересующей нас ветке алгоритма.
Code (Assembler) : Убрать нумерациюВыделить код
- . text : 00490047 mov [ esp + 4 ] , esi
- . text : 0049004B leaebx , [ ebp + var_98 ]
- . text : 00490051 mov [ esp ] , ebx
- ; Вызвать функцию проверки
- . text : 00490054 call sub_47F460
- ; Сохранить ее результат из регистра AL в регистре BL
- . text : 00490059 movbl , al
- . . .
- ; Часть кода пропущена
- . . .
- ; Значение BL нулевое?
- . text : 00490097 testbl , bl
- ; Да, переход на сообщение о неправильной регистрации
- . text : 00490099 jz loc_490B60
- . . .
- ; Часть кода пропущена
- . . .
- ; Установить в заголовок, что программа работает в полноценном Pro-режиме
- . text : 00490163 movdwordptr [ esp + 4 ] , 0
- . text : 0049016B leaebx , [ ebp + var_1DC ]
- . text : 00490171 mov [ esp ] , ebx
- . text : 00490174 callds : _ZN11QMessageBoxC1EP7QWidget
- . text : 0049017A movdwordptr [ esp + 4 ] , 0FFFFFFFFh
- . text : 00490182 movdwordptr [ esp ] , offset aShapeCollage_5
- ; «Shape Collage Pro»
- . text : 00490189 call [ ebp + var_228 ]
- . text : 0049018F mov [ ebp + var_A4 ] , eax
- . text : 00490195 leaesi , [ ebp + var_A4 ]
- . text : 0049019B mov [ esp + 4 ] , esi
- . text : 0049019F mov [ esp ] , ebx
- . text : 004901A2 callds : _ZN11QMessageBox7setTextERK7QString
- . . .
- . . .
- ; Сюда выполняется переход при BL=0
- . text : 00490B60 loc_490B60 :
- . text : 00490B60 movdwordptr [ esp + 4 ] , 0
- . text : 00490B68 leaebx , [ ebp + var_1DC ]
- . text : 00490B6E mov [ esp ] , ebx
- ; Сообщение о неправильном серийном номере
- . text : 00490B71 callds : _ZN11QMessageBoxC1EP7QWidget
- . text : 00490B77 leaedi , [ ebp + var_C0 ]
- . text : 00490B7D movdwordptr [ esp + 0Ch ] , 0
- . text : 00490B85 movdwordptr [ esp + 8 ] , offset aInvalidLicen_0
- ; «Invalid License Key»
- . text : 00490B8D movdwordptr [ esp + 4 ] , offset dword_52E148
- . text : 00490B95 mov [ esp ] , edi
Что мы видим? Вызывается функция проверки по адресу 0047F460, на основании ее результата статус и заголовки программы меняются на «Pro» или выводится сообщение о неправильном лицензионном ключе. Значит, чтобы как минимум любой ключ считался правильным, функция проверки должна всегда возвращать AL=1. Для этого патчим ее начало командами MOV AL,1 и RET. Сохраняем изменения.
Программа успешно «зарегистрирована»
Патченная программа работает прекрасно, никаких ограничений по экспорту в .PSD, никаких маркеров при сохранении. Цель достигнута. При этом регистрационный ключ никуда вводить не пришлось, соответственно, онлайн-активация идет лесом. Но можно ли обойти момент активации, чтобы программа уже как бы проверила серийник и как бы признала его валидным?
Предположим, что после активации введенные данные сохраняются где-то в сухом прохладном месте, и в дальнейшем программа проверяет их по мере возможности. Таких мест немного: или реестр, или файлы. Для отлова всех действий программы воспользуемся утилитой Process Monitor с фильтром по имени исполняемого файла.
Обращения программы к реестру
Как видно в логе работы монитора, программе надо проверить два ключа в реестре — «name» и «license». Ну раз надо, значит надо. Открываем Блокнот и рисуем в нем файл реестра, в котором по уже известному нам пути пропишем имя и лицензионный ключ. Естественно, значение ключа берется от балды. Сохраняем в файл, например, register.reg, и добавляем данные в реестр.
[HKEY_CURRENT_USERSoftwareShapeCollageOrganizationDefaults]
«license»=»1234567890»
«name»=»ManHunter / PCL»
Возвращаемся в дизассемблер к функции, которую мы недавно пропатчили, но на этот раз будем работать с оригинальным неизмененным файлом. Посмотрим на функцию проверки повнимательнее, предварительно загуглив назначение некоторых функций Qt:
Code (Assembler) : Убрать нумерациюВыделить код
- . text : 0047F4B2 leaesi , [ ebp + var_1C ]
- . text : 0047F4B5 moveax , [ ebp + arg_0 ]
- . text : 0047F4B8 mov [ esp + 4 ] , eax
- . text : 0047F4BC mov [ esp ] , esi
- ; Перевести строку в верхний регистр
- . text : 0047F4BF callds : _ZNK7QString7toUpperEv
- . text : 0047F4C5 pushecx
- . text : 0047F4C6 leaebx , [ ebp + var_20 ]
- . text : 0047F4C9 mov [ esp + 4 ] , esi
- . text : 0047F4CD mov [ esp ] , ebx
- . text : 0047F4D0 call sub_47EA40
- . text : 0047F4D5 pushedx
- ; Записать в стек значение указателя из регистра EDI
- . text : 0047F4D6 mov [ esp + 4 ] , edi
- ; Записать в стек значение указателя из регистра EBX
- . text : 0047F4DA mov [ esp ] , ebx
- ; Вызвать функцию сравнения строк
- . text : 0047F4DD callds : _ZNK7QStringeqERKS_
- ; Сохранить в BL результат ее работы
- . text : 0047F4E3 movbl , al
- . . .
- ; Часть кода пропущена
- . . .
- ; Записать в AL сохраненный результат из BL
- . text : 0047F543 moval , bl
- . text : 0047F545 leaesp , [ ebp — 0Ch ]
- . text : 0047F548 popebx
- . text : 0047F549 popesi
- . text : 0047F54A popedi
- . text : 0047F54B leave
- . text : 0047F54C retn
Оставим матерные комментарии по поводу чистоты и оптимизации кода, так как работа с библиотеками Qt находится где-то за гранью добра и зла. Загрузим программу в отладчик и до запуска поставим точку останова по адресу 0047F4DD, то есть перед непосредственным вызовом функции сравнения, после чего запускаем программу на выполнение. Когда отладчик остановится, посмотрим на стек. Как уже указанно в комментариях к коду, там должны содержаться указатели на сравниваемые строки.
Переходим в дампе на адрес из стека
Переходим из стека в дамп по первому адресу.
Переходим в дампе на адрес из дампа
На строку это не очень похоже, зато похоже на адрес в памяти. Попробуем перейти по нему и посмотреть, что находится там.
Серийник из реестра
Вот, уже лучше. Значит в стек кладется не просто указатель на строку, а указатель на указатель на строку. Это Qt, детка, улыбаемся и машем. В дампе на небольшом смещении от адреса, на который указывает указатель, отчетливо виден наш левый серийник из реестра. Проделаем тот же фокус со вторым адресом из стека.
Строка для сравнения
Похожая структура, но строчка уже другая. Несмотря на все навороты Qt с какими-то префиксами данных, все сводится к сравнению двух юникодных строк: лицензионный ключ из реестра и строка «YXJT4QZDMA». Логично предположить, что это и есть правильный ключ для указанного имени. Заменяем строку лицензии в регистрационном файле на найденную строку из отладчика. Снова добавляем данные в реестр.
[HKEY_CURRENT_USERSoftwareShapeCollageOrganizationDefaults]
«license»=»YXJT4QZDMA»
«name»=»ManHunter / PCL»
Запускаем программу, не забывая заблокировать онлайн-проверку фаерволом. На этот раз никаких окон регистрации нет, в заголовке указана Pro-версия, а в меню регистрационной информации красуется лицензионный ключ и имя из реестра.
Программа успешно зарегистрирована
Программа успешно зарегистрирована, на этот раз практически официально. Онлайн-проверку регистрации блокируем фаерволом. Можно было бы поставить точку, если бы не одно «НО». На своих компьютерах я наблюдал странное поведение программы, оно заключается в том, что при блокировке фаерволом, после завершения работы исполняемый файл ShapeCollage.exe остается в памяти.
Не знаю, с чем связан такой косяк, кривизна рук аффтара, особенности работы библиотек Qt или все в совокупности, но факт остается фактом. Или патченный файл, выпущенный в интернет, или корректная регистрация под присмотром фаервола и последующие танцы с бубном по принудительному убиванию зависшего в памяти процесса. Для себя я решил проблему следующим образом. Я просто пропатчил в файле адрес URL, по которому выполняется проверка ключа.
URL для проверки ключа онлайн
Скучные логи снифферов трафика приводить не буду, главное, что был найден злополучный адрес. Теперь достаточно его пропатчить, забив нулями, и программу можно смело выпускать в сеть. Лицензия больше не слетит.
Источник: www.manhunter.ru
Пропатчивание навигаторов Garmin






- Город Москва
Отправлено 24 Июнь 2013 — 10:35
СПАСИБО комраду Алексею (Bandos)
Чтобы ваш навигатор работал с файлами JNX делаем следующее:
1.Если у вас на навигаторе последняя прошивка,то вам нужно ее откатить на более позднюю,то есть у вас стоит 3.70 вам надо перепрошить 3.50(взял на примере своего навика),прошивки можно взять на офф сайте Garmin внизу уже пропатчиные,но они старые, а на офф сайте можно будет после скачать последнюю с помощь программы WebUpdater (скачиваем и устанавливаем на комп.) Еще вам понадобиться патчер прикрепленный файл.
2.И так у нас все готово для того,чтобы прапатчить навигатор ,чтобы он мог работать с файлами формата JNX.Делаем следующее: