Лекарство для CuteFTP EGOiST/TSRh (egoist_tsrh@bk.ru) Хакер, номер #079, стр. 079-062-6 Прога уже не будет лезть в инет и проверять серийник, но все-таки зайди в Help -> About. Разве тебя устроит какой-то там Temporary User? Ты потратил кучу времени, и об этом никто не узнает? Не бойся, сейчас все исправим :). Обычно (опять же можно сказать, что это распространенная ошибка) кодеры называют ключи в реестре стандартными именами, этот случай тоже не исключение. Откроем прогу в Хью, выбираем поиск в текстовом режиме и ищем UserName. Первое, что находится — это RegUserName (не правда ли, оригинально?). Переходим в hex режим, нажав Enter один раз. Ставим курсор на начало строки и запускаем поиск перекрестных ссылок. Оказывается, здесь идет запись имени в реестр — это видно по вызову Апи RegSetValueA. Жмем Shift+F7, а здесь как раз то, что надо. По x-ref видно, что вызывается функция OnInitDialog, которая, скорее всего, создает about-диалог (это можно явно проверить в дебаггере, поставив туда бряк). Если заглянуть в функцию, которая чуть выше вызывается на 004839b7, выясняется, что там осуществляется подключение к уже знакомому серверу в инете. [а где онлайн-чек?] 0046С160: xor eax, eax nop nop nop nop nop nop nop nop test al, al jmp 0046C56F 0046C171: nop Xor eax, eax по адресу 0046b7a2 нужно поменять на inc eax, nop, чтобы всегда возвращалась единица. Теперь осталось узнать, откуда именно в реестре читается имя. Запускаем Ольку, загружаем файл (File -> Open). Ставим бряк на 0046b7a2, пускаем прогу. Теперь вызывается about-диалог, срабатывает наш бряк, и выполнение программы останавливается. Затем выполняем d ecx: «.DEFAULT\Software\GlobalSCAPE\CuteFTP Home». Здесь 0x80000003 означает, что ключ находится в HKEY_USERS. Теперь создаем reg.reg-файл такого содержания: [люби себя и плюй] REGEDIT4 [HKEY_USERS\.DEFAULT\Software\GlobalSCAPE\CuteFTP Home] "RegUserName"="Здесь твой ник" Теперь, когда ты выполнил этот файл, информация в реестре обновится и программа будет показывать в about'е твой ник. [патч "на память"] Патчи обычно пишутся на ассемблере или генерируются патч-генерилками, для этого всего-навсего нужны два файла: оригинальный и пропатченый. Я примерно опишу здесь, как пишутся патчи. Скомпилированный ехе'шник при этом будет весить всего 2,5 Кб. Будем писать в Masm32, а для тех, кто не любит продукты Мелкомягких, советую прибегнуть к помощи Fasm. Для дальнейшей автоматизации, чтобы не переписывать код для каждой новой проги, а только поменять данные, надо придумать некую структуру данных. Далеко за учебниками ходить не надо: не так уж это и трудно. Для структуры нам нужно: количество оффсетов (адреса, по которым будут патчиться байты), сами оффсеты, imagebase ехе'шника (адрес, по которому файл грузится в память) и, конечно, оригинальные и измененные байты. Структура будет выглядеть так: |