libmain.so이 로드되는 원리??
Bugday
8
6728
2020.02.12 22:48
유니티 게임 후킹 공부중입니다.
dlopen 함수가 so에서 다른 so를 로드할 때 쓰는 함수라고 알고 있습니다.
dlopen 함수를 후킹해서 로드되는 so 파일들을 보면 libmain.so -> libunity.so -> libil2cpp.so 순으로 로드되는데요.
그렇다면 libmain.so 는 어떻게 로드되는건가요??
자바에서 JNI를 이용하여 System.loadLibrary()로 so를 로드할 수 있다고 알고있는데
System.loadLibrary()와 System.load() 함수를 후킹해봐도 libmain.so을 로드하고 있지않네여
다음은 dlopen를 후킹했을때 로드되는 값들입니다.
load Library /system/lib/libknoxvpnfdsender.so
load Library /data/app/com.habby.archero-1/lib/arm/libmain.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libunity.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libil2cpp.so
load Library egl/eglsubAndroid.so
load Library /vendor/lib/egl/libGLESv2S3D_adreno.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library libadreno_utils.so
load Library egl/libGLESv2_adreno.so
load Library libsc-a3xx.so
load Library libGLESv2.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so
load Library /system/lib/libwebviewchromium_plat_support.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libBugly.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library libGLESv2.so
load Library libEGL.so
load Library libsc-a3xx.so
load Library egl/libGLESv2_adreno.so
load Library libsc-a3xx.so
dlopen 함수가 so에서 다른 so를 로드할 때 쓰는 함수라고 알고 있습니다.
dlopen 함수를 후킹해서 로드되는 so 파일들을 보면 libmain.so -> libunity.so -> libil2cpp.so 순으로 로드되는데요.
그렇다면 libmain.so 는 어떻게 로드되는건가요??
자바에서 JNI를 이용하여 System.loadLibrary()로 so를 로드할 수 있다고 알고있는데
System.loadLibrary()와 System.load() 함수를 후킹해봐도 libmain.so을 로드하고 있지않네여
다음은 dlopen를 후킹했을때 로드되는 값들입니다.
load Library /system/lib/libknoxvpnfdsender.so
load Library /data/app/com.habby.archero-1/lib/arm/libmain.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libunity.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libil2cpp.so
load Library egl/eglsubAndroid.so
load Library /vendor/lib/egl/libGLESv2S3D_adreno.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library libadreno_utils.so
load Library egl/libGLESv2_adreno.so
load Library libsc-a3xx.so
load Library libGLESv2.so
load Library /system/lib/hw/gralloc.msm8974.so
load Library /data/app/com.google.android.webview-1/lib/arm/libwebviewchromium.so
load Library /system/lib/libwebviewchromium_plat_support.so
load Library libc.so
load Library libc.so
load Library /data/app/com.habby.archero-1/lib/arm/libBugly.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library /data/app/com.habby.archero-1/lib/arm/libgpg.so
load Library libGLESv2.so
load Library libEGL.so
load Library libsc-a3xx.so
load Library egl/libGLESv2_adreno.so
load Library libsc-a3xx.so