Frida il2cpp hook 질문
똥덩어리
9
6132
2020.06.16 10:13
Frida 를 이용해서 il2cpp.so hooking을 진행하고 있는데요..
분명 몇주전에 다른 타이틀의 게임에서는 hooking이 걸려서 진행이 되었었는데... 갑자기 hook 이 되지 않습니다..
아시다 시피 코드 내에 패키지명은 공개 해드리지 못하며 일단은 코드 전체를 업로드 해 봅니다. 혹시 도움 주실 수 있으신 분들은 조언은 부탁 드립니다
참고로 il2cpp dummy dll에서 추출한 rva 주소 입니다.
감사합니다.
-----------------------------------------------------------------
# coding=utf-8
import sys
import frida
def get_message_from_js(message, data):
if message['type'] == 'send':
print("[Hooking]{0}".format(message['payload']))
else:
print(message)
PACKAGE_NAME = "패키지명"
jscode="""
var library_name = "libil2cpp.so"
var library_loaded = 0
Interceptor.attach(Module.findExportByName(null, 'android_dlopen_ext'),{
onEnter: function(args){
var library_path = Memory.readCString(args[0])
if( library_path.includes(library_name)){
console.log("[...] Loading library : " + library_path)
library_loaded = 1
}
},
onLeave: function(retVal){
if(library_loaded == 1){
console.log("[+] Loaded")
var skill= il2.add(0x694228);
var fun = new NativeFunction(skill,"void",["long","int"]);
Interceptor.replace(skill,new NativeCallback(function(target, maxSkillRange, minSkillRange){
maxSkillRange = 999.9;
fun(maxSkillRange, minSkillRange);
console.log("Hooking End")
},
"void",["long","int"]))
library_loaded = 0
}
}
})
"""
try:
device = frida.get_usb_device(timeout=10)
pid = device.spawn([PACKAGE_NAME])
print("App is starting ... pid : {}".format(pid))
process = device.attach(pid)
device.resume(pid)
script = process.create_script(jscode)
script.on('message',get_message_from_js)
print('[*] Running Frida')
script.load()
sys.stdin.read()
except Exception as e:
print(e)
분명 몇주전에 다른 타이틀의 게임에서는 hooking이 걸려서 진행이 되었었는데... 갑자기 hook 이 되지 않습니다..
아시다 시피 코드 내에 패키지명은 공개 해드리지 못하며 일단은 코드 전체를 업로드 해 봅니다. 혹시 도움 주실 수 있으신 분들은 조언은 부탁 드립니다
참고로 il2cpp dummy dll에서 추출한 rva 주소 입니다.
감사합니다.
-----------------------------------------------------------------
# coding=utf-8
import sys
import frida
def get_message_from_js(message, data):
if message['type'] == 'send':
print("[Hooking]{0}".format(message['payload']))
else:
print(message)
PACKAGE_NAME = "패키지명"
jscode="""
var library_name = "libil2cpp.so"
var library_loaded = 0
Interceptor.attach(Module.findExportByName(null, 'android_dlopen_ext'),{
onEnter: function(args){
var library_path = Memory.readCString(args[0])
if( library_path.includes(library_name)){
console.log("[...] Loading library : " + library_path)
library_loaded = 1
}
},
onLeave: function(retVal){
if(library_loaded == 1){
console.log("[+] Loaded")
var skill= il2.add(0x694228);
var fun = new NativeFunction(skill,"void",["long","int"]);
Interceptor.replace(skill,new NativeCallback(function(target, maxSkillRange, minSkillRange){
maxSkillRange = 999.9;
fun(maxSkillRange, minSkillRange);
console.log("Hooking End")
},
"void",["long","int"]))
library_loaded = 0
}
}
})
"""
try:
device = frida.get_usb_device(timeout=10)
pid = device.spawn([PACKAGE_NAME])
print("App is starting ... pid : {}".format(pid))
process = device.attach(pid)
device.resume(pid)
script = process.create_script(jscode)
script.on('message',get_message_from_js)
print('[*] Running Frida')
script.load()
sys.stdin.read()
except Exception as e:
print(e)