OnesieRequestProto
TODO:
- 【未解决】研究YouTube逻辑:lite版protobuf类OnesieRequestProto如何搞清楚属性字段定义
- 【未解决】研究YouTube逻辑:OnesieRequestProto相关
OnesieRequestProto的vtable定义
经过逆向,目前的理解是:
IDA中改名:
核心定义:
000004F7BEE8 ; `vtable for'video_streaming::OnesieRequestProto
__const:0000000004F7BEE8 __ZTVN15video_streaming18OnesieRequestProtoE DCQ 0 ; offset to this
__const:0000000004F7BEF0 DCQ __ZTIN15video_streaming18OnesieRequestProtoE ; `typeinfo for'video_streaming::OnesieRequestProto
__const:0000000004F7BEF8 MessageLite_commonDctor_4F7BEF8 DCQ OnesieRequestProto_commonDctor_32D3230
__const:0000000004F7BEF8 ; DATA XREF: requestConstructor_32D2E8C+C↑o
__const:0000000004F7BEF8 ; requestConstructor_32D2E8C+10↑o ...
__const:0000000004F7BF00 DCQ OnesieRequestProto_dtor_32D3234
__const:0000000004F7BF08 DCQ OnesieRequestProto_GetTypeName_32D3ED8
__const:0000000004F7BF10 DCQ OnesieRequestProto_NewArena_32D3FA0
__const:0000000004F7BF18 DCQ OnesieRequestProto_Clear_32D3248
__const:0000000004F7BF20 DCQ OnesieRequestProto_IsInitialized_32D3EA8
__const:0000000004F7BF28 DCQ MessageLite_InitializationErrorString_3891244
__const:0000000004F7BF30 DCQ OnesieRequestProto_CheckTypeAndMergeFrom_32D3EA4
__const:0000000004F7BF38 DCQ OnesieRequestProto_ByteSizeLong_32D3BAC
__const:0000000004F7BF40 DCQ __ZNK7youtube8elements6Entity13GetCachedSizeEv ; youtube::elements::Entity::GetCachedSize(void)
__const:0000000004F7BF48 DCQ OnesieRequestProto__InternalParse_32D338C
__const:0000000004F7BF50 DCQ __ZN6proto28internal24GeneratedExtensionFinderD1Ev ; proto2::internal::GeneratedExtensionFinder::~GeneratedExtensionFinder()
__const:0000000004F7BF58 DCQ OnesieRequestProto__InternalSerialize_32D373C
__const:0000000004F7BF60 ; public video_streaming::OnesieRequestProto :
OnesieRequestProto的vtable定义:
- vtable OnesieRequestProto
+0x08
=OnesieRequestProto typeinfo
+0x10
=MessageLite_commonDctor_4F7BEF8
=OnesieRequestProto_commonDctor_32D3230
- 某种 deconstructor ?
+0x18
=OnesieRequestProto_dtor_32D3234
- virtual ~MessageLite() = default;
+0x20
=OnesieRequestProto_GetTypeName_32D3ED8
- virtual std::string GetTypeName() const = 0;
+0x28
=OnesieRequestProto_NewArena_32D3FA0
- virtual MessageLite New(Arena arena) const = 0;
+0x30
=OnesieRequestProto_Clear_32D3248
- virtual void Clear() = 0;
+0x38
=OnesieRequestProto_IsInitialized_32D3EA8
- virtual bool IsInitialized() const = 0;
+0x40
=MessageLite_InitializationErrorString_3891244
- virtual std::string InitializationErrorString() const;
+0x48
=OnesieRequestProto_CheckTypeAndMergeFrom_32D3EA4
- virtual void CheckTypeAndMergeFrom(const MessageLite& other) = 0;
+0x50
=OnesieRequestProto_ByteSizeLong_32D3BAC
- virtual size_t ByteSizeLong() const = 0;
+0x58
=youtube::elements::Entity::GetCachedSize(void)
- virtual int GetCachedSize() const = 0;
+0x60
=OnesieRequestProto__InternalParse_32D338C
- virtual const char _InternalParse(const char /ptr/, internal::ParseContext /ctx*/)
+0x68
=proto2::internal::GeneratedExtensionFinder::~GeneratedExtensionFinder()
- virtual void OnDemandRegisterArenaDtor(Arena /arena*/) {}
+0x70
=OnesieRequestProto__InternalSerialize_32D373C
- virtual uint8_t _InternalSerialize(uint8_t ptr, io::EpsCopyOutputStream* stream) const = 0;