Hexing * .exe - метка времени также изменяется?

866
Christopher Francisco

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

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

1
Если это простой вопрос изменения времени, вы можете использовать редактор отметок времени, например, сенсорный. Есть много оконных эквивалентов там. Sun 9 лет назад 0

2 ответа на вопрос

1
phyrfox

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

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

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

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

Если программист написал свою собственную процедуру установки, тогда отметку даты и времени можно установить на любую дату и время, которые пожелает программист. Если это так, это можно сделать из командного файла. LDC3 9 лет назад 0
@ LDC3 Это правда, и я видел даты установки, которые предшествуют дате покупки моего компьютера, но я подозреваю, что очень немногие разработчики делают это, потому что слишком легко обмануть систему, применяя метку времени, которая заставит программу думать, что это не так. т был изменен. Как разработчик, которому за 30 с лишним лет, я знаю, что не буду доверять тому, что так легко может изменить компетентный пользователь. phyrfox 9 лет назад 1
1
Scott Rhee

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

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

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

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

Да, я уже спросил, это частный сервер для игры, так что юридические вопросы не проблема. Я знаю, как использовать отладчики, я также думал о том, чтобы зайти так далеко. Не могли бы вы предложить ссылку или подобное, чтобы у меня было несколько указаний по поиску проверки? Кроме того, это не совсем программа для самоконтроля. Это * .exe (тот, который я hex), открытый другим * .exe (тот, который выполняет проверку) Christopher Francisco 9 лет назад 0
Christopher // Если вы можете использовать отладчики, такие как OllyDbg и WinDBG, попробуйте определить, когда открывается целевой EXE. API «CreateFile» является хорошей отправной точкой. Затем внимательно следите, пока не появится ошибка «измененный exe». Делая это, вы можете узнать, какая логика используется для обнаружения и изменить этот поток, заклинив «вызывающий». Тем не менее, вызывающий абонент также может быть «самозащитным». Если это так, вопрос возвращается к оригиналу. Scott Rhee 9 лет назад 0
Кстати, что произойдет, если вы запустите EXE-файл callee напрямую? Я знаю, что это не сработало, иначе вы бы не подняли этот вопрос :), но я хотел бы знать, ПОЧЕМУ это не сработало. Если вы знаете причину, возможно, я могу дать вам еще несколько вариантов, одурачивая как вызываемого, так и вызывающего абонента. Scott Rhee 9 лет назад 0
Сегодня я попробую и OllyDbg, и WinDbg. Когда я открываю EXE напрямую (до и после гексагона), ничего не происходит: поэтому я проверил диспетчер задач Windows, и EXE появился и сразу исчез Christopher Francisco 9 лет назад 0
Вы пробовали те же самые параметры командной строки, как если бы вызываемый вызывался исходным вызывающим абонентом? Чтобы получить параметры, вы можете использовать Process Explorer. Просто запустите приложения обычным способом, найдите цель в Process Explorer и проверьте свойства. Эта ссылка может вам помочь. http://www.bleepingcomputer.com/tutorials/determine-command-line-arguments/ Scott Rhee 9 лет назад 0