iOS

서브루틴(사용자 정의 함수) Frida 후킹

HW4N 2023. 3. 26. 02:04
반응형

IDA를 사용하여 앱을 분석할 때 서브루틴에 탈옥을 탐지하는 로직이 있는 경우 서브루틴의 시작 주소를 이용하여 후킹을 해야한다.

 

 

IDA에서 서브루틴은 'sub_10003ABCD' 이런식으로 네이밍이 되어있다. 

해당 서브루틴의 시작 주소는 0x3ABCD이다.

 

 

아래의 코드는 앱 베이스 명과 시작주소를 입력하여 해당 서브루틴 반환 값이 0x0이면 0x1로 바꿔주고, 0x1이면 0x0으로 바꿔주는 코드이다.

// Define the base address and offset
var baseAddr = Module.findBaseAddress(""); // App Base name
var offset = 0x; // Start Addr

// Define the function to hook
var functionName = "example_function";
var functionAddr = baseAddr.add(offset);

Interceptor.attach(functionAddr, {
  onLeave: function(retval) {
    if (retval.toInt32() == 0x0) {
      // Change the return value from 0x0 to 0x1
      retval.replace(0x1);
      console.log("Return value changed from 0x0 to 0x1");
    } else if (retval.toInt32() == 0x1) {
      // Change the return value from 0x1 to 0x0
      retval.replace(0x0);
      console.log("Return value changed from 0x1 to 0x0");
    }
  }
});

console.log("Hooked " + functionName + " at address " + functionAddr);

 

 

 

서브루틴에 탈옥 탐지 로직이 있는 앱에 테스트 결과 아래 사진과 같이 정상적으로 탈옥 탐지 우회가 되었다.

 

반응형