Frida 사용법

2020. 1. 28. 23:412020/Android App Hacking

Frida

Native apps들에 JavaScript코드를 실행시킬 수 있는 동적 분석 툴 킷이다.

Installing Frida (Window환경)

$ pip install frida-tools
https://github.com/frida/frida/releases/ - frida-server-12.8.6-android-x86.xz 설치 후 디바이스에 넣어준다.
$ adb push frida-server /data/local/tmp/
$ adb shell
접속
# chmod 755 /data/local/tmp/frida-server
# ./frida-server &
이후 데스크탑에서 cmd> frida-ps -U 로 동작중인 프리다 서버를 확인할 수 있다

Using Frida on Android

$ frida-ps -U (U: connected USB device)
$ frida-ps -Uai (-a: get all apps, i: currently installed)

Tracing Native Libraries with frida-trace

$ frida-trace -U com.android.chrome -I “open”

 

Nox구동 중 - uncrackable앱에 대한 후킹 작업

In a Device shell 

$ ./fridaserver &

Local host

 

 

[js코드 작성법]

#1 메서드

1
2
3
4
5
6
7
8
9
10
11
12
setImmediate(function() { 
    console.log("[*] Starting script");
    Java.perform(function() {
        var exitClass = Java.use("java.lang.System");
        console.log("[*] exitClass OK");
        exitClass.exit.implementation = function() {
            console.log("[*] System.exit called.");
        };
        console.log("[*] System exit handler modified");
    });    
});        
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

#2 앱에서 동작하는 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
setImmediate(function() { 
        console.log("[*] Starting script");
        Java.perform(function(){
         var aaClass = Java.use("sg.vantagepoint.a.a");
       aaClass.a.implementation = function(arg1, arg2) {
 
            var retval = this.a(arg1, arg2);
            var pass = "";
            var i = 0;
 
            for(i = 0; i < retval.length; i++) {
                pass += String.fromCharCode(retval[i]);
            }
            console.log("[*] Decrypted: " + pass);
            return retval;
        };
        console.log("[*] sg.vantagepoint.a.a.a modified");
    });
});
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

#3 인스턴트화 된 객체

1
2
3
4
5
6
7
8
9
10
setImmediate(function(){
    console.log("[*] Starting script");
    Java.perform(function(){
        Java.choose("android.view.View",{
            "onMatch":function(instance){ console.log("[*] Instance found: " + instance.toString());}
            ,
            "onComplete":function(){ console.log("[*] Finished heap search");}
        });
    });
});
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

Frida서버에서 다음 명령어를 실행시켜 앱을 후킹한다. $ frida -U -l [JavaScript.js] [PackageName]