Консультация № 64656
28.11.2006, 21:39
0.00 руб.
0 1 1
Здравствуйте эксперты.
При русификации программ столкнулся с такой проблемой. После распаковки ехе-файла Restorator вообще считает его 16-битным. В ResHacker‘e открывается нормально, но после перевода и перекомпиляции иконка файла становится как у ДОС-овских программ, а при запуске выскакивает сообщение, что «Файл не является приложением Win-32».
Упаковщик значения не имеет, так как это происходило с файлами, которые упакованы разными программами.
Что это может быть и как с этим бороться.
Спасибо.

Обсуждение

Неизвестный
28.11.2006, 23:23
общий
это ответ
Здравствуйте, Кохан Владимир Иванович!
Дело в том, что PE-формат EXE-файла, а именно с ним вы и работаете, ОЧЕНЬ, ОЧЕНЬ и ОЧЕНЬ невероятно и фантастически сложный, имеющий множество нюансов и недокументированных (или плоходокументированных) возможностей. И это не считая того, что loader ОС (в каждой Windows - свой) - вообще не документирован [1,2].

Исходя из этого и личного опыта - написать универсальную выковыривалку ресурсов, работающую в 100% случаев - очень сложно (т.е. причина №1 - любая недоделка распаковщика).
№2 - упаковать ресурсы обратно - задача на несколько порядков сложнее (причина №2 - очередная любая недоделка авторов упаковщика ресурсов - нужна очень высокая квалификация программист(а,ов)).
№3 - существуют защиты от распаковки (не важно, что они защищают - сам протектор или же упаковываемый файл, или и то, и другое) - основаны на тех или иных нюансах или предположениях работы loader‘а винды - т.е. файл запускается, но не распаковывается снаружи.

Отсюда способ борьбы в вашем случае - пользоваться только последними версиями упомянутых программ - в надежде, что авторы поправили существующие недоделки, либо, поменять программы для работы с ресурсами (что маловероятно, т.к. Restorator и ResHacker - самые приличные из тех, что я когда-либо видел).

P.S.
Литература:
1) П.А. Румянцев - Работа с файлами в Win32.
2) Крис Касперски - Техника отладки программ без исходных текстов.
Форма ответа