frida libil2cpp.so 질문 있습니다!
koooo
2
5904
2020.06.03 22:56
안녕하세요. frida를 통해 libil2cpp.so 를 후킹해서 게임 해킹을 공부하고 있습니다.
libil2cpp.so BaseAddress 를 구해 후킹하고자 하는 함수 offset을 더하여 Interceptor.attach를 시도했습니다.
var il2cpp = Module.getBaseAddress('libil2cpp.so');
var offset = 0x1451CB0;
var func = il2cpp.add(offset);
Interceptor.attach(func, {
onEnter: function(args) {
console.log('[+] args[2] : ' + args[2])
},
onLeave: function(retval) {
}
});
여기서 args[2] 값이 0x32 와 같이 주소값이 아닌 상수(?)로 나옵니다.
보통 Memory.readUtf8String(args[2]) 이나 Memory.readInt(args[2]) 등으로 읽고
Memory.writeUtf8String(args[2], 'string') 이나 Memory.writeInt(args[2], 123) 등으로 값을 덮어쓰는 것으로 알고 있습니다.
근데 앞서 작성한 코드에서 args[2] 값은 위의 함수들로 읽으려고 하면 access violation 에러가 납니다.
args[2].replace(123), args[2] = 123 등과 같은 시도를 해봤는데 마찬가지로 에러가 나는데
이 값을 변조시키려면 어떻게 해야 하나요?
고수분들의 조언 및 답변 미리 감사 드립니다.
libil2cpp.so BaseAddress 를 구해 후킹하고자 하는 함수 offset을 더하여 Interceptor.attach를 시도했습니다.
var il2cpp = Module.getBaseAddress('libil2cpp.so');
var offset = 0x1451CB0;
var func = il2cpp.add(offset);
Interceptor.attach(func, {
onEnter: function(args) {
console.log('[+] args[2] : ' + args[2])
},
onLeave: function(retval) {
}
});
여기서 args[2] 값이 0x32 와 같이 주소값이 아닌 상수(?)로 나옵니다.
보통 Memory.readUtf8String(args[2]) 이나 Memory.readInt(args[2]) 등으로 읽고
Memory.writeUtf8String(args[2], 'string') 이나 Memory.writeInt(args[2], 123) 등으로 값을 덮어쓰는 것으로 알고 있습니다.
근데 앞서 작성한 코드에서 args[2] 값은 위의 함수들로 읽으려고 하면 access violation 에러가 납니다.
args[2].replace(123), args[2] = 123 등과 같은 시도를 해봤는데 마찬가지로 에러가 나는데
이 값을 변조시키려면 어떻게 해야 하나요?
고수분들의 조언 및 답변 미리 감사 드립니다.