Работа с ресурсами dll
От: Eclectr  
Дата: 27.03.06 17:11
Оценка:
Привет всем. У меня возникла проблема с цифровой подписью файла. Точнее — с корректным сохранением подписи файла в нем самом после подписывания. Это нужно для передачи файла (dll) с сервера и уверенности принимающей стороны в корректности кода dll. Так вот, чтобы не менять протокол своего общения с сервером и не передавать подпись отдельно решил запихать ее прямо в файл dll, в ресурсы. Использовал для этого BeginUpdateResource(), UpdateResource(), EndUpdateResource(). На сервере подписал файл, запихал в него подпись, отправил. На клиенте выдернул подпись, верифицировал. Проблема в том, что ф-ция UpdateResource(), по-видимому, при выдирании подписи не возвращает файл в первоестественное состояние, т.к. хэш файла до подписи и после выдергивания ее же НЕ совпадают. Пробовал всяко — не получилось. Не совпадают и все. Решил расковырять формат PE файла и руками в ресурсе поменять то, что мне нужно. Опять возникла проблема: указатель на таблицу ресурсов — не валидный (RVA, считается относительно Image Base при загрузке файла в память). Вопрос такой: а относительно чего этот RVA считается в файле, и можно ли вообще малой кровью отредактировать ресурсы dll, не прибегая к вышеуказанным апишным функциям?
Заранее спасибо

28.03.06 08:22: Перенесено модератором из 'C/C++' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.