Technical Docs/Android
[Frida] Root Check : getpid
chdwjfdl
2022. 6. 22. 17:36
"getpid"를 통해 루팅 탐지하는 로직이 있음
- getpid ?
함수를 호출한 프로세스 ID 리턴
returns the process ID (PID) of the calling process. - getppid ?
함수를 호출한 부모 프로세스 ID 리턴
returns the process ID of the parent of the calling process.
실행되는 앱 프로세스 정보는 아래와 같음
만약, 해당 앱이 슈퍼 유저 권한을 부여 받을때 "[App Name]"에 슈퍼유저 권한이 허용됨" 문구를 확인할 수 있으며,
프로세스 정보를 다시 확인해 보면 "su" 프로세스가 생성됨
추측, "getpid"를 통한 로팅 탐지 방법
- "getpid" 함수 호출 하여 해당 앱 프로세스 리스트 출력
- 해당 프로세스 리스트에 "su" 프로세스 있는지 확인
2-1. 있다면 -> 프로세스 종료
2-2. 없다면 -> 다음단계 실행
자식 프로세스에 루팅 사용된 프로세스가 존재하지 않은 PID 값 리턴
Interceptor.attach(Module.findExportByName(null, 'getpid'), {
onEnter: function (args) {},
onLeave: function (retval) {
console.log('\tgetpid : ' + retval);
retval.replace(ptr('0x0'));
console.log('\tNew getpid : ' + retval);
}
})