У меня есть программа на C, в которой есть раздел ресурсов.
IDS_STRING 87 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
В шестнадцатеричном редакторе это выглядит следующим образом
Я использую такой код в Python для поиска и заменыA:
str = b'\x00A'*40
str1 = b"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
if str in file:
print("A in file")
f.write(file.replace(str, str1))
Это делает новый файл похожим на это:
Так что мне интересно, почему Aхранится как «41 00», а затем, когда я перезаписываю их, они просто «42».
Это вещь WCHAR?
Я сделал тест, где я загрузил строку и распечатал ее,
This is some text.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Но потом, когда я использовал свой Python и перезаписал буквы A буквой B, он делает это ..
This is some text.???????????????????????????????????????B
Итак, с моими ограниченными знаниями C, если я хочу поставитьвещи в разделе ресурсов, в которые я должен поместить их как WCHAR?
ОБНОВЛЕНИЕ: Моя главная проблема с этим заключается в том, что у меня есть шестнадцатеричная строка, подобная приведенной ниже:в раздел ресурсов.Но если я делаю это аналогично тому, как я заменяю, то, делая
f.write(file.replace(str, '685308358035803507835083408303508350835083508350835083083508'))
, тогда он помещает его в раздел ресурсов как:
Если это происходит таким образом, это приводит к тому, что вещи ломаются, потому что он захватывает 2 байта за один раз, как кажется.
Причина, по которой я спрашиваю это, заключается в том, что когда я заменяю буквы Aс моим гексом и запустите программу.Это не работает.Но если я помещаю шестнадцатеричный код непосредственно в раздел ресурсов в Visual Studio и запускаю его, он работает.Когда я заменяю на Python, это '34322424 ...', но когда та же строка помещается в раздел ресурсов, это '3400220042004 ....'
2nd UPDATE: Похоже, таблица строк раздела ресурсовсохраняет в 2 байта.
https://docs.microsoft.com/en-us/windows/desktop/debug/pe-format#the-rsrc-section
Resource Directory Strings
Two-byte-aligned Unicode strings, which serve as string data that is pointed to by directory entries.