Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Различия в хешах ярлыков 32-битных и 64-битных программ: влияние системного редиректа WOW64

Delphi , Интернет и Сети , Браузер

Вопрос о различии хешей ярлыков, созданных с помощью 32-битных и 64-битных программ, является интересным и важным для разработчиков, работающих с технологиями Windows. В данной статье мы рассмотрим, как системный редирект WOW64 влияет на процесс создания ярлыков и их хеширование.

Оригинальный вопрос и его контекст

Разработчик столкнулся с проблемой, когда создавал ярлыки для программы, используя 32-битную и 64-битную версии одного и того же кода. При этом, несмотря на идентичность целевых программ, хеши создаваемых ярлыков различались. Это указывало на то, что ярлыки, созданные из программ с разной битностью, имеют различия на бинарном уровне.

Подробности и примеры кода

Пример кода, предоставленный разработчиком, демонстрирует создание ярлыка с использованием компонентов JclShell и IdHashMessageDigest. В коде используется функция SaveShortcutShellLink, которая сохраняет информацию о целевой программе в файл ярлыка, а затем функция GetHashFromFile вычисляет хеш MD5 этого файла.

program ShellLinkShortcutHashTest;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  Winapi.Windows,
  JclShell,
  Winapi.ActiveX,
  IdHashMessageDigest,
  System.Classes, System.SysUtils;
...
function GetHashFromFile(const AFileToHash: string): string;
...
function SaveShortcutShellLink(const AFile: string): string;
...
begin
  try
    Winapi.ActiveX.OleInitialize(nil);
    try
      Writeln(SaveShortcutShellLink(ShortcutFile));
    finally
      Winapi.ActiveX.OleUninitialize;
    end;
    Readln;
  except
    on E: Exception do
    begin
      Writeln(E.ClassName, ': ', E.Message);
      Readln;
    end;
  end;
end.

Различия и их причины

При использовании 64-битной программы для создания ярлыка на целевую программу в директории C:\Windows\System32 (например, notepad.exe), все работает как ожидается, и создается ярлык на 64-битную версию приложения. Однако, при использовании 32-битной версии той же программы, системный редирект WOW64 подменяет путь на C:\Windows\SysWOW64, где находится 32-битная версия приложения. В результате, ярлык указывает на разные программы, что и приводит к различию в хешах.

Безопасность и потенциальные риски

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

Заключение

В данной статье мы рассмотрели, как системный редирект WOW64 влияет на создание и хеширование ярлыков в 32-битных и 64-битных версиях программ. Различия в хешах ярлыков обусловлены различиями в целевых программах, на которые ярлыки указывают, а не ошибками в коде или безопасностью.


Статья предоставлена с учетом требований SEO для специализированного сайта, посвященного Delphi и Pascal, с использованием примеров кода на Object Pascal.

Создано по материалам из источника по ссылке.

Вопрос связан с различиями в хешах ярлыков, созданных для 32-битных и 64-битных версий одних и тех же программ на операционных системах Windows, и объясняет, как системный редирект WOW64 влияет на этот процесс.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Браузер ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:39:06/0.0020167827606201/0