• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

탈옥 검증 로직이 여러개 존재할 경우!! 답변부탁드립니다.

21.10.15 15:13 작성 조회수 138

0

안녕하세요. 해당 강의를 통해 앱 취약점 진단하는데 도움을 많이 받고 있는 수강생입니다.
 
현재 프리다 툴을 이용해 탈옥 검증 로직을 우회하는 테스트를 진행하고 있는데
 
OOO 앱에 대해 클래스명.함수명을 분석한 결과 탈옥을 검증하는 클래스명.함수명이 2개가 있더라구요
 
두 함수명에 대한 return값을 모두 0x0에서 0x1로 변경하고 싶은데 어떻게 짜면 좋을까요 ㅠㅠ
 

* 현재 사용하고 있는 프리다 코드입니다.

if(ObjC.available) { var class_checker = ObjC.classes.[클래스명]; var methods_checker = class_checker.$ownMethods; var isApplication = class_checker['함수명']; Interceptor.attach(isApplication.implementation, { onEnter: function(args) { var target = new ObjC.Object(args[0]); var sel = ObjC.selectorAsString(args[1]); send("Target class : " + target.$className); send("Target selector : " + sel); }, onLeave: function(retVal) { send("Old return : " + retVal); retVal.replace("1"); send("New return : " + retVal); } }); } else { console.log("Objective-C Runtime is not available!"); } """
 
답변부탁드립니다.

답변 1

답변을 작성해보세요.

1

김태영님의 프로필

김태영

2021.10.18

안녕하세요. 보안프로젝트 김태영입니다.

 

아래 코드와 같이 두 함수명을 별도로 지정하셔서 작성해주시면 됩니다.

감사합니다.

 

 if(ObjC.available) { 

 // 이 부분에 두 함수명을 지정해주시면 됩니다.

// 예를 들어 아래와 같이 가능합니다.

        var class_checker1 = ObjC.classes.[클래스명1];

        var methods_checker1 = class_checker1.$ownMethods;

        var isApplication1 = class_checker1['함수명1'];

 

Interceptor.attach(isApplication1.implementation, { 

            ~~~~~ 생략 ~~~~~~

        });

 

        var class_checker2 = ObjC.classes.[클래스명2];

        var methods_checker2 = class_checker2.$ownMethods;

        var isApplication2 = class_checker2['함수명2'];

 

Interceptor.attach(isApplication2.implementation, { 

            ~~~~~ 생략 ~~~~~~

        });

}