Преамбула
Урок получился частично философским, чем реверсерским, вот как-то так случайно…
Я когда-то об этом писал (копия), но тут клиент. которому очень нравится именно это софтина сказал, что мой враппер из вышеозначенного примера, сожрал антивирь. Чо, антивирь жрет программу, которая просто ничего не делает? Охуеть теперь.
Суть в том, что нужно отключить обновлятор, тому ще жиды из Foxit удалили в новых версиях виртуальный PDF-принтер, а обновление можно установить случайно.
Вокруг бегают дети с вопросом: «ну дай нам что-нибудь самим пореверсить!»
Я им, конечно же, сначала дал задание — выдрать псевдографические цифры (копия) v2 (копия) из DOS-будильников.
Но особо активные дети, это же как черти у ведьмы — если им не давать заданий, то мозги вынесут, нужно отправлять на пляж песчинки пересчитывать, за неимением лучшего. Вот идите сами и реверсите, вполне реальное техзадание вот вам, заодно и денежку заработаете.
И пока я немедленно выпил, дети отреверсили! Подсказал, им, правда, что нужно найти функцию в упдатере, которая отвечает за соединение с интернетами, а остального не подсказывал.
Суть
Довольно быстро нашли в Names в IDA нужную функцию WinHttpOpen
, а в коде нужный кусок:
call ds:WinHttpOpen
mov ecx, eax
mov [ebp+var_12C0], ecx
cmp ecx, ebx
jnz short loc_4179B8
call ds:GetLastError
mov [ebp+wParam], eax
mov [ebp+var_12A9], bl
jmp loc_417E28
И догадались, что нужно заnop’ить инструкцию JNZ
по следующему адресу:
0041799F JNZ <addr> --> NOP NOP
в байт-кодах:
0041799F 7517 --> 9090
Догадались, что экзешник нужно пропатчить в двух местах:
"C:\Users\<имя_пользователя>\Application Data\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe"
"C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe"
Причем, по первому пути FoxitReaderUpdater.exe
может отсутствовать до первого запуска FoxitReader.exe
и в дальнейшем учли это в патче 🙂
Проверка
ФАНФАРЫ!
Предупреждение
Все-таки чтоб все хорошо сработало, рекомендую нижеследующий патч применять сразу после установки, и в самом установщике снять галочку Запустить Foxit Reader. Все-таки дети делали, а я всего проверить не могу.
Патч на NSIS
Естественно, сразу же отправил ребят сделать тогда уж и автопатч на NSIS, по примеру:
по примеру:
Патч на NSIS (с возможностью отмены). (копия)
Они его даже немножечко улУчшили и углУбили, например, перед патчем убивают все процессы, которые могут помешать:
Macro KillProc
Var /GLOBAL "PROC0"
Var /GLOBAL "PROC1"
Var /GLOBAL "PROC2"
StrCpy $PROC0 "FoxitReader.exe"
StrCpy $PROC1 "FoxitUpdater.exe"
StrCpy $PROC2 "FoxitReaderUpdater.exe"
...
;kill processes
!insertmacro KillProc $PROC0
!insertmacro KillProc $PROC1
!insertmacro KillProc $PROC2
И выводят в конце процесса readme для пользователя, если тот захочет воспользоваться восстановлением вручную. Пример readme:
Updater changed 2023.04.19 5:46:09
Manual restore original files:
If you wish restore patched files manually, copy:
C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe.2023041954609.bak in C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitUpdater.exe and in C:\Users\Korak\AppData\Roaming\Foxit Software\Addon\Foxit Reader\FoxitReaderUpdater.exe
You may run Foxit Updater Disable Patch for automatic restore.
Скачать патч
— Репозиторий на GitHub
— Скачать патч
Мой личный вывод
Пацаны вааще ребята, почти без подсказок во всем разобрались, и им еще 14. И первые деньги программированием заработали (и плюс я свои).
Охуеть, мы не умрем, в смысле как вид! Всякие пердевшие в фукуяму идут нахуй! И в новостях и политике подростки все понимают.