我正在尝试对驻留在进程内存中的字符串值进行模式匹配。我将内存位置存储在列表中,然后遍历该列表并确定其内容。
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()
我毫无疑问地搜索我想要的内容(字符串“ savedvariables”),但是麻烦在于尝试围绕我搜索的内容确定上下文。这是此搜索的结果。
<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
为什么搜索后无法准确确定内存的内容?
答案 0 :(得分:0)
您正在将“ s v e d”与“ s v e d”进行比较,切片中有一个额外的字符
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())
s v d
print(string[:9].lower())
s v e d
编辑:我在考虑为什么您的addressContent字符串替换后有空格,这使我认为它们实际上不是空格。尝试在此链接Python: A character that appears to be a space but isn't a space. What is it?
中使用str.encodeaddressContent = str(address.read(100)).encode('ascii','replace').replace("?", "")
这有望删除空格。