frida libil2cpp.so 질문 있습니다!

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

frida libil2cpp.so 질문 있습니다!

9 koooo 2 5091
안녕하세요. 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 등과 같은 시도를 해봤는데 마찬가지로 에러가 나는데

이 값을 변조시키려면 어떻게 해야 하나요?

고수분들의 조언 및 답변 미리 감사 드립니다.
2 Comments
15 g00dluck 2020.06.04 11:06  
args[2]값이 포인터일 경우 본문처럼 사용이 불가능합니다.
포인터일 경우 아래 처럼 사용 하시면 됩니다
예)
 console.log('[+] args[2] : ' + args[2].toInt32())
 args[2] = ptr(0xffff)
9 koooo 2020.06.08 10:23  
바빠서 이제서야 확인했네요 ㅠㅠ 말씀주신대로 한 번 진행해보겠습니다 감사합니다 ㅎㅎ