ios) 안티디버깅 - getppid 일반적인 앱은 launchd process에 의해 실행된다. launchd 프로세스는 user mode로 첫번째로 돌아가는 프로세스로 PID=1이다. 따라서 일반적인 앱의 ppid(parent process id)는 1로 조회된다면 정상이다. 반면 디버거에서 자식프로세스로 생성한 경우는 ppid는 디버거의 PID로 설정된다. 따라서 getppid() 함수 호출 결과가 launchd인 1이 아니라면 디버거에서 생성했다고 판단할 수 있다. func AmIBeingDebugged() -> Bool { return getppid() != 1 } [우회] 물론 getppid() 함수에 후킹 걸어서 항상 1이 반환되도록 하면 됨. 아니면 반환 결과를 보고 판단하는 함수를 패치해..