概述
0x00 前言
最近在使用IDA时,发现有些字符串的标记是text
不是db
,并且undefine之后,按’A’键转换不成text格式的字符串,甚至根本不是完整的字符串。这个text
到底是什么,改如何转换此类字符串呢?
0x01 unicode编码类型
其实很容易想到,字符串有ascii码格式的,必然有unicode编码格式的。我们看下unicode编码格式。
可以看到UTF-16有一个00字节,如果是一个单词"sun",他的UTF-16编码
>>> import binary
>>> binascii.hexlify('sun'.decode().encode('utf-16'))
'fffe730075006e00'
"sun"的UTF8编码为
>>> binascii.hexlify(u'sunon')
'73756e6f6e'
0x02 IDA中unicode编码
我们在看下IDA中的unicode字符串
.rodata:0000000000879575 aABEHMSZY db '%a %b %e %H:%M:%S %Z %Y',0
.rodata:000000000087958D db 0
.rodata:000000000087958E db 0
.rodata:000000000087958F db 0
.rodata:0000000000879590 db 53h ; S
.rodata:0000000000879591 db 0
.rodata:0000000000879592 db 0
.rodata:0000000000879593 db 0
.rodata:0000000000879594 db 75h ; u
.rodata:0000000000879595 db 0
.rodata:0000000000879596 db 0
.rodata:0000000000879597 db 0
.rodata:0000000000879598 db 6Eh ; n
.rodata:0000000000879599 db 0
.rodata:000000000087959A db 0
.rodata:000000000087959B db 0
.rodata:000000000087959C db 0
.rodata:000000000087959D db 0
.rodata:000000000087959E db 0
.rodata:000000000087959F db 0
明显sun中间有3个