0

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に格納されているかを知るにはどうすればよいですか。

インターネットの助けを借りて、私は次のことをします。

  1. MOVW R1、#0x2B06およびMOVT.W R1、#0xBの後、R1=0x000B2B06を取得しました

  2. ADD R1、PCの後、R1 = 0x000B2B06 + PC(A13A)+ 4 = 0x000BCC44を取得しました。ここで、A13AはADD R1、PCのアドレスです。

  3. そのアドレスの近くのコンテンツは次のとおりです。

    __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:」が実際に呼び出されたことがわかりました。

セレクターを取得する方法に何か問題がありますか?

4

1 に答える 1

0

ログツールのバグかタイミングの問題だと思います。明らかに を呼び出してinitAsAddressBook:withAddressBook:withStyle:います。IDA 6.3 が示すものは次のとおりです (多少異なるビルドのようです)。

__text:000014A8       PUSH            {R7,LR}
__text:000014AA       ADD             R7, SP, #0
__text:000014AC       SUB             SP, SP, #4
__text:000014AE       LDR             R1, =(selRef_initAsAddressBook_withAddressBook_withStyle_ - 0x14BA)
__text:000014B0       SXTB            R2, R2
__text:000014B2       MOV.W           R12, #0
__text:000014B6       ADD             R1, PC ; selRef_initAsAddressBook_withAddressBook_withStyle_
__text:000014B8       STR.W           R12, [SP,#4+var_4]
__text:000014BC       LDR             R1, [R1]          ; "initAsAddressBook:withAddressBook:withS"...
__text:000014BE       BLX             _objc_msgSend
__text:000014C2       SUB.W           SP, R7, #0
__text:000014C6       POP             {R7,PC}

setupInitialStackAndLoadStateセレクターは後で呼び出されますinitAsAddressBook:withAddressBook:withStyle:

于 2012-06-01T15:05:43.937 に答える