본문 바로가기
<UNITY>/BASIC

[THEORY] IL2CPP

by CodeGrimie 2021. 2. 25.

유니티 엔진 모듈에 보면 윈도우와 리눅스 빌드에 IL2CPP라고 따로 하나씩 더 존재한다.

궁금한 건 못 넘어가기 때문에 간단히 알아보고 정리해둔다.

 

결론부터 말해서 좀 더 보안성이 강화되서 해킹 이슈를 비교적 줄일 수 있다는 장점을 가지고 있다.

IL2CPP를 사용한다고 해도 해킹에서 완전히 자유로워 지는게 아니기 때문에 코드 상에서도 방지 코드 및 복호화를 해줘야 한다.

IL(Intermediate Language)

IL2CPP를 이해하기 위해서는 당연히 IL이 뭔지 부터 알아야 한다.

ILIntermediate Language로 한국어로 번역하면 중급 언어로 번역된다.

 

이름에서도 알 수 있듯이 컴퓨터에 가까운 저급 언어와 사람에게 가까운 고급 언어 사이에 있는 언어로 JIT Compiler를 통해서 Native 코드로 컴파일 된다.

 

이 특징 덕분에 실행 머신 환경 (32/64 bit, x86/AMD 등)에 관계없이 동일 코드를 실행할 수 있다는 장점을 가지고 있지만 다르게 말하면 그만큼 실행 속도가 느리다는 단점과 비교적 빈약한 보안성을 가지고 있다.

 

속도의 문제는 메서드 단위로 코드를 분리해서 작성함으로써 필요한 함수들만 JIT가 컴파일하도록 해서 개선할 수 있지만 보안의 문제는 좀 더 복잡한 문제다.

IL2CPP(Intermediate Language 2 CPP)

그래서 보안 문제를 조금이라도 해결하기 위해서 유니티가 선택한 방법이 IL을 C++로 번역한 뒤에 C++로 처음부터 Native 코드로 컴파일하는 방법이다.

 

IL이 가지는 두 가지의 단점을 모두 개선할 수 있는데 이미 Native로 컴파일 된 상태기 때문에 속도도 보장되고 보안에서도 해커가 어셈블리 단에서 조작하지 않는 한 쉽게 뚫리지 않는다.

 

PC나 리눅스를 대상으로 출시한다면 충분히 고려할 만한 선택지라고 생각된다.

'<UNITY> > BASIC' 카테고리의 다른 글

[UGUI] Layout Group  (0) 2021.02.25
[THEORY] Roll/Pitch/Yaw  (0) 2021.02.24
[SET_UP] 유니티 OpenGL/Vulkan 렌더러로 실행하기  (0) 2021.02.23

댓글