1. Requirement

chall03 메소드에서 True를 반환할 것

* 현재는 0 값을 반환하고 있음

 

2. Write UP

반환값을 수정해야 하는 메소드는 MainActivity 안에 있으며,

해당 메소드는 Java.use와 Java.choose 함수 모두 가능하다.

 

2.1. Frida 스크립트로 실행

2.1.1. Java.use

//Lab3_1.js
Java.perform(function(){
    console.log("[*]Starting Script!");
    var main;
    main = Java.use('uk.rossmarks.fridalab.MainActivity');
    main.chall03.implementation = function () {
        console.log('\n[*]Solved Challenge 3!!!!');
        return true;
    }
});

 프리다 실행 명령어를 통하여 스크립스 실행 : Frida -U -l Lab3_1.js uk.rossmarks.fridalab

2.1.2. Java.choose

//Lab3.js
Java.perform(function(){
    console.log("[*]Starting Script!");
    var main;
    Java.choose('uk.rossmarks.fridalab.MainActivity', {
    onMatch : function(instance){
        main = instance;
        console.log("Instance Matched!!");
        }, 
    onComplete : function(){
        console.log('[*]Callback functions are called!!!!');
        }        
    });
    main.chall03.overload().implementation = function () {
        console.log('\n[*]Solved Challenge 3!!!!');
        return true;
    }
});

 프리다 실행 명령어를 통하여 스크립스 실행 : Frida -U -l Lab3.js uk.rossmarks.fridalab

2.2. Python 스크립트로 실행

2.2.1. Java.use

//Lab3.py
import frida
import sys

jscode = """        
Java.perform(function(){ console.log("[*]Starting Script!"); 
var main; main = Java.use('uk.rossmarks.fridalab.MainActivity'); 
main.chall03.implementation = function () { 
    console.log('[*]Solved Challenge 3!!!!'); return true;
    } 
});
"""

process = frida.get_usb_device(1).attach('uk.rossmarks.fridalab')
script = process.create_script(jscode)
script.load()
print("Please Press Check!!")
input()

 Python 실행 명령어를 통하여 스크립스 실행 : python Lab3.py

2.2.2. Java.choose

//Lab3_1.py
import frida
import sys

jscode = """        
Java.perform(function(){
    console.log("[*]Starting Script!");
    var main;
    Java.choose('uk.rossmarks.fridalab.MainActivity', {
    onMatch : function(instance){
        main = instance;
        console.log("Instance Matched!!");
        }, 
    onComplete : function(){
        console.log('[*]Callback functions are called!!!!');
        }        
    });
    
    main.chall03.overload().implementation = function () {
        console.log('[*]Solved Challenge!!!!');
        return true;
    }
});
"""

process = frida.get_usb_device(1).attach('uk.rossmarks.fridalab')
script = process.create_script(jscode)
script.load()
print("Please Press Check!!")
input()

 Python 실행 명령어를 통하여 스크립스 실행 : python Lab3_1.py

'Android' 카테고리의 다른 글

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