2017-12-15 8 views
0

objective-c 바이너리의 모든 셀렉터를 반복 처리 (또는 카운트) 할 수있는 도구/스크립트가 있습니까? 정적으로 객관적인 c 바이너리를 분석하고 그 메트릭을 얻고 싶습니다. 나는 otool -tV을 시도했지만 모든 덤프는 16 진수 데이터로 분석 할 수 없습니다. 어떤 사람들은 lldb을 사용하라고 제안하지만 어떻게해야할지 확신이 없습니다.objective-c 바이너리의 셀렉터 수를 계산합니다

답변

1

이 같은 선택기를 모두 인쇄 할 수 있습니다

$ objdump -section=__objc_selrefs -macho /Applications/Xcode.app/Contents/Frameworks/IBFoundation.framework/IBFoundation 
/Applications/Xcode.app/Contents/Frameworks/IBFoundation.framework/IBFoundation: 
Contents of (__DATA,__objc_selrefs) section 
000000000016a808 __TEXT:__objc_methname:init 
000000000016a810 __TEXT:__objc_methname:copy 
000000000016a818 __TEXT:__objc_methname:array 
000000000016a820 __TEXT:__objc_methname:dictionary 
000000000016a828 __TEXT:__objc_methname:addObject: 
000000000016a830 __TEXT:__objc_methname:setObject:forKey: 
000000000016a838 __TEXT:__objc_methname:appendString: 
000000000016a840 __TEXT:__objc_methname:allKeys 
... 

당신이 화장실에 두 개의 헤더 행 및 파이프 나머지를 grep으로,이를 계산하려면 :

$ objdump -section=__objc_selrefs -macho /Applications/Xcode.app/Contents/Frameworks/IBFoundation.framework/IBFoundation | grep ^'[0-9a-f]' | wc -l 
    1668 
1

또 다른 도구는 objdump입니다. otool의 후계자입니다. 실행하려면 xcrun objdump을 사용해야 할 수도 있으며, 인수는 -help입니다. 예를 들어 다음과 같이 시도하십시오.

xcrun objdump -macho -objc-meta-data <binary> | grep "name 0x" 

당신이 쫓고있는 것에 가까워 질 수 있습니다.

관련 문제