Custom Binary Blocked by FRP Lock + Rooting
갤럭시 벽돌 해결 순정 펌웨어 업데이트 + 안드로이드 루팅
Unity로 제작된 apk 에서 Function Hooking
1편에서는 Field를 후킹하였고 이번에는 Function 후킹을 진행해볼것이다.
우선 주소값을 불러오기쉽게 변하지않는 const로 지정해주었다.
GetIntA의 값을 먼저 불러온다. args[1] 은 첫번째 인자를 뜻한다. 2개의 인자라면 [1],[2] 순서로 된다.
또한 readInt()로 읽었을때 나오는 헥스값을 toInt32()로 정수형으로 변경가능.
onEnter 로 22로 변경해주고 onLeave 로 리턴값을 변경하였더니 마지막 결과값은 retval에서 변경한 777이 되었다.
boolean의 값을 변경이지만 참,거짓이 int 0,1 로 구분되기에 int형과 매우 동일하게 진행된다.
readInt()로는 값이 0x1 이여서 읽히지 않기에 toint를 사용하여 32비트 부호있는 정수로 변환시켜준다.
값을 변경할떄는 ptr을 사용하여 값을 변경시켜줄 수 있다.
또는 onLeave는 리턴값이 나오기에 마지막 return 값 또한 변경시켜줄 수 있다.
String 값을 후킹시키는 코드이다. 1편과 동일하게 hex코드를 보면 0x14거리부터 Hello 가 나오는것을 확인할 수있다.
0x14 를 add 시켜준후 readUtf16Stirng()을 이용하여 읽으면 str값이 나온다</br> 문제는 static string값도 읽혀서 두개의 값이 나온다는거다..아마도 버튼을 눌를때 function called가 두번인거같은데..
switch 문을 사용하여 2개의 문장을 따로 읽고 변경을 할 수 있다.
배열에 담긴 int형도 1편과 거의 동일하게 진행된다.
헥스갑 확인시 0x18에 배열에 담긴 갯수 3이 나와있다.
0x20 부터 4byte씩 값이 담기기에 하나하나 확인해주고 값을 변경할 수 있다.