2014-11-06 2 views
0

У меня есть приложение для загрузки Windows, которое я скомпилировал (в глубине, он использует C# и WPF), но структура, которую я должен использовать для ее программирования, не позволяет мне изменять конкретный GUID, который он хранит в реестре Windows при установке пакетов MSI (он заставляет меня программировать загрузчик в XML и не предоставляет этот GUID как свойство, модифицируемое XML), и я знаю, что этот GUID принимает конкретный, закодированное значение. Это значение изменяется всякий раз, когда я перекомпилирую исполняемый файл bootstrapper. Я хочу иметь возможность изменять этот GUID на сценарии пост-сборки, чтобы сохранить его.Как найти GUID в hex из скомпилированного исполняемого файла Windows

Мой вопрос в том, можно ли найти местоположение этого идентификатора GUID из шестнадцатеричного дампа? Я искал свой hex-дамп исполняемого файла, пытаясь конвертировать из GUID в шестнадцатеричный или из строки GUID в ASCII или hex и т. Д., И я попытался лучше понять вещи, используя ILDASM, но это не помогло. Я не уверен, как GUID хранится в скомпилированном исполняемом файле ... кто-нибудь имел успех с этим? Если да, то как хранится GUID и что вам нужно сделать для доступа к нему?

GUID, который он устанавливает в реестре в настоящий момент: {E66D1133-9A23-4E07-8DB1-0A3A4A7F7B35}.

+0

@AJHenderson ** Вы вводите в заблуждение MSI GUID с моим GUID регистрации bootstrapper. ** Изменение GUID, о котором я говорю, будет ** НЕ ** нарушать что-либо. Поверьте мне, я уже давно занимаюсь установщиками. – Alexandru

+1

Достаточно честный, все еще не видя ничего об этой безопасности. Даже если вам нужно, чтобы он был одним и тем же для определенной цели безопасности, это подпадает под технические методы реализации, которые обычно не относятся к этой теме, а скорее относятся к сайту, наиболее связанному с его внедрением (то есть, StackOverflow в этом случае) –

+0

@AJHenderson Ну, я думаю, что это тоже не вопрос программирования. Я не ищу код, а объяснение. Лучшее место для меня в моем уме - «security.stackexchange.com» ... где я ожидал бы, что люди поймут низкоуровневые работы компиляторов в Windows и как они хранят данные. Это может легко стать вопросом безопасности, например: «Как маскировать GUID в приложении, чтобы кто-то не мог найти их из шестнадцатеричного дампа?» для чего вам нужно будет знать, как их найти в первую очередь. Как и в жизни, вы не можете сделать что-то лучше, не зная, как его сначала измерить. – Alexandru

ответ

0

Я считаю, что у вас есть загрузочный бокс WiX. Если да, предположим, что он называется Wix39.exe и находится в текущем каталоге.

"%WIX%\bin\dark" Wix39.exe -x "%TEMP%\dark.tmp" &&^
find "WixBundleProperties" "%TEMP%\dark.tmp\UX\BootstrapperApplicationData.xml" &^
rmdir /s/q "%TEMP%\dark.tmp" 

Вы ищете WixBundleProperties/@ Id.

+0

Tom, после внесения изменений в BootstrapperApplicationData.xml, как мне перекомпилировать новые настройки или добавить изменения в мой существующий исполняемый файл? – Alexandru

+1

Я не думаю, что текущие инструменты поддерживают это. Вероятно, вам стоит взглянуть на создание пользовательской версии записи; возможно, поражение [RegistrationDetectInstalled] (https://github.com/wixtoolset/wix3/blob/develop/src/burn/engine/registration.cpp). –

+0

Я пытался уклониться от настройки инструмента для записи, так как тогда мне придется составлять ту же настройку при каждом обновлении. :(Плюс, было бы здорово выяснить, как изменить GUID с дампа исполняемого файла. – Alexandru

Смежные вопросы