전에 썼었는데 지워져 버려서 다시 씀.

우선 frida와 frida-gadget은 구동하는 환경에 따라 실행 방식을 변경하는 형식임.

 

frida : frida-server를 device안에서 실행시켜 앱과 연동하는 방식 (루팅 된 환경)

frida-gadget : 별도의 frida-server를 device에서 먼저 실행시키지 않고 lib를 추가하여 앱 실행 시 frida-server가 구동하는 방식 (비 루팅 환경에서도 쓸 수 있음.)

 

1. lib파일 추가

frida-gadget 파일을 다운받아 앱 내부에 삽입.

이름을 'libfrida.so' 와 비슷한 형식으로 바꿔 줌.

 

2. manifest 파일에 permission 추가

<uses-permission android:name="android.permission.INTERNET" />

위에 작성한 코드를 manifest 파일에 추가.

 

3. 앱에서 가장 먼저 실행되는 부분에 코드 추가

우선 먼저 실행되는 smali파일을 찾는 것이 중요함.

adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'"

위의 명령어를 앱 실행과 동시에 cmd를 통해 입력하면 현재 실행 중인 뷰가 참조하는 smali파일의 위치를 알 수 있음.

 

const-string v1, "frida"
invoke-static {v1}, Ljava/lang/system;->loadLibrary(Ljava/lang/String;)V

찾은 smali파일에 가장 먼저 코드가 실행될 수 있도록 위의 코드를 추가.

 

*파일 이름과 코드 내 명칭은 통일되어야 함*

 

4. 앱 리패키징

apktool b -o [out] [decompiled folder]

위의 apktool을 이용하여 해도 괜찮지만 apk easy tool을 이용하는 방법도 괜찮음. (블로그 내 포스팅된 글 참조)

 

5. frida 실행

이전에 frida관련 글을 보고 실행시켜 줘도 되고 frida를 실행시켜 코드를 수정할 경우 아래의 명령어를 실행시켜주면 됨.

frida -U gadget  

 

끝!

+ Recent posts