fridaLab 6번 문제 풀이

심야·2025년 4월 10일
0

모의해킹

목록 보기
56/57
setImmediate(() => {
    Java.perform(function() {
        function hookInstance() {
            var challenge06 = Java.use("uk.rossmarks.fridalab.challenge_06");
            challenge06.addChall06.implementation = function() {
                challenge06.chall06.value = 1;
                console.log("chall06 value : " + challenge06.chall06.value);
            }
            
            // addChall06 메서드를 재정의 해 chall06 변수 값을 변경하거나 처음부터 chall06 변수 값을 변경하면 됨 chall06 변수는 
            // 클래스 변수라 클래스에서 직접 접근이 가능함
            // challenge06.chall06.value = 1;
            // console.log("chall06 value : " + challenge06.chall06.value);

            Java.choose("uk.rossmarks.fridalab.MainActivity", {
                onMatch : function(instance) {
                    console.log(instance);    
                    instance.chall06(1); // chall06 변수 값을 1로 변조했기 때문에 1 삽입하면 문제 해결
                },
                onComplete : function() {
                    console.log("Completed");
                }
            });
        }
        setInterval(hookInstance, 1000); // 1초마다 실행 
    });
});

challenge06.chall06.value 변수는 Static 변수이기 때문에 인스턴스에 접근하지 않아도 바로 접근이 가능함

그래서 challenge06.chall06.value 값을 변조하지 않고 chall06 메서드에 그대로 주입해서도 문제를 해결할 수 있음

setImmediate(() => {
    Java.perform(function() {
        function hookInstance() {
            var challenge06 = Java.use("uk.rossmarks.fridalab.challenge_06");
            console.log("challenge06.chall06.value : " + challenge06.chall06.value);

            Java.choose("uk.rossmarks.fridalab.MainActivity", {
                onMatch : function(instance) {
                    console.log(instance);    
                    
                    let correct = challenge06.chall06.value;
                    console.log("correct value injection : " + correct);
                    instance.chall06(correct);
                },
                onComplete : function() {
                    console.log("Completed");
                }
            });
        }
        setInterval(hookInstance, 1000); // 1초마다 실행 
    });
});
profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글