Просмотр полной версии : Ресурсы .NET EXE'шника, замена ресурсов используя С++
Maxidrom
12.09.2009, 14:00
Привет ребят, возникла необходимость в подмене ресурсов .NET exe'шника... я не знаю как точно это все организовать, хотел посоветоваться. Заменять нужно конкретно *.rar или *.zip архивы, встроенные в exe как ресурс. Я вот как думал это сделать - открыть файл(exe) как массив байт, я так думаю *.rar/*.zip имеют какие-то определенные заголовки, по этим заголовкам распознать где архив, узнать где конец я пока не знаю как, и вобщем заменить эти байты на нужные, как быть с тем что заменяемый архив может быть больше или меньше того что в exe я тоже не знаю...
В правильном ли направлении я смотрю? И может быть есть консольные утилиты способные ресурс заменить? Или идейки какиенить подкиньте.
Заранее спасибо всем за советы.
ну я так понимаю, что стоит загружать методами .net reflection, и уже что-нибудь менять там.
Maxidrom
12.09.2009, 20:36
Я наверное не так выразился, я использую не .NET C++, а C++ обычный, допустим у меня сервак с UNIX, и вот один C\C++ имея надо .NET сборку распотрошить там...
Hiro Protagonist
12.09.2009, 21:35
Эээ. У .NET приложений другой формат исполняемых файлов чтоле? PE уже устарел? >____<
Если точно знаешь в какой секции расположен архив, то открываешь файл, в IMAGE_SECTION_HEADER смотришь файловое смещение этой секции, переходишь туда, ишеш сигнатуру архива (её посмотришь открыв hex-редактором любой архив, для rar - RAR, для zip - PK[непомню какието байтеки]). Ещё посмотришь описание формата rar/zip чтобы найти байтеки в которых прописан размер архива. Теперь ты его можешь читать. Теперь наступают сложности. В самом примитивном случае, когда имеем архив в конце последней секции и в коде нету проверок на его размер, то тупо расширяем секцию (правим IMAGE_SECTION_HEADER.SizeOfRawData, IMAGE_SECTION_HEADER.VirtualSize, IMAGE_OPTIONAL_HEADER.ImageSize). В остальных случаев все не так тривиально, тк придется пересчитывать релоки и ревесить NET для убирания проверок.
Или я чтото не так понял в вопросе?
Maxidrom
12.09.2009, 21:48
Спасибо за советы ребят, пойду кодить, если что спрошу...
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot