Skip to content
This repository was archived by the owner on Jul 11, 2022. It is now read-only.

Commit 7bcc99c

Browse files
committed
Convert forgotten data variables to tagged pointers
Resolves: https://github.com/jonpalmisc/ObjectiveNinja/issues/23
1 parent 5628c5e commit 7bcc99c

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

source/StructureAnalyzer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ StructureAnalyzer::StructureAnalyzer(BinaryViewRef bv)
4444
, m_reader(bv)
4545
, m_writer(bv)
4646
, m_isARM64(bv->GetDefaultArchitecture()->GetName() == "aarch64")
47+
, m_taggedPointerType(Type::NamedType(m_bv, CustomTypes::TaggedPointer))
4748
, m_cfStringType(Type::NamedType(m_bv, CustomTypes::CFString))
4849
, m_methodListType(Type::NamedType(m_bv, CustomTypes::MethodList))
4950
, m_classDataType(Type::NamedType(m_bv, CustomTypes::ClassData))
@@ -139,8 +140,7 @@ SelectorRefRecord StructureAnalyzer::analyzeSelectorRef(uint64_t address)
139140

140141
LOG(" rawSelector=0x%llx, nameAddress=0x%llx", rawSelector, nameAddress);
141142

142-
m_bv->DefineDataVariable(address,
143-
Type::PointerType(8, Type::NamedType(m_bv, CustomTypes::Selector)));
143+
m_bv->DefineDataVariable(address, m_taggedPointerType);
144144
return { address, rawSelector, nameAddress };
145145
}
146146

@@ -359,7 +359,7 @@ void StructureAnalyzer::runPrivate()
359359
const auto classListStart = classListSection->GetStart();
360360
const auto classListEnd = classListStart + classListSection->GetLength();
361361
for (auto address = classListStart; address < classListEnd; address += 8) {
362-
m_bv->DefineDataVariable(address, Type::PointerType(8, m_classType));
362+
m_bv->DefineDataVariable(address, m_taggedPointerType);
363363

364364
seek(address);
365365
const auto classAddress = readTaggedPointer();

source/StructureAnalyzer.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class StructureAnalyzer {
6464

6565
bool m_isARM64;
6666

67+
TypeRef m_taggedPointerType;
6768
TypeRef m_cfStringType;
6869
TypeRef m_methodType;
6970
TypeRef m_methodListType;

0 commit comments

Comments
 (0)