Unity App Frida Function Hookng

Unity App Frida Function Hookng

in

Unity로 제작된 apk 에서 Function Hooking

2. Function Hooking

1편에서는 Field를 후킹하였고 이번에는 Function 후킹을 진행해볼것이다.
우선 주소값을 불러오기쉽게 변하지않는 const로 지정해주었다.

learn2_0

2.1 GetintA(int val) Hooking

GetIntA의 값을 먼저 불러온다. args[1] 은 첫번째 인자를 뜻한다. 2개의 인자라면 [1],[2] 순서로 된다.
또한 readInt()로 읽었을때 나오는 헥스값을 toInt32()로 정수형으로 변경가능.

learn2_1

onEnter 로 22로 변경해주고 onLeave 로 리턴값을 변경하였더니 마지막 결과값은 retval에서 변경한 777이 되었다.

learn2_2

2.2 GetBoolB(bool val) Hooking

boolean의 값을 변경이지만 참,거짓이 int 0,1 로 구분되기에 int형과 매우 동일하게 진행된다.
readInt()로는 값이 0x1 이여서 읽히지 않기에 toint를 사용하여 32비트 부호있는 정수로 변환시켜준다.

learn2_3

값을 변경할떄는 ptr을 사용하여 값을 변경시켜줄 수 있다.
또는 onLeave는 리턴값이 나오기에 마지막 return 값 또한 변경시켜줄 수 있다.

learn2_4

learn2_5

2.3 GetStringstr(string val) Hooking

String 값을 후킹시키는 코드이다. 1편과 동일하게 hex코드를 보면 0x14거리부터 Hello 가 나오는것을 확인할 수있다.

learn2_6

0x14 를 add 시켜준후 readUtf16Stirng()을 이용하여 읽으면 str값이 나온다</br> 문제는 static string값도 읽혀서 두개의 값이 나온다는거다..아마도 버튼을 눌를때 function called가 두번인거같은데..

learn2_7

switch 문을 사용하여 2개의 문장을 따로 읽고 변경을 할 수 있다.

learn2_8

learn2_9

2.4 GetArraytInt(int[] val) Hooking

배열에 담긴 int형도 1편과 거의 동일하게 진행된다.
헥스갑 확인시 0x18에 배열에 담긴 갯수 3이 나와있다.

learn2_10

0x20 부터 4byte씩 값이 담기기에 하나하나 확인해주고 값을 변경할 수 있다.

learn2_11

learn2_12