Ghidra Decompiler Analysis Engine
Public Member Functions | List of all members
GhidraStringManager Class Reference

Implementation of the StringManager that queries through the ghidra client. More...

#include <string_ghidra.hh>

Inheritance diagram for GhidraStringManager:
Inheritance graph
[legend]
Collaboration diagram for GhidraStringManager:
Collaboration graph
[legend]

Public Member Functions

 GhidraStringManager (ArchitectureGhidra *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. More...
 
- Public Member Functions inherited from StringManager
 StringManager (int4 max)
 Constructor. More...
 
virtual ~StringManager (void)
 Destructor.
 
bool isString (const Address &addr, Datatype *charType)
 
void saveXml (ostream &s) const
 Save cached strings to a stream as XML. More...
 
void restoreXml (const Element *el, const AddrSpaceManager *m)
 Restore string cache from XML. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from StringManager
static bool hasCharTerminator (const uint1 *buffer, int4 size, int4 charsize)
 Check for a unicode string terminator. More...
 
static int4 readUtf16 (const uint1 *buf, bool bigend)
 Read a UTF16 code point from a byte array. More...
 
static void writeUtf8 (ostream &s, int4 codepoint)
 Write unicode character to stream in UTF8 encoding. More...
 
static int4 getCodepoint (const uint1 *buf, int4 charsize, bool bigend, int4 &skip)
 Extract next unicode codepoint. More...
 
- Protected Attributes inherited from StringManager
map< Address, StringDatastringMap
 Map from address to string data.
 
int4 maximumChars
 Maximum characters in a string before truncating.
 

Detailed Description

Implementation of the StringManager that queries through the ghidra client.

This acts as a front end to Ghidra's string formats and encodings. The client translates any type of string into a UTF8 representation, and this class stores it for final presentation. Escaping the UTF8 string is left up to the PrintLanguage.

Member Function Documentation

◆ getStringData()

const vector< uint1 > & GhidraStringManager::getStringData ( const Address addr,
Datatype charType,
bool &  isTrunc 
)
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.

Parameters
addris the given address
charTypeis a character data-type indicating the encoding
isTruncpasses back whether the string is truncated
Returns
the byte array of UTF8 data

Implements StringManager.


The documentation for this class was generated from the following files: