모든 앱이 동일하진 않지만 주요 기능은 네이티브 파일에서 동작하는 경우가 많기 때문에
네이티브 파일, 또는 jadx와 같은 툴로 분석하면서 해당 앱이 어떤 언어 또는 오픈소스로 개발되었는지 확인해야 한다.
일반적인 경우 네이티브 파일은(.so) IDA를 이용하여 분석이 가능하지만 .NET, C#, C++의 경우 용량이 너무 크거나 복호화가 잘 되지 않는 이유로 분석에 어려움을 겪는다.
파일 구조 검색 시 유니티브 라이브러리 C# 계열로 개발된 것을 확인할 수 있다.
분석하기 위해 먼저 libil2cpp.so파일에서 주요 DLL을 추출해야 한다. .NET 파일 추출을 위해 Il2CppDumper 툴을 다운받아 사용한다.
DLL을 추출하기 전에 apk파일에서 global-metadata.dat파일을 추출한다. apk파일을 zip확장자로 변경 후 /assets/bin/Data/Managed/Metadata 경로에서 추출한다.
Il2CppDumper.exe를 실행시키고 libil2cpp.so, global-metadata.dat 두 개의 파일을 순차적으로 업로드 하면 DummyDll 파일이 추출된다.
추출된 DummyDll폴더에서 Assembly-CSharp.dll 파일을 dnSpy툴을 이용하여 분석한다.
(dnSpy 추가 다운로드 필요)
위와 같이 dnspy를 이용하여 디컴파일 된 코드를 분석해 후킹을 걸기 편리하며 동적 디버깅도 가능하니 잘 다루게 된다면 유용하게 사용할 수 있다.