nakedjack ·
03-Окт-25 07:46
(спустя 22 часа, ред. 03-Окт-25 07:46)
Элементарно это всё делается
Создаете в Ghidra проект, имортируете туда бинарник под вопросом (который проверяет лицензию). В линукс это ELF файл, они обычно в папке bin или linux64.
Запускаете и дожидаетесь окончания базовой декомпиляции (Auto-Analysis). Если бинарник большого размера (а здесь /linux64/nwtn/bin/dgcom_exec является основной программой размером 2,3 ГБ, так что понадобится большой объем места на диске под декомпиляцию, 100-200ГБ, и оперативной памяти нужно примерно 16-32ГБ)
Находите место где программа спрашивает лицензию, а это почти в самом начале, шагая от entry. Синопсы зачастую (но не всегда) проверяют environment variable, переменные среды, такие как SNPS_LICENSE_FILE, а затем лицензию на которую он указывает
Обычно после вызова функции проверки следует инструкция JZ - прыжок (J) в нормальное исполнение с кондицией Z (zero flag), который выстреливает в зависимости от результата проверки, возвращенном в регистре RAX
В таком случае JZ меняете на JMP чтобы всегда лицензия была
Если JZ или JNZ или какая угодно другая кондиция с переходом в под-программу выхода с ошибкой (отсутствие лицензии), затираете такую инструкцию NOPами
Далее сохраняете пропатченную программу Ctrl+S и в меню Файл - Экспорт в Original file, заменяете в установочной директории такой же файл на запатченный вами
У них бывают частично на питоне программы, в таком случае несколько сложнее, гидра не умеет декомпилировать питон