IDAを使用してiOSフレームワークのAddressBookを開くと、次のコードが表示されます。
**__ABPeoplePickerNavigationController_initAsAddressBook_withAddressBook__
var_C= -0xC
PUSH {R7,LR}
MOV R7, SP
SUB SP, SP, #4
MOVW R1, #0x2B06
MOV.W R12, #0
MOVT.W R1, #0xB
STR.W R12, [SP,#0xC+var_C]
ADD R1, PC
LDR R1, [R1]
BLX _objc_msgSend
ADD SP, SP, #4
POP {R7,PC}
; End of function __ABPeoplePickerNavigationController_initAsAddressBook_withAddressBook__**
_objc_msgSend()が呼び出される前に、どのセレクターがR1に格納されているかを知るにはどうすればよいですか。
インターネットの助けを借りて、私は次のことをします。
MOVW R1、#0x2B06およびMOVT.W R1、#0xBの後、R1=0x000B2B06を取得しました
ADD R1、PCの後、R1 = 0x000B2B06 + PC(A13A)+ 4 = 0x000BCC44を取得しました。ここで、A13AはADD R1、PCのアドレスです。
そのアドレスの近くのコンテンツは次のとおりです。
__objc_selrefs:000BCC44 DCD aInitasaddres_0; "initAsAddressBook:withAddressBook:withS" ... __objc_selrefs:000BCC48 DCD aDefaultstylepr; "defaultStyleProviderForStyle:" __objc_selrefs:000BCC4C DCD aInitwithnaviga; "initWithNavigationController:" __objc_selrefs:000BCC50 DCD aSetupinitialst; 「setupInitialStackAndLoadState:」
だから私はセレクター「initAsAddressBook:withAddressBook:withS ...」を手に入れました、
4.しかし、ワークフローをログに記録すると、「setupInitialStackAndLoadState:」が実際に呼び出されたことがわかりました。
セレクターを取得する方法に何か問題がありますか?