il2cpp로 구성된 게임 후킹을 공부하고 있는 학생입니다.

홈 > 커뮤니티 > 질문 게시판
질문 게시판

il2cpp로 구성된 게임 후킹을 공부하고 있는 학생입니다.

1 monlove 2 6880
공부 도중 몇시간을 잡아도 안되는 것이 있어서 고수님들의 조언을 구하고자 합니다.


Java.perform(function get_HPBase_hook()
{
    var il2cpp = Module.getBaseAddress("libil2cpp.so");
    var offset = 0x94F248
    var get_HPBase = il2cpp.add(offset);   
   
    Interceptor.attach(get_HPBase,
    {
        onEnter: function(args)
        {
            console.log("[+] get_HPBase Hook In");
        },
        onLeave: function(retVal)
        {
            var HPMAX = retVal.toInt32();
            var New_HP = 9999;
            retVal.replace(New_HP);
            console.log("[*] HPMAX Hooked "+HPMAX+" ->"+New_HP);
            console.log("");
           
        }
    });
}
get_HPBase_hook();
);



로 후킹 코드를 짰는데 자꾸 "Error: unable to find module 'libil2cpp.so" 라고 자꾸 모듈을 읽어들일수가 없다고 뜨는데 뭘 잘못한걸까요??
2 Comments
6 짤랑이 2020.02.06 11:03  
해당 라이브러리가 메모리에 올라오지 않았는데
스크립트가 동작해서 그런듯 합니다
So 로딩후 스크립트 동작하게 하면 될거 같네요

-- 추가 ---
알고 있기로는 java 에서 system.loadlibrary api 를 이용해서 library 로딩시 내부적으로는 android_dlopen_ext native api 를 이용한다고 하니 이걸 후킹하던가, native 에서 dlopen을 이용해서 libil2cpp.so를 로딩한다면 dlopen을 후킹하면 됩니다. ( 아마 후자 같음 il2cpp.so는.. )

간단한 frida script 공유드리니 한번 확인 해보세요 .ㅎ

// 원하는 so가 로딩된 이후 hook 을 거는 script ( android_dlopen_ext  hook )
var library_name = "libnative-lib.so"  // TODO: 원하는것 so로 수정
var library_loaded = 0
Interceptor.attach(Module.findExportByName(null, 'android_dlopen_ext'),{
    onEnter: function(args){
        // first arg is the path to the library loaded
        var library_path = Memory.readCString(args[0])

        if( library_path.includes(library_name)){
            console.log("[...] Loading library : " + library_path)
            library_loaded = 1
        }
    },
    onLeave: function(args){

        // if it's the library we want to hook, hooking it
        if(library_loaded ==  1){ // 원하는 library가 로딩되었을때
            console.log("[+] Loaded")
            // TODO: 여기 위치에 원하는 동작을 추가 하면됩니다.
            // ~~
            library_loaded = 0
        }
    }
})
M LIN 2020.02.07 14:05  
짤랑님이 잘 설명해주셨네요ㅎㅎ