Без перекомпиляции принудительно загружать программы и связанные библиотеки DLL в более низкую память? - PullRequest
0 голосов
/ 26 марта 2020

Клиент использовал программу на Windows 7. Для него все работало нормально. Затем поддержка Windows 7 ушла, и ему пришлось установить на Windows 10. На Windows 10 он испытывает крэ sh. К счастью, мы смогли продублировать - это та часть, которую практически никто не использует ... Это усечение указателей из старой кодовой базы с использованием 32-битных указателей. Легко исправить.

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

Я хотел бы найти взлом, если вы будет, чтобы поддержать клиента.

Возможно ли с помощью настроек реестра или другого хакера заставить программу и наши библиотеки DLL загружаться в меньшем объеме памяти (что подходит для 32-разрядной машины), чтобы клиент выиграл Вас не беспокоит этот крей sh, пока мы не сможем исправить его?

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Что ж, следуя совету @HansPassant, я использовал editbin.exe для редактирования больших значений адресов и высоких значений энтропии в заголовках EXE. Это действительно прояснило кратер sh.

editbin /largeaddressaware:no /highentropyva:no some.exe

Я сомневаюсь, что это будет использовано, однако.

Эта проблема уже была исправлена ​​в нашем следующем выпуске - когда бы это ни было. Наш нынешний инженерный менеджер решил решить некоторые технические проблемы, которых старые не имели, и настоял на том, чтобы при компиляции кодовая база более 25+ лет не имела предупреждений. Некоторые из нас всегда пытались сделать это в любом случае, но другие не так сильно. «Он компилируется ... что вы имеете в виду ???»

Проблемный код c был в чем-то, что изначально было в 16-битном Windows продукте, и часть кода покупатели редко прикосновение. Я полагаю, что клиент, который обновился до Windows 10, мог бы также обновить свою машину и иметь более 4 ГБ памяти. В любом случае, важно посмотреть на предупреждения и исправить их.

0 голосов
/ 27 марта 2020

Вы можете использовать rebase.exe, чтобы изменить адреса загрузки по умолчанию для всех файлов кода, но если ваша программа использует какую-либо кучу памяти, вам, скорее всего, не повезло, нет способа изменить, где windows решит поместить это и эти адреса, скорее всего, будут больше 32-битных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...