Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   Снятие с QIP проверки CRC (https://forum.antichat.xyz/showthread.php?t=106619)

slesh 17.02.2009 11:19

Снятие с QIP проверки CRC
 
Небольшая заметка по модификации QIP


Бывает такое, что необходимо чтото подправить в интерфейсе QIP. И вот вы берете какой нибудь редактор ресурсов типа ResHack, подправляете то, что вам нужно, сохраняете и.... при запуске qip орет Sorry, qip.exe file is corrupted

Для того чтобы снять проверку CRC нам потребуются 2 вещи:
1) Cам qip.exe
2) Отладчик OllyDbg

Для теста был взят QIP 8080

Шаг 1: Открываем qip.exe в OllyDbg. Ждем, пока пройдет анализ кода и нас не кинет на точку входа в программу.
Шаг 2: Необходимо найти часть, где располагается сообщение об ошибке в памяти. Для этого в окне CPU нажимаем комбинацию клавиш Ctrl+B (поиск бинарных данных). В открывшемся окне в поле ASCII вписываем текст Sorry, qip.exe file is corrupted и нажимаем OK. Результатом выполнения будет код на экране примерно таков:
Код:

00604FEC  . 53 6F 72 72 79 2>ascii  "Sorry, qip.exe f"
00604FFC  . 69 6C 65 20 69 7>ascii  "ile is corrupted"
0060500C  . 2E 00            ascii  ".",0
0060500E    00              db      00

Как мы видим, по адресу 00604FEC располагается начало нашей строки.
Шаг 3: Теперь нам нужно найти команду, в которой используется этот адрес.
Для этого выделяем адрес начала строки (00604FEC) и нажимаем Ctrl+R (поиск ссылки для этого адреса). В результате откроется окно с командами, где используется этот адрес и их адрес в памяти. Мы видим следующую картину:
References in qip:CODE to 00604FEC
Address Disassembly Comment
00604F1F mov edx, 604FEC ASCII "Sorry, qip.exe file is corrupted."
00604FEC ascii "Sorry, qip.exe f" (Initial CPU selection)
Теперь мы знаем, что наш текст был записан в регистр командой mov edx, 604FEC находящейся по адресу 00604F1F. Делаем двойной клик на этой строке, чтобы переместиться на тот участок кода.
Теперь в окне CPU мы можем наблюдать часть кода:
Код:

$-1C    >|. 55              push    ebp
$-1B    >|. 68 CA4F6000      push    604FCA
$-16    >|. 64:FF30          push    dword ptr fs:[eax]
$-13    >|. 64:8920          mov    dword ptr fs:[eax], esp
$-10    >|. E8 70FFFFFF      call    00604E84                        ;  qip.00604E84
$-B      >|. 84C0            test    al, al
$-9      >  75 1D            jnz    short 00604F35                  ;  qip.00604F35
$-7      >|. 6A 00            push    0
$-5      >|. B9 D84F6000      mov    ecx, 604FD8                      ;  ASCII "Bad qip.exe file"
$ ==>    >|. BA EC4F6000      mov    edx, 604FEC                      ;  ASCII "Sorry, qip.exe file is corrupted."
$+5      >|. A1 A0BD6900      mov    eax, dword ptr ds:[69BDA0]
$+A      >|. 8B00            mov    eax, dword ptr ds:[eax]
$+C      >|. E8 342EE8FF      call    00487D64                        ;  qip.00487D64
$+11    >|. E8 EFFCDFFF      call    00404C24                        ;  qip.00404C24
$+16    >|> 8D55 F4          lea    edx, dword ptr ss:[ebp-C]
$+19    >|. A1 A0BD6900      mov    eax, dword ptr ds:[69BDA0]
$+1E    >|. 8B00            mov    eax, dword ptr ds:[eax]

Шаг 4: Теперь необходимо найти условие, по которому данный код выполняется или не выполняет. Для этого перемещаемся выше по коду в поисках инструкций условного перехода j**
Сразу замечаем, что выше есть инструкция:
$-9 > 75 1D jnz short 00604F35 ; qip.00604F35
Которая, как бы перепрыгивает код вывода сообщения.
Шаг 5: Изменяем логику проверки инструкции на противоположную.
jnz(если не равно нулю) мы должны заменить её на jz(равно нулю) Для этого двойным щелчком открываем окно редактирования, где изменяем jnz на jz и нажимаем на кнопку Assemble, а потом Cancel(Отмена).
Шаг 6: Вроде всё хорошо, но изменения, которые мы сделали, находятся пока что только в оперативной памяти. Для сохранения изменений в файле необходимо в контекстном меню выбрать пункт Copy to executable file. В открывшемся окне , в контекстном меню выбираем пункт Save File, и сохраняем с именем qip1.exe. Теперь появится файл qip1.exe в, котором будет отключена проверка CRC. Теперь можно закрыть отладчик.

Вот и всё ) (С) SLESH

-c0d3r- 17.02.2009 15:09

Слеш ты как всегда на высоте - спасибо именно это мне и нужно было


Время: 06:11