Вставить строки как ресурс

1

Я пишу DLL, и я бы хотел, после компиляции, добавить некоторые строки к нему в качестве встроенного ресурса.

Для этого я использую Python script, который выглядит примерно так:

hRes = win32api.BeginUpdateResource(myFile, 0)
win32api.UpdateResource(hRes, win32con.RT_STRING, 409, buf, 1033)
win32api.EndUpdateResource(hRes, 0)

И это работает, я вижу строки в PE с моим шестнадцатеричным редактором.

Проблема возникает, когда моя Dll пытается использовать LoadString(), чтобы вытащить эту строку.

Вызов выглядит примерно так:

LoadString(myDll, 409, someBuf, lenOfBuf);

И моя программа появляется, чтобы удалить ссылку на плохой указатель в вызове LoadString().

Является ли моя проблема тем, как я добавляю строку или вытаскиваю ее? И может ли кто-нибудь указать мне пример кода, который выполняет оба действия?

Изменить. Я бы предпочел использовать для этого API Win32.

Теги:
string
resources

2 ответа

0
Лучший ответ

Глупо мне, мне просто нужно было использовать структуру STRINGTABLE вместо того, чтобы просто демпинг в необработанных строках.

1

Вы можете сделать это вручную, взяв DLL, добавив данные, которые вы хотите сохранить к нему, и после него целое число 4 байта, содержащее размер добавленных данных в байтах.

Теперь, если вы хотите прочитать данные, прочитайте последние 4 байта файла, интерпретируйте их как целое (порядок байтового байта) и прочитайте это количество байтов с конца файла (если количество байты N, которые вы читаете от END - N - 4 до END - 4).

  • 0
    Это, безусловно, сработает, но я бы предпочел сделать это с API по ряду причин.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню