IDA自带Swift相关定义

  • Update: 20241217

此处发现,最新版IDA(IDA v8.2.230124),去分析某个Swift的Mach-O后,已经自带(=自动分析出)一些Swift相关定义:

Swift::UInt

typedef unsigned __int64 Swift::UInt;

Swift::Double

typedef double Swift::Double;

Swift::String

struct Swift::String
{
  __int64 _countAndFlagsBits;
  void *_object;
};

_TtCs12_SwiftObject

struct _TtCs12_SwiftObject;

ClassDescriptor

struct ClassDescriptor
{
  int Flags;
  __int32 Parent;
  __int32 Name;
  __int32 AccessFunction;
  __int32 FieldDescriptor;
  __int32 SuperclassType;
  int MetadataNegativeSizeInWords;
  int MetadataPositiveSizeInWords;
  int NumImmediateMembers;
  int NumFields;
};

ModuleDescriptor

struct ModuleDescriptor
{
  int Flags;
  __int32 Parent;
  __int32 Name;
};

StructDescriptor

struct StructDescriptor
{
  int Flags;
  __int32 Parent;
  __int32 Name;
  __int32 AccessFunction;
  __int32 FieldDescriptor;
  int NumFields;
  int FieldOffsetVectorOffset;
};

FieldDescriptorKind

enum FieldDescriptorKind : __int16
{
  FDK_Struct = 0,
  FDK_Class = 1,
  FDK_Enum = 2,
  FDK_MultiPayloadEnum = 3,
  FDK_Protocol = 4,
  FDK_ClassProtocol = 5,
  FDK_ObjCProtocol = 6,
  FDK_ObjCClass = 7,
};

FieldDescriptor

struct FieldDescriptor
{
  __int32 MangledTypeName;
  __int32 Superclass;
  FieldDescriptorKind Kind;
  __int16 FieldRecordSize;
  int NumFields;
};

FieldRecord

struct FieldRecord
{
  int Flags;
  __int32 MangledTypeName;
  __int32 FieldName;
};

EnumDescriptor

struct EnumDescriptor
{
  int Flags;
  __int32 Parent;
  __int32 Name;
  __int32 AccessFunction;
  __int32 FieldDescriptor;
  int NumPayloadCasesAndPayloadSizeOffset;
  int NumEmptyCases;
};

MetadataKind

enum MetadataKind : __int32
{
  MK_Class = 0x0,
  MK_Struct = 0x200,
  MK_Enum = 0x201,
  MK_Optional = 0x202,
  MK_ForeignClass = 0x203,
  MK_ForeignReferenceType = 0x204,
  MK_Opaque = 0x300,
  MK_Tuple = 0x301,
  MK_Function = 0x302,
  MK_Existential = 0x303,
  MK_Metatype = 0x304,
  MK_ObjCClassWrapper = 0x305,
  MK_ExistentialMetatype = 0x306,
  MK_ExtendedExistential = 0x307,
  MK_HeapLocalVariable = 0x400,
  MK_HeapGenericLocalVariable = 0x500,
  MK_ErrorObject = 0x501,
  MK_Task = 0x502,
  MK_Job = 0x503,
  MK_LastEnumerated = 0x7FF,
};

ValueMetadata

struct ValueMetadata
{
  __int64 kind;
  void *description;
};

ValueWitnessTable

struct ValueWitnessTable
{
  void *initializeBufferWithCopyOfBuffer;
  void *destroy;
  void *initializeWithCopy;
  void *assignWithCopy;
  void *initializeWithTake;
  void *assignWithTake;
  void *getEnumTagSinglePayload;
  void *storeEnumTagSinglePayload;
  __int64 size;
  __int64 stride;
  int flags;
  int extraInhabitantCount;
};

ProtocolDescriptor

struct ProtocolDescriptor
{
  int Flags;
  __int32 Parent;
  __int32 Name;
  int NumRequirementsInSignature;
  int NumRequirements;
  __int32 AssociatedTypeNames;
};

AnonymousContextDescriptor

struct AnonymousContextDescriptor
{
  int Flags;
  __int32 Parent;
};

results matching ""

    No results matching ""