java Reflection hook code

홈 > 안드로이드 > 안드로이드
안드로이드

java Reflection hook code

M LIN 13 10198 3

자바 리플렉션 후킹 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Java.use("java.lang.Class").forName.overload('java.lang.String').implementation = function (param0) {
    console.log("forName hook : " + param0);
    return this.forName(param0);
};
 
Java.use("java.lang.Class").getMethod.overload('java.lang.String''[Ljava.lang.Class;').implementation = function (param0, param1) {
    console.log("getMethod hook : " + param0);
    return this.getMethod(param0, param1);
};
 
var jlrmethod = Java.use("java.lang.reflect.Method")
jlrmethod.invoke.implementation = function(object, parameters){
    var retvalue = this.invoke(object, parameters)
 
    var type = Object.prototype.toString.call(parameters)
    if(type == '[object Array]'){
        var arrayLength = parameters.length;
        // console.log(arrayLength)
        for (var i = 0; i < arrayLength; i++) {
            var parameter = parameters[i]
            var paramstring = String(parameter)
            if(paramstring.startsWith("[Ljava.lang.String;@")){
                console.log("------------")
                console.log("string array")
                console.log(type + JSON.stringify(parameter))
                
                var result = parameter
                console.log(type + result)
                console.log("------------")
            }
            else{
                console.log(type + parameter)
            }
        }
    }
    else{
        console.log(type + parameters)
    }
    console.log("Method.invoke(object, parameters): '" + this + "' = '" + object + "', '" + parameters + "' = '" + retvalue + "'")
    return retvalue
}
cs

13 Comments
3 eiruty 2020.02.19 17:38  
질문있습니다~
리플렉션 테스트 해보니 "java.lang.reflect.Method" 클래스만 후킹이 안됩니다.
스폰하면 앱 크래시나고 어태치하면 프리다가 죽는 상황... 아래 링크랑 똑같은 로그가 찍힙니다.
https://github.com/frida/frida-java-bridge/issues/91
스크립트는 본문꺼 썻습니당..

Congratulation! You win the 3 축하드립니다! 당첨되셨어요~!

M LIN 2020.02.20 11:14  
기기가 어떻게 되시나요? (에뮬 or 단말기기종)
3 eiruty 2020.02.20 13:48  
Nox(x86), LDPlayer, 삼성갤럭시 s6(arm64)에서 테스트 했습니다.
스폰에서는 class not found exception, 어태치에서는 access violation 에러가 납니다 ㅜ
2 치터치타 2020.04.01 11:17  
정리 감사합니다
7 래바리 2020.04.03 18:25  
정리 감사합니다.
3 Linjjang 2020.04.15 22:39  
감사합니다
1 h2ro 2020.05.16 19:04  
감사합니다 ㅎ
3 Linjjang 2020.05.19 08:50  
감사합니다
2 공부짱짱 2020.05.23 22:01  
정보 감사합니다 열심히배울게요!!
7 임중호 2020.05.24 01:25  
좋은정보입니다
1 2Doll 2020.07.19 15:31  
감사합니다.
1 unclejo 2020.11.27 00:17  
감사합니다.
1 lucider 2021.03.04 14:09  
정보 감사합니다