Klassendump und CFObjects
-
12-11-2019 - |
Frage
Wird der Klassen-Dump durch CFObjects / structs verwirrt?Ich habe Klassendump für eine Anwendung verwendet und eines der Argumente der Methode war eine Struktur arg1, die eine BInstantMessage ist:
struct BInstantMessage {
void **_field1;
struct CFString _field2;
unsigned short *_field3;
struct DTextStyle _field4;
struct BUser *_field5;
struct BChat *_field6;
};
struct CFString {
void **_vptr$CFObject;
struct __CFString *mCFRef;
_Bool mIsMutable;
};
struct __CFString;
Also, wie kann ich einen CFStringRef oder NSString * von diesem arg1 bekommen?Ich vermute, dass class dump einige CFStringRef durch CFString-Definitionen ersetzt, aber es ist nur eine Vermutung...Ich möchte nur ein CFStringRef von arg1 , das eine BInstantMessage ist.
Danke!
Lösung
Die Anwendung verwendet einen C ++ - Wrapper für Core Foundation-Objekte.der struct CFString
in BInstantMessage
ist ein Objekt dieses Typs.Du willst (NSString *)(arg1._field2.mCFRef)
.
Der void **_vptr$CFObject
field ist hier der wichtigste Hinweis – es repräsentiert die vtable für eine virtuelle Oberklasse CFObject
- kombiniert mit dem gängigen C++ m
präfix-Namenskonvention.