|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
An implementation of StringManager that understands terminated unicode strings. More...
#include <stringmanage.hh>
Public Member Functions | |
| StringManagerUnicode (Architecture *g, int4 max) | |
| Constructor. | |
| virtual const vector< uint1 > & | getStringData (const Address &addr, Datatype *charType, bool &isTrunc) |
| Retrieve string data at the given address as a UTF8 byte array. | |
Public Member Functions inherited from ghidra::StringManager | |
| StringManager (int4 max) | |
| Constructor. | |
| virtual | ~StringManager (void) |
| Destructor. | |
| void | clear (void) |
| Clear out any cached strings. | |
| bool | isString (const Address &addr, Datatype *charType) |
| uint8 | registerInternalStringData (const Address &addr, const uint1 *buf, int4 size, Datatype *charType) |
| Associate string data at a code address or other location that doesn't hold string data normally. | |
| void | encode (Encoder &encoder) const |
| Encode cached strings to a stream. | |
| void | decode (Decoder &decoder) |
| Restore string cache from a stream. | |
Private Attributes | |
| Architecture * | glb |
| Underlying architecture. | |
| uint1 * | testBuffer |
| Temporary buffer for pulling in loadimage bytes. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ghidra::StringManager | |
| static bool | hasCharTerminator (const uint1 *buffer, int4 size, int4 charsize) |
| Check for a unicode string terminator. | |
| static int4 | readUtf16 (const uint1 *buf, bool bigend) |
| Read a UTF16 code point from a byte array. | |
| static void | writeUtf8 (ostream &s, int4 codepoint) |
| Write unicode character to stream in UTF8 encoding. | |
| static int4 | checkCharacters (const uint1 *buf, int4 size, int4 charsize, bool bigend) |
| Make sure buffer has valid bounded set of unicode. | |
| static int4 | getCodepoint (const uint1 *buf, int4 charsize, bool bigend, int4 &skip) |
| Extract next unicode codepoint. | |
Protected Member Functions inherited from ghidra::StringManager | |
| bool | writeUnicode (ostream &s, const uint1 *buffer, int4 size, int4 charsize, bool bigend) |
| Translate/copy unicode to UTF8. | |
| void | assignStringData (StringData &data, const uint1 *buf, int4 size, int4 charsize, int4 numChars, bool bigend) |
| Translate and assign raw string data to a StringData object. | |
Static Protected Member Functions inherited from ghidra::StringManager | |
| static uint8 | calcInternalHash (const Address &addr, const uint1 *buf, int4 size) |
| Calculate hash of a specific Address and contents of a byte array. | |
Protected Attributes inherited from ghidra::StringManager | |
| map< Address, StringData > | stringMap |
| Map from address to string data. | |
| int4 | maximumChars |
| Maximum characters in a string before truncating. | |
An implementation of StringManager that understands terminated unicode strings.
This class understands UTF8, UTF16, and UTF32 encodings. It reports a string if its sees a valid encoding that is null terminated.
| ghidra::StringManagerUnicode::StringManagerUnicode | ( | Architecture * | g, |
| int4 | max | ||
| ) |
| g | is the underlying architecture (and loadimage) |
| max | is the maximum number of bytes to allow in a decoded string |
References glb, and testBuffer.
|
virtual |
Retrieve string data at the given address as a UTF8 byte array.
If the address does not represent string data, a zero length vector is returned. Otherwise, the string data is fetched, converted to a UTF8 encoding, cached and returned.
| addr | is the given address |
| charType | is a character data-type indicating the encoding |
| isTrunc | passes back whether the string is truncated |
Implements ghidra::StringManager.
References ghidra::StringManager::assignStringData(), ghidra::StringManager::StringData::byteData, ghidra::StringManager::checkCharacters(), ghidra::Datatype::getSize(), glb, ghidra::StringManager::hasCharTerminator(), ghidra::Address::isBigEndian(), ghidra::Datatype::isOpaqueString(), ghidra::StringManager::StringData::isTruncated, ghidra::Architecture::loader, ghidra::LoadImage::loadFill(), ghidra::StringManager::maximumChars, ghidra::StringManager::stringMap, and testBuffer.