Technical Docs/Android
Android Native C++ string Frida로 출력
뚜봄뚜봄
2021. 12. 17. 10:17
Frida 를 사용하다 보면 심심치 않게 Native Method를 후킹해야할 때가 많다.
그러다 보면 각 argu에 따라서 캐스팅을 해줘야 정상적으로 출력이 가능하다.
그 중에 한가지 C++ 에서 사용하는 Std::String 자료형을 Frida에서 문자열로 출력하고 싶을 때
아래의 방법을 사용한다.
function readStdString (str) {
const isTiny = (str.readU8() & 1) === 0;
if (isTiny) {
return str.add(1).readUtf8String();
}
return str.add(2 * Process.pointerSize).readPointer().readUtf8String();
}
readU8 &1 을 통해 해당 문자열이 long String 인지 확인한다.
이후에 문자열 크기에 따라 읽을 크기를 잡아주고 Utf8String으로 읽어주면 Frida에서 확인 가능하다