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에서 확인 가능하다
'Technical Docs > Android' 카테고리의 다른 글
Smali 수정으로 logcat 남기기 (0) | 2022.06.02 |
---|---|
Manifest 구조를 알아보자 (0) | 2022.01.10 |
네임 맹글링 (Name Mangling or Name Decoration) (0) | 2021.12.30 |
Smali 코드로 Toast 생성하기 (0) | 2021.12.17 |
NDK Jstring to string (char *) 문자열 변경 (0) | 2021.12.08 |