1

Я пытаюсь зашифровать файл *.exe чтобы изменить шрифт с Arial на Tahoma . Я уже сделал это, проблема в том, что программа замечает, что что-то изменилось.

Я относительно новичок в гексагоне, так что я не уверен, что если вы когда-нибудь гексуете exe, какая-то дата также меняется (и, вероятно, именно так программа это замечает). Кто-нибудь может подтвердить это и, если возможно, предложить решение?

2 ответа2

1

Обычно метка даты на исполняемом файле не имеет смысла, потому что метка времени будет не исходным временем компиляции, а временем установки. Нет никакого способа, которым исполняемый файл мог бы зависеть от внешней метки времени, чтобы проверить, не повреждена ли она.

Некоторые исполняемые файлы имеют цифровую подпись. Это означает, что криптографическая функция применяется к файлу с использованием ключа издателя и прикрепляется к исполняемому файлу. Эта подпись может быть проверена ОС (например, Windows) или самим исполняемым файлом.

Любые изменения в двоичной структуре исполняемого файла будут замечены, потому что подпись не будет соответствовать вычисленному значению. Обычно нет способа сгенерировать правильную подпись без оригинального ключа, который является функцией безопасности, предотвращающей взлом (например, взлом программного обеспечения или заражение вирусом).

Помимо этого, также может быть CRC (например, CRC-32), который может просто обнаруживать изменения в исполняемом файле. В этом случае исполняемый файл может проверять внутреннюю проверку, которую вы можете обойти, обойдя исполняемый код, пока не найдете подпрограмму проверки и не выполняете (0x90) вызов функции для функции проверки.

1

Кажется, что у exe есть логика самозащиты, что вполне нормально в наше время. Однако способы достижения этой защиты не одинаковы. Некоторые используют цифровые подписи, некоторые используют проверки CRC, некоторые используют сторонние инструменты защиты модулей и так далее. Но я считаю, что сторонний не ваш случай, так как обычно модули, сгенерированные этими инструментами, сжимаются и / или шифруются, чтобы вы не могли найти информацию напрямую.

Тем не менее, хотя эту метку времени можно использовать для обнаружения изменений, довольно редко следует использовать метку времени только для защиты, поскольку любой может изменить ее с помощью такого рода инструментов. Вы можете вернуть атрибуты, если у вас есть оригинал, поскольку он не причиняет вреда, но, вероятно, он не будет работать.

Итак, каков следующий шаг? Чтобы преодолеть проблему, нам нужно знать, какая проверка выполняется для определения модификации, которая должна быть намного сложнее, чем шифрование модуля. После этого мы можем воспользоваться некоторыми продвинутыми подходами, такими как модификация оперативной памяти, взломать процедуру обнаружения или перехват вызовов Windows API для достижения цели замены шрифта, но ни один из них не может быть достигнут только путем шестнадцатеричного кодирования. Вам нужно как минимум научиться пользоваться отладчиками. Возможно, кто-то взломал файл уже для различных целей, таких как патч для NO-CD, и тогда вы можете взять его для зашифрования, и, вероятно, он будет работать, поскольку логика уже будет деактивирована. Но, пожалуйста, всегда принимайте во внимание законность, прежде чем предпринимать какие-либо действия.

Однако вы пытаетесь просто изменить используемый шрифт. Для меня это выглядит несколько правдоподобно - почему бы вам не попросить поставщика приложений изменить шрифт?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .