Привет ребят, возникла необходимость в подмене ресурсов .NET exe'шника... я не знаю как точно это все организовать, хотел посоветоваться. Заменять нужно конкретно *.rar или *.zip архивы, встроенные в exe как ресурс. Я вот как думал это сделать - открыть файл(exe) как массив байт, я так думаю *.rar/*.zip имеют какие-то определенные заголовки, по этим заголовкам распознать где архив, узнать где конец я пока не знаю как, и вобщем заменить эти байты на нужные, как быть с тем что заменяемый архив может быть больше или меньше того что в exe я тоже не знаю... В правильном ли направлении я смотрю? И может быть есть консольные утилиты способные ресурс заменить? Или идейки какиенить подкиньте. Заранее спасибо всем за советы.
Я наверное не так выразился, я использую не .NET C++, а C++ обычный, допустим у меня сервак с UNIX, и вот один C\C++ имея надо .NET сборку распотрошить там...
Эээ. У .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 для убирания проверок. Или я чтото не так понял в вопросе?