Frida에서 Float 읽기 관련해서 질문드립니다!

홈 > 안드로이드 > 안드로이드
안드로이드

Frida에서 Float 읽기 관련해서 질문드립니다!

3 hunjison 5 11630 0

안녕하세요! 요새 frida 후킹에 빠져 재밌게 하고 있는 뉴비입니다!


다름이 아니라 인자와 반환값에서 Float가 나왔을 때 어떻게 메모리에 저장되고, 읽어와야 하는지 잘 모르겠어서 질문을 드립니다!!


다음은 제가 작성한 코드와 그 결과입니다.


인자값 또는 반환값이 int인 경우에는 후킹도 잘 되던데.. Float인 경우에는 잘 모르겠네요ㅠㅠ

반환값이 Float인 경우에 메모리에 어떻게 저장되고, 어떻게 값을 읽어와야 하는지 아시는 분 있으면 조언을 부탁드립니다 ㅎㅎ

감사합니다.

5 Comments
M LIN 2020.04.23 21:48  
Interceptor.replace 를 사용해서 'float' 형으로 지정해주면 됩니다.
3 쥬스 2020.06.01 09:50  
글주제로 같은 고민을 했었는데, 정말 되네요..? 이유가 뭔지알 수 있을까요 ..?!
M LIN 2020.06.15 22:53  
처리하는 어셈블리어가 다를거에요. ARM 같은 경우에는 기존 "R0" 레지스터가 아닌 "S0" 같은 레지스터로 부동소수점을 처리합니다.
ARM NEON, VFP 관련 링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205ik/CJAGBDFI.html

그렇기 떄문에 형을 정확히 명시하면 해당 타입에 맞게 처리가 가능한거죠.

그래서 코드 가상화를 지원해주는 솔루션들을 보면 ARM 부동소수점 처리는 지원하기 힘들다고 하는 경우도 있습니다. 반면 x86은 지원해줍니다.
3 쥬스 2020.06.16 01:01  
상세한 답변 감사합니다...ㄷㄷㄷㄷㄷ
1 Akii 2020.07.17 22:47  
감사합니다.