반응형

ObjC 는 메세지 기반의 메서드 호출을 하기 때문에 objc_msgSend 함수를 관찰하면 앱 동작 분석시 초반에 단서를 얻는데 도움이 됩니다.

그러나, frida로 objc_msgSend 함수 후킹하여 로그를 찍어보면 100이면 100 앱이 죽습니다. 

굉장히 자주, 빠르게 사용되고 있기 때문에 overhead가 걸려 죽는 것이죠.

그래서 objc_msgSend는 보통 제껴두고, 정적분석을 통해 의심가는 메서드를 하나하나 후킹해서 관찰하곤 합니다.

 

관련해서 InspectiveC(https://github.com/DavidGoldman/InspectiveC)라는 dylib가 있습니다.

수년전에 작성된 코드이지만 아직도 잘 작동합니다.

우리가 할것은 InpectiveC를 단말기에 설치해주고, "InspCWrapper.m" 을 포함하여 간단한 트윅을 작성해주면 됩니다.

#import "InspCWrapper.m"

%ctor {
    enableCompleteLogging();
}

 

그 후 앱을 실행하면, objc_msgSend 로그가 "/var/mobile/Containers/Data/Application/<앱>/Documents/" 위치에 저장됩니다.

다음은 DVIA-v2 앱에 대한 objc_msgSend Trace 로그입니다.

 

 

분석후에는 InspectiveC 프로젝트의 "InspectiveCarm64.mm" 파일의 "preObjc_msgSend" 함수를 수정하면, objc_msgSend의 전달되는 인자값을 바꿀수도 있죠.

예컨데, selector가 "a:b:c:" 일 경우에 전달되는 인자값을 1, 2, 3으로 변경한다든지,

 

 

selector가 "fileExistsAtPath:" 일 경우에 전달되는 문자열에 "MobileSubstrate" 가 포함되어 있으면, "test" 문자열로 변경할 수 있겠죠.

 

 

 

반응형

'Information Security > iOS' 카테고리의 다른 글

frida-gum integration iOS  (0) 2022.08.09
iOS 순정에서 함수 주소값 후킹  (0) 2022.08.07
Hook after dyld loaded  (0) 2022.06.19
Jailed Tweak Limitations  (0) 2022.03.05
Add UIButton on ViewController Tweak  (0) 2022.02.13

+ Recent posts