[THEORY] IL2CPP
유니티 엔진 모듈에 보면 윈도우와 리눅스 빌드에 IL2CPP라고 따로 하나씩 더 존재한다.
궁금한 건 못 넘어가기 때문에 간단히 알아보고 정리해둔다.
결론부터 말해서 좀 더 보안성이 강화되서 해킹 이슈를 비교적 줄일 수 있다는 장점을 가지고 있다.
IL2CPP를 사용한다고 해도 해킹에서 완전히 자유로워 지는게 아니기 때문에 코드 상에서도 방지 코드 및 복호화를 해줘야 한다.
IL(Intermediate Language)
IL2CPP를 이해하기 위해서는 당연히 IL이 뭔지 부터 알아야 한다.
IL은 Intermediate Language로 한국어로 번역하면 중급 언어로 번역된다.
이름에서도 알 수 있듯이 컴퓨터에 가까운 저급 언어와 사람에게 가까운 고급 언어 사이에 있는 언어로 JIT Compiler를 통해서 Native 코드로 컴파일 된다.
이 특징 덕분에 실행 머신 환경 (32/64 bit, x86/AMD 등)에 관계없이 동일 코드를 실행할 수 있다는 장점을 가지고 있지만 다르게 말하면 그만큼 실행 속도가 느리다는 단점과 비교적 빈약한 보안성을 가지고 있다.
속도의 문제는 메서드 단위로 코드를 분리해서 작성함으로써 필요한 함수들만 JIT가 컴파일하도록 해서 개선할 수 있지만 보안의 문제는 좀 더 복잡한 문제다.
IL2CPP(Intermediate Language 2 CPP)
그래서 보안 문제를 조금이라도 해결하기 위해서 유니티가 선택한 방법이 IL을 C++로 번역한 뒤에 C++로 처음부터 Native 코드로 컴파일하는 방법이다.
IL이 가지는 두 가지의 단점을 모두 개선할 수 있는데 이미 Native로 컴파일 된 상태기 때문에 속도도 보장되고 보안에서도 해커가 어셈블리 단에서 조작하지 않는 한 쉽게 뚫리지 않는다.
PC나 리눅스를 대상으로 출시한다면 충분히 고려할 만한 선택지라고 생각된다.