cartmenezz
- Стаж: 9 лет 2 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Блокировка проверки обновлений в Geek Uninstaller (правка в HEX-редакторе)Зачем?Возможно, не все согласятся что это вообще проблема, но меня окошко с сообщением о выходе новой версии всегда раздражало, к тому же программа сама обновляться не умеет, это надо идти на сайт, скачивать, заменять файл... При всем при этом каких-то существенных изменений обычно и нет. А програмка мне нравится, иногда бывает оставляю при настройке ПК. Некоторое время назад, искал решение, спрашивал так же и тут в чате, и мне подсказали что в файле есть ссылка, которую нужно править в HEX редакторе (спасибо всем кто помогал, особенно conty9). Учитывая свою слабую память, решил для себя все пошагово расписать (к тому же с HEX редакторами особо дел не имел, пришлось некоторые моменты гуглить). Конспект получился довольно подробный (возможно даже излишне). Подумал, вдруг однажды кому-то пригодится, решил выложить здесь.-Geek Uninstaller ищет сведения о новой версии на сервере, в файле:https://geekuninstaller.com/update.txt Эта ссылка прописана в самом файле geek.exe, чтобы сломать проверку обновлений, нужно удалить или изменить ссылку. Нужен HEX-Редактор , который умеет искать в разных кодировках (в данном случае Unicode). Например: WinHEX или HxD Примечания:- В файле Geek.exe на самом деле склеено два файла: geek.exe и geek64.exe, при запуске на x86 используется основной, на x64 - распоковывается geek64.exe (в %TEMP%)
- При повторном запуске, программа сверяем версию с сервером. На x64 системе также сверяет версию geek64.exe с той, что лежит во временной папке, запускается именно geek64.exe из временной папки, если она страрее - распаковывается более новый файл (тот, что вклеен в geek.exe).
- Отсюда есть нюанс: если на x64 системе запускался оригинал geek_1.0 - в %TEMP% был распакован geek64.exe (v1.0), допустим уже вышла версия 2.0, даже если мы запустим Мод версии 1.0 (с отключенной проверкой обнов) - будет предложено обновление, так как при запуске geek_1.0_mod не будет распоковки мода geek64.exe, ведь в %TEMP% та же версия - будет запущен распакованный ранее оригинал, который проверит обновы на сервере.
- Вывод: если точно не известно, был ли ранее на ПК Geek Uninstaller, надежнее держать и geek.exe (2в1) и geek64.exe , и ставить (класть) в соответствии с разрядностью Windows (к тому же в большинстве случаев только x64 и нужен, по крайней мере мне)
- Нужно обработать обе ссылки в файле geek.exe (вторая как раз находится в теле geek64.exe), потом запустить мод, и забрать geek64.exe из папки %TEMP%
Потребуются:Beyond Compare WinHEX FileUnsigner CheckSumPe (от nikzzzz) Порядок действий: 01. Открываем файл в WinHEX 02. Поиск >> Одновременный поиск (или значок "синий бинокль" на панели инструментов) 03. В поле поиска вписываем: update.txt 04. Ставим галочки на разных кодировках (ANSI, Unicode) 05. Ставим галочку "Показать вхождений", чтобы видеть список результатов, иначе для перехода к след.записи придется искать снова (вдруг их несколько) 06. Находим ссылки (в geek.exe их две, вторая в теле вшитого geek64.exe)
далее два пути: (a) Меняем один (больше и не нужно) символ в ссылке - в правом текстовом блоке меняем букву на другую. Например: Вместо "geekuninstaller.com" делаем "deekuninstaller.com" (b) Или затираем всю ссылку - в правом блоке текстовом блоке встаем на начало ссылки "h" (https..), при этом также выделяется две цифры в HEX блоке, соответствующие этому символу ("68"), встаем на них, поглядывая на правый текстовый блок, начинаем вводить нули ("00"), вводим пока справа не сотрется вся ссылка (ОСТОРОЖНО! лишнего нельзя стирать!!!)
- Можно в текстовом блоке выделить всю ссылку, выделение будет и в HEX, сохранится при редактировании (для наглядности).
07. После редактирования у файлов остается недействительная цифровая подпись, удаляем в FileUnsigner- Если запустить мод geek.exe (который 2в1) на x64 системе, в папку %TEMP% все равно распакуется geek64.exe с недействительной цифровой подписью, FileUnsigner ее не удалит, пока файл "вклеен".
08. После всех изменений желательно подправить контрольную сумму файлов, в CheckSumPe - Дополнительно: Удаление цифровой подписи geek64.exe, вклеенного в geek.exe:- Не уверен, так ли это надо (поидее можно вообще нигде не убирать ЦП, пусть она и не проходит проверку)
- geek64.exe, который будет распаковываться, не будет идентичен тому, что обработан FileUnsigner - у последнего в конце файла будет пустота вместо подписи,
а у того что будет распаковываться из geek.exe после этого метода - в конце будут нули (но иначе не получится, если просто удалить, изменится размер файла, работать не будет) 01. Берем три файла:geek_mod (2в1, после HEX правки и обработки FileUnsigner), geek64_mod (после распаковки из geek_mod и обработки FileUnsigner), geek64_unpacked (geek64, который распаковывается при запуске geek_mod) 02. Открываем все три файла в WinHEX 03. Открываем geek64_mod и geek64_unpacked в Beyond Compare (Выделяем файлы - ПКМ - Сравнить)- сравнивать файлы можно и в WinHEX, но это не очень удобно
04. В Beyond Compare: Сеанс >> Сравнить файлы используя >> Сравнить Hex 05. Смотрим оличия (кнопка "перечеркнутый знак ="), чтобы оценить "масштаб" 06. Жмем на панели "*", чтобы отобразить все содержимое, с помощью кнопок "Вверх/Вниз" на панели можно перемещаться от одного отличия к другому (если их несколько), жмем- Отличия подсвечены красным, если выделить позицию, внизу отобразится "адрес байта" (или нажать ПКМ). Это нам и нужно, это "смещение (offset)", запоминаем/записываем
07. В WinHEX идем на вкладку geek64_unpacked, Навигация >> Перейти к смещению (Alt+G) - Вводим значение из предыдущего пункта и переходим. И то же самое на вкладке geek64_mod- Так как в целевом geek_mod смещение будет другое, нужно его найти:
08. Выделяем в geek64_unpacked "Блок данных" (в HEX), которые надо будет менять (с запасом, чтобы исключить ложное совпадение)
09. Правка >> Копировать блок >> Хекс значения (Shift+Ctrl+C) 10. Идем на вкладку geek_mod, Поиск >> Найти Хекс значения (Ctrl+Alt+X) (или кнопка "Бинокль HEX"). Вставляем и ищем то, что копировали
- Теперь на всех трех вкладках мы находимся на смещении, с которого начинаются отличия
11. На вкладке geek64_mod выделяем и копируем блок изменений, вставляем на вкладке geek_mod в то же смещение: Правка >> Данные из буфера >> Записать (Ctrl+B), именно записать а не вставить (если выбрать Вставить (Ctrl+V), то блок не заменится а добавится (размер файла увеличится))
12. На вкладках geek64_unpacked и geek64_mod переходим (Alt+G) к смещению следующего отличия.- Так как основная часть ЦП находится в конце, в geek64_mod этот блок будет просто отсутствовать, поэтому переходим на смещение, что перед блоком данных с ЦП (так как оно есть в обоих файлах).
- Проверяем, что на вкладке geek64_mod далее и правда пустота
13. Теперь надо найти смещение начала ЦП в файле geek_mod - действуем как в пунктах "8-10":выделяем блок с частью ЦП на вкладке geek64_unpacked, копируем Хекс значения (Shift+Ctrl+C), вкладка geek_mod, Поиск >> Найти Хекс значения (Ctrl+Alt+X) (или кнопка "Бинокль HEX"). Вставляем и ищем то, что копировали - Теперь мы знаем смещение начала ЦП файла geek64_mod, вклеенного в geek_mod - 5FC9D0
14. На вкладке geek64_unpacked встаем на смещение начала ЦП (35EA00), выделяем все данные до конца файла: Правка >> Определить/Задать Блок >> Начало Блока = Текущая позиция, Конец блока = Конец файла- Галочка должна стоять на строке "Конец" (а не "Размер"), жмем OK, блок выделится
- Внизу будет указан выделенный Блок (Блок: 35EA00-36264F) и Размер
выделения (Размер: 3C50)
15. Вкладка geek_mod, встаем на смещение начала ЦП ( 5FC9D0), и: Правка >> Определить Блок >> Начало Блока = Текущая позиция, Размер = 3C50- и галочка должна стоять на строке "Размер"
- После применения выделится блок ЦП
16. Так как просто удалить блок мы не можем, чтобы не нарушить работоспособность файла, будем заполнять его нулями: Правка >> Заполнить блок (Ctrl+L) - Заполнить Hex значениями: 00
17. Сохраняем geek_mod.exe, запускаем, и проверяем отсутствие ЦП у распаковавшегося geek64.exe- Контрольные суммы у вшитого geek64 так не поправить (внутри geek.exe)
- По идее, нули в конце файла не проблема, но все-таки отдельно обработанный geek64_mod более правильный (никаких лишних нулей, подправленная в CheckSumPeконтрольная сумма), так что предпочтительнее, конечно, использовать его
|