FridaLab 05
>> chall05() 메소드에 frida 문자열을 항상 전송하기
함수를 재작성하기 위해 Java.use 사용함
check 버튼을 누를 때마다 chall05()가 실행됨
setImmediate(function() {
Java.perform(function(){
var chall_05 = Java.use("uk.rossmarks.fridalab.MainActivity");
chall_05.chall05.implementation = function(arg1){
// 기존 함수와 동일한 로직
this.chall05("frida");
console.log("\nSolved Chall05");
}
})
})
FridaLab 06
>> 올바른 값으로 10초 후 chall06() 메소드 실행하기
setTimeout()은 시간 지연 함수로 첫 번째 인자는 실행할 함수, 두 번째 인자는 실행 전 대기시간(밀리초)
setTimeout(function(){
setImmediate(function(){
Java.perform(function(){
var chall_06 = Java.use("uk.rossmarks.fridalab.challenge_06");
chall_06.addChall06.implementation = function(arg1){
Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch : function(instance){
instance.chall06(chall_06.chall06.value);
},
onComplete : function(){
console.log("\nSolved Chall06");
}
})
}
})
})
}, 10000);
FridaLab 07
>> chall07Pin() 메소드를 브루트포스해서 chall07() 메소드로 확인하기
setImmediate(function() {
Java.perform(function(){
var chall_07 = Java.use("uk.rossmarks.fridalab.challenge_07");
Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch : function(instance){
for(var i = 1000; i<=9999; i++){
var boan = String(i);
if(chall_07.check07Pin(boan)){
instance.chall07(boan);
break;
}
}
},
onComplete : function(){
console.log("\nSolved Chall07");
}
});
})
})
FridaLab 08
>> check 버튼의 텍스트를 Confirm으로 변경하기
findViewById : 리소스 id를 통해서 레이아웃에 있는 뷰 객체들 중 일치하는 뷰를 가져오는 메소드
뷰는 안드로이드 기본 화면을 구성하는 모든 기본 화면의 구성요소이다.
버튼, 테이블, id/pw 입력 칸 등등 모든 것이 뷰가 된다.
getText() 등의 메소드를 사용하기 위해 findViewByID의 반환 값을 Button 객체로 지정
=> Java.cast(반환값, Java.use로 가져온 Button 클래스)
단순히 문자열이 아닌 Confirm이라는 새로운 String 객체를 생성하는 것이기 때문에
.$new 라는 연산자로 새로운 객체를 생성함
setText(string.$new("Confirm"));
java.lang.String
java.lang.CharSequence 두 개는 같다고 보면 됨
setImmediate(function() {
Java.perform(function(){
var klass = Java.use("android.widget.Button");
Java.choose("uk.rossmarks.fridalab.MainActivity", {
onMatch : function(instance){
var checkid = instance.findViewById(0x7f07002f);
var check = Java.cast(checkid, klass);
var string = Java.use("java.lang.String");
check.setText(string.$new("Confirm"));
},
onComplete : function(){
console.log("\nSolved Chall08");
}
})
})
})
'모바일 앱 해킹' 카테고리의 다른 글
[Frida] Uncrackable Level 1 풀이 (0) | 2024.06.04 |
---|---|
FridaLab 1 ~ 4 풀이 (0) | 2024.06.03 |
Frida 기본 정리 | Frida란?, 기본 문법, CLI 활용 (2) | 2024.06.03 |
[DIVA] Input Validation Issues - Part 1 (입력값 검증 부재) | 안드로이드 앱 취약점 실습 (0) | 2024.05.23 |
[DIVA] Insecure Data Storage - Part4 (안전하지 않은 데이터 저장) | 안드로이드 앱 취약점 실습 (0) | 2024.05.23 |