반응형
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);
서브루틴에 탈옥 탐지 로직이 있는 앱에 테스트 결과 아래 사진과 같이 정상적으로 탈옥 탐지 우회가 되었다.
반응형