Season 1/워게임

FridaLab Write Up - Download & Install

작성자 - LRTK

FridaLab 공식 홈페이지

사진에 FridaLab 공식 홈페이지 링크를 삽입하였으니, 사진 클릭을 하면 공식 사이트로 이동할 수 있다.

해당 공식 사이트에서 Download를 클릭 시 FridaLab.apk 파일을 다운로드 할 수 있다.

 

FridaLab.apk 설치

adb install 명령어를 통하여 FridaLab.apk를 설치하였다.

 

FridaLab

FridaLab을 실행한다면, 별 반응이 없을 것이다.

FridaLab의 기능은 화면 속 텍스트로 작성한 1~8번의 기능들이 우회가 되었는지 확인하는 것 뿐이다.

 

CHECK 박스를 클릭한다면, 우회가 되지 않은 기능들이 빨간색 글자로 변경이 된다.

Frida를 이용하여 각 기능들을 후킹을 통해 우회한다면, 초록색 글자로 변경이 된다.

 

AndroidManifest.xml

jadx를 통해 FridaLab.apk의 AndroidManifest.xml와 MainActivity를 확인하였다.

 

AndroidManifest.xml에서 별다른 특별한 부분이 없어서 넘어갔다.

MainActivity에선 밑과 같이 코드 분석을 하였다.

 

public class MainActivity extends AppCompatActivity { public int[] completeArr = {0, 0, 0, 0, 0, 0, 0, 0}; ... ... ... public void changeColors() { TextView textView = (TextView) findViewById(R.id.chall01txt); TextView textView2 = (TextView) findViewById(R.id.chall02txt); TextView textView3 = (TextView) findViewById(R.id.chall03txt); TextView textView4 = (TextView) findViewById(R.id.chall04txt); TextView textView5 = (TextView) findViewById(R.id.chall05txt); TextView textView6 = (TextView) findViewById(R.id.chall06txt); TextView textView7 = (TextView) findViewById(R.id.chall07txt); TextView textView8 = (TextView) findViewById(R.id.chall08txt); if (this.completeArr[0] == 1) { textView.setTextColor(-16711936); } else { textView.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[1] == 1) { textView2.setTextColor(-16711936); } else { textView2.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[2] == 1) { textView3.setTextColor(-16711936); } else { textView3.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[3] == 1) { textView4.setTextColor(-16711936); } else { textView4.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[4] == 1) { textView5.setTextColor(-16711936); } else { textView5.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[5] == 1) { textView6.setTextColor(-16711936); } else { textView6.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[6] == 1) { textView7.setTextColor(-16711936); } else { textView7.setTextColor(SupportMenu.CATEGORY_MASK); } if (this.completeArr[7] == 1) { textView8.setTextColor(-16711936); } else { textView8.setTextColor(SupportMenu.CATEGORY_MASK); } } }
 

이와 같이 "completeArr"이라는 Array 변수에 저장된 각 인덱스의 값들이 각 기능의 우회 여부를 나타나는 값으로 표현이 되는 것으로 판단된다. 각 인덱스의 값들이 1인 경우에만, 초록색 글자로 출력된다.

 

이제 각 기능의 코드를 확인하여 어떻게 우회하면 completeArr의 값이 1로 변경되는지 확인하였다.

 

이 글이 도움이 되었다면, 응원의 댓글 부탁드립니다.