Чтение данных из памяти и декодирование - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь сопоставить шаблон для строковых значений, находящихся в памяти процесса.У меня есть места в памяти, хранящиеся в списке, и затем я перебираю список и определяю его содержимое.

for address in l:  
    print "\n\n"
    print address

    addressContent = str(address.read(100)).replace(" ", "")
    print addressContent[0:10] + "\n" + addressContent + "\n"
    print "s a v e d" == addressContent[0:10].lower()

У меня нет проблем с поиском нужного мне содержимого (строка «savevariables»), однако проблема возникаетс попыткой определить контекст вокруг того, что я искал.Вот один из результатов этого поиска.

<Addr: 0x00E2AF48 : "S\x00a\x00v\x00e\x00d\x00V\x00a\x00r\x00i\x00a\x00b\x00l\x00e\x00s\x00\\\x00C\x00a\x00r\x00t\x00o\x00g\x00r\x00a\x00p\x00\xa1"" (bytes)>
S a v e d
S a v e d V a r i a b l e s \ C a r t o g r a p í"╘╓r* ÇM i n i n g . l u a . b a k             ╗".╓

False

Почему я не могу точно определить содержимое памяти после ее поиска?

1 Ответ

0 голосов
/ 30 января 2019

Вы сравниваете «сохранено» с «сохранено», в срезе есть дополнительный символ

string = 'S a v e d V a r i a b l e s \ C a r t o g r a p í"╘╓r* ÇM i n i n g . l u a . b a k' 
print(string[:10].lower())

сохранено

print(string[:9].lower())

сохранено

Редактировать:Я думал о том, почему ваша строка addressContent имеет пробелы после того, как вы их заменили, что заставляет меня думать, что они на самом деле не пробелы.Попробуйте использовать str.encode, как в этой ссылке Python: символ, который кажется пробелом, но не пробелом.Что это?

addressContent = str(address.read(100)).encode('ascii','replace').replace("?", "")

Надеемся, это удалит пробелы.

...