• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

질문

21.12.08 16:44 작성 조회수 179

0

설명 중에 28분쯤을 보면 1~2는 그냥 챌린지 성공이라고 뜨고 3은 버튼을 눌러야 성공이라고 뜨는데 이 둘의 차이는 무엇인가요??

답변 1

답변을 작성해보세요.

1

김태영님의 프로필

김태영

2021.12.10

안녕하세요. 보안프로젝트 김태영입니다.

 

콘솔 출력에 "Solved Challenge 01"과 "Solved Challenge 02"는 버튼을 클릭하지 않아도 출력되는데, "Solved Challenge 03"은 버튼을 클릭해야만 출력되는 이유에 대해서 설명드리겠습니다.

 

콘솔 출력과 관련된 부분은 저희가 작성한 JS 파일이 중요합니다.

먼저, "Solved Challenge 01"과 "Solved Challenge 02"는 JS 파일을 불러오면 아무런 조건(implementation)없이 출력되도록 작성되어 있습니다.

"Solved Challenge 01"은 JS 파일을 불러오면 바로 실행되도록 콘솔로그가 구성되어 있고,

const challenge_01 = Java.use('uk.rossmarks.fridalab.challenge_01');
challenge_01.chall01.value = 1;
console.log("\nSolved Challenge 01");

"Solved Challenge 02"는 choose를 사용하여 인스턴스를 불러와 실행해주고 onComplete 작업으로 콘솔을 출력해줍니다.

Java.choose('uk.rossmarks.fridalab.MainActivity', {
	onMatch: function(chall_02) {
		chall_02.chall02();
	},
	onComplete: function() {
		console.log("Solved Challenge 02");
	}
})

 

그런데, "Solved Challenge 03" 출력 부분은 조금 다릅니다. 해당 내용을 출력해주기 위해선 재작성된 chall03 메서드를 "호출"해야지만 콘솔 로그가 출력되고 return이 true로 됩니다. 그렇기 때문에 "Solved Challenge 03" 출력은 버튼을 클릭해야지만 콘솔 로그가 출력됩니다.

const chall_03 = Java.use('uk.rossmarks.fridalab.MainActivity');
chall_03.chall03.implementation = function () {
	console.log("Solved Challenge 03");
	return true;
}

감사합니다.

ysb502님의 프로필

ysb502

질문자

2021.12.14

이해되었습니다 감사합니다.