FridaLab 6번 풀이 FridaLab 6번 문제는 "Run chall06() after 10 seconds with correct value" 이다. chall06() 을 10초뒤에 실행시키는 함수이다. 먼저 코드부터 살펴보면 더보기 1. setTimeout(function(){}, 10000);: 10초 뒤에 함수를 실행한다. 2. var chall06 = Java.use("uk.rossmarks.fridalab.challenge_06");: "uk.rossmarks.fridalab.challenge_06" 클래스를 가져와 chall06 변수에 할당한다. 3. chall06.addChall06.overload("int").implementation = function(){};: "addChall0..
Fridalab 5번 풀이 5번문제는 4번 문제와 상당히 유사하다. 4번문제는 if문 하나만 있었지만, 5번 문제에는 else문도 추가됐다. 따라서 인스턴스 값을 고정시켰다. java.use 함수를 통해 "uk/rossmarks/fridalab" 내부에 있는 "MainActivity.class" 파일을 가져오고 "chall05.chal05.overload('java.lang.string'.implemetation" 코드를 통해 MainActivity.class 파일 안에 있는 chall05() 함수를 상속한다. 다음으로 "function(str)" 코드를 통해 chall05() 함수가 호출될 때마다 "frida"를 인자로 전달한다. success
Fridalab 4번 풀이 4번 문제는 chall04() 함수에게 "frida" 라는 값을 전송하는것이다. 먼저 /uk/rossmarks/fridalab/MainActivity.class 파일안에 있는 chall04() 함수를 보면 만약 변수 var1 의 값이 "frida" 라면 completeArr 배열의 3번 째 값을 1로 설정한다. 라는 뜻이다. 이때 completeArr 배열은 다음과 같은데, 위의 코드를 해석하면, 만약 completeArr 배열의 3번 째 값이 '1'이라면, 텍스트의 색상을 "녹색"으로 바꾸고, 아니면 "빨간색"으로 바꾼다. 즉, 값이 '1'이라면 '성공' 아니면 '실패'다. java.choose 함수를 통해 "uk/rossmarks/fridalab" 경로에 있는 MainAct..
Fridalab 3번 풀이 3번은 chall03() 이 "true"를 반환하게 해야한다. 현재 "/uk/rossmarks/fridalab/MainActivity.class 파일안에 있는 chall03() 함수를 보면 "return false" 즉, "false" 값을 반환하게 돼있다. 따라서 java.use 함수를 통해 MainActivity 파일에 접근해주고 "implementation" 을 통해 "true" 값을 상속받는다. SUCCESS
FridaLab 2번 풀이 2번은 Challenge 2번을 실행시키면 되는 것 같았다. 2번은 따로 class 파일이 안보였는데, MainActivity.class 파일안에 2번 Challenge 관련 내용이 있었다. 따라서 js 코드를 통해 2번을 실행시킬 수 있었다.
FridaLab 1번 풀이 1번은 chall01 의 값을 1로 바꾸면 된다. Bytecode-Viewer을 통해 challenge 1의 코드를 보면 아래와 같다. 현재 getChall01Int 함수를 통해 chall01의 값을 리턴하고 있어, 아래와 같은 JS 코드를 통해 1이 return 되도록 설정해주었다.