본문 바로가기

모바일 앱 해킹

FridaLab 1 ~ 4 풀이

FridaLab 01

변수와 메서드 모두 static이므로 Java.use를 사용해서 후킹

setImmediate(function() {
	Java.perform(function(){
		// Challenge 01 
		var chall_01 = Java.use("uk.rossmarks.fridalab.challenge_01");
		chall_01.chall01.value = 1;
		console.log("Sloved Chall01");
	})
})

 

 

 

 

FridaLab 02

static 메소드가 아니므로 인스턴스를 생성한 후에 호출 Java.choose를 사용해서 후킹

setImmediate(function() {
	Java.perform(function(){
		// Challenge 02
		Java.choose("uk.rossmarks.fridalab.MainActivity", {
			onMatch : function(chall_02){
				chall_02.chall02();
			},
			onComplete : function(){
				console.log("\nSolved Chall02");
			}
		});
	})
})

 

 

 

 

FridaLab 03

함수를 재정의(implementation)하기 위해 Java.use를 사용함

setImmediate(function() {
	Java.perform(function(){
		// Challenge 03
			// 함수를 재정의(implementation)하기 위해 Java.use 사용
			var chall_03 = Java.use("uk.rossmarks.fridalab.MainActivity");
			console.log("\nSolved Chall03!!");
			chall_03.chall03.implementation = function() {
				return true;
			}
	})
})

 

 

 

 

FridaLab 04

static 메소드가 아니니까 Java.choose 사용

setImmediate(function() {
	Java.perform(function(){
		// Challenge 04
		Java.choose("uk.rossmarks.fridalab.MainActivity",{
			onMatch : function(chall_04){
				chall_04.chall04("frida");
			},
			onComplete : function(){
				console.log("\nSolved Chall04");
			}
		})
	})
})