[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 8 лет 7 месяцев
  • Сообщений: 526
  • Репутация: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контрольная сумма), так что предпочтительнее, конечно, использовать его


Показать сообщения:    

Текущее время: 29-Мар 14:27

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы