decompiler  1.0.0
Public Member Functions | Private Attributes | 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:
StringManager

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.
 
void clear (void)
 Clear out any cached strings.
 
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...
 

Private Attributes

ArchitectureGhidraglb
 The ghidra client interface.
 
uint1 * testBuffer
 Temporary storage for storing bytes from client.
 

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

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.

References glb, StringManager::maximumChars, and StringManager::stringMap.


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