
Комментарии 8
Менее очевидный факт: помимо PDB-файлов, тот же сервер хранит и сами PE-бинарники:
.exeи.dll
Интересно, для чего это изначально сделано? Самим сотрудникам MS проще брать бинарники оттуда?
Это даже не то чтобы проще, а просто вынужденная мера. При отладке нужны определенные бинари (определенной сборки), для обеспечения воспроизводимой отладки конкретных версий программ.
Он хранит множество конкретных сборок файлов (DLL, EXE, SYS, PDB) и позволяет по уникальному идентификатору получить именно ту версию, которая использовалась при возникновении ошибки или создании дампа памяти.
Такой архив версий получается, ну он не хранит историю изменений а просто дает быстрый поиск версии файла и её загрузку.
Интересно.
Но не особо понятно, возможно в статье какие-то куски потерялись
Что делать если не помогло?
В данном случае Вам поможетлишь загрузка с wsl (либо можете взять любую ВМ на unix-based) и выполнил wget:
При чём тут wsl? Чем приведённый пример с wget отличается от curl выше?
Также непонятны проблемы с User-Agent. Скачивается файл с расширением blob, но это же тот же exe внутри, просто с другим именем?
Там тоже странно.
Пошёл на сайт, поискал powershell.exe, по кнопке "Show" нашёл ссылку, у которой указан md5 такой же, как у powershell.exe на моём компе. Но при этом файл имеет другой размер... На сайте нумерация съехала, что ли?
Сейчас постараюсь Вам пояснить.
При чём тут wsl? Чем приведённый пример с wget отличается от curl выше?
По поводу WSL. В приведённых примерах curl и wget делают практически одно и то же - отправляют HTTP-запрос с нужным User-Agent и скачивают файл.
Но при попытке загрузить .exe при помощи curl Вы можете столкнуться с проблемой связанной с TLS-стека, либо корп.политик. Чтобы не вдаваться в дебри решения проблем с TLS и не раздувать статью, показал пример на WSL. Думаю нужно было это в статье указать отдельно(
Также непонятны проблемы с User-Agent. Скачивается файл с расширением blob, но это же тот же exe внутри, просто с другим именем?
Тут спорный момент, я не могу гарантировать на 100% что скачанный файл .blob при переименовании его в .exe будет работать корректно и что мы получили настоящий PE-файл. Поэтому лучше использовать User-Agent.
Ну либо можно заморочиться с проверкой содержимого через Format-Hex )))
Пошёл на сайт, поискал powershell.exe, по кнопке "Show" нашёл ссылку, у которой указан md5 такой же, как у powershell.exe на моём компе. Но при этом файл имеет другой размер... На сайте нумерация съехала, что ли?
Насчёт Winbindex - там отображается не только имя файла, но и конкретная версия из определённой сборки Windows. Поэтому вполне возможна ситуация, когда MD5 совпадает с вашим экземпляром, а размер кажется другим из-за особенностей отображения, путаницы между размером файла и размером образа в памяти (SizeOfImage) или просто ошибки интерфейса сайта. Для уверенности лучше сравнить SHA-256 и фактический размер файла после скачивания.
я не могу гарантировать на 100% что скачанный файл .blob при переименовании его в .exe будет работать корректно и что мы получили настоящий PE-файл.
Во-первых, сравнить это элементарно, и даже никаких hex-ов не надо, банальным fc /b. Я сравнил, файлы идентичны, user-agent ни на что не повлиял, файл скачался и через браузер, и через curl.
Во-вторых, имя blob возникает из того самого редиректа, так обозначено имя файла в новом урле. Поэтому браузер и использует это имя по умолчанию. При скачивании curl’ом вы указываете опцию -o oscdimg.exe, явным образом задающую имя сохраняемого файла, поэтому что там в урле уже не играет никакой роли. И, опять же, урловое blob-имя никак не меняется от того, указываем мы заголовок UA или нет. Проверяется элементарно, добавлением опции -v к параметрам curl, заставляющей его печатать все технические заголовки.
Гугл предлагает через winget:
winget install -e --id Microsoft.OSCDIMG
Загрузка утилит Windows в обход Store и без лишних гигабайт: используем Microsoft Symbol Server