Frida 문법

Android 2020. 10. 24. 07:14

# 목차

 

1. Java.perform 

    현재 스레드가 가상머신에 연결되었는지 확인하고 function을 호출한다.

Java.perform(function(){
});

2. Java.use(ClassName) 

    메소드 후킹 시 사용한다.

var myClass = Java.use(com.mypackage.name.class)
//앱에서 사용하는 클래스와 연동되는 myclass를 정의한다.

var myClassInstance = myclass.$new();
//myClass를 통해 객체 인스턴스 생성 및 정의를 한다.

var result = myClassInstance.myMethod("param")
//클래스 내부에 있는 매소드에 접근해 인자 값을 넘겨주고 해당 값을 result에 받는다.

myClass.myMethod.implementation = function(param){
//.implementation : 앱에서 정의된 매소드의 구현 내용을 재작성한다.
}

3. Java.choose(className, callbacks)

    힙에서 인스턴스화 된 객체 찾기 가능

    Callbacks : onMatch, onComplete

    - onMatch : 실시간으로 인스턴스에 대해 호출

    - onComplete : function()의 모든 인스턴스가 열거될 때 호출

Java.perform(function(){
    console.log("Starting Script!");
    var main;
    Java.choose(com.mypackage.name.class, {
    onMatch : function(instance){
        main = instance;
        console.log("Instance Matched!!");
        }, 
    onComplete : function(){
        console.log('Solved Challenge!!!!');
        }        
    });
    main.[method name()];
});

 

4. Java.setImmediate(fn)

    Frida는 단말기가 느려질 때 자동으로 프로세스를 종료하는 특성이 있다.

    이러한 경우를 방지하기 위해 setImmediate()를 사용한다.

    백그라운드로 자동으로 스크립트가 재실행되어 종료되지 않는다.

setImmediate(function(){
    console.log("[+] Starting script");

    Java.perform(function(){
        myClass = Java.use("com.package.name.class.name");
        myClass.implementation = function(v){
    })
})

 

5. overload

    오버로딩(Overloading)을 구현하기 위하여 overload()를 제공한다.

    오버로딩은 하나의 클래스 내에 동일한 이름의 메소드가 매개변수 정보를 달리하여

    여러 개 존재하는 것을 말한다.

   

myClass.myMethod.overload().implementation = function(){
//입력받는 인수가 없는 메소드
}

 

참고 사이트 

cha3m.tistory.com/90

 

'Android' 카테고리의 다른 글

FridaLab_frida challenge 3 풀이  (0) 2020.10.27
FridaLab_frida challenge 2 풀이  (0) 2020.10.25
APK 서명(인증서 생성 및 서명)  (0) 2020.10.03
Toast 팝업 Smali 코드  (0) 2020.10.03
Ubuntu에 APMSetup 설치  (0) 2015.03.04
Posted by 워니후니빠
,