본문 바로가기

TOOL/Unity

IL2CPP / GCC / C# C++ Assembly 변환과정

IL(Intermediate Language


CIL과 동일한 중간단계 언어이다.



IL2CPP


msc.exe를 이용하여 IL code를 생성한 후에 il2cpp.exe라는 프로그램을 이용해 IL code를 C++형태로 변환한다.

AOT컴파일방식을 사용하며 mono보다 빌드 시간이 더 길다.

(unity 2017에서 IL2CPP는 .NET 4.6 API를 지원한다.)





P.S) mono framework에서는 C++로 변환하는 과정없이 IL을 바로 Assembly로 변환한다.

IOS에서는 mono는 지원하지 않고 IL2CPP만 지원한다.



또한 Mono로 build하는것보다 IL2CPP로 Build를 하게될 경우 보안성이 우수해진다.

mono로 build하였을 경우 apk file 내부에 Assembly-CSharp.dll file이 생성되고 해당 file안에 main code들이 위치하게 되는데

해당 file은 ILSPY같은 디컴파일러를 사용하면 손쉽게 code를 뜯어보고 수정할 수 있어 보안에 취약하다.


하지만 IL2CPP로 build를 하게 된 .so file들은 디컴파일시 code형태로 디컴파일되지 않고 assembly  code를 분석하는 리버싱을 통해서

코드수정을 접근해야 하므로 보안성이 mono에 비해 우수하다.




GCC(GNU Compiler Collection, GNU Compiler 모음


GNU Project의 opensource complier collection

C, C++등 다양한 언어를 compile할 수 있는 compiler


'TOOL > Unity' 카테고리의 다른 글

Unity Heap Memory 구조  (0) 2019.03.05
Mono / Mono Behaviour  (0) 2019.03.05
Asset Bundle Manager  (0) 2019.02.27
Asset bundle 사용법  (0) 2019.02.27
대표적인 Memory leak 발생 유형  (0) 2019.02.26