1. 문제확인더보기7번 문제를 보면 브루트포스(무작위대입공격)를 check07 Pin에 사용하여 알맞은 값을 확인하여 chall07로 확인하라는 뜻으로 해석된다.2. 문제풀이더보기코드를 확인해 보니 challenge_07 클래스의 check07 Pin을 확인해야 할 것 같다.setChall07 함수에서는 1000~9999 까지의 랜덤 수를 생성해서 chall07 변수에 값을 넣는 것으로 해석되고check07Pin 은 전달받은 값이 chall07이랑 같은지를 구별하여 boolean형태로 값을 반환하는 것으로 해석된다.var chall_07 = Java.use("uk.rossmarks.fridalab.challenge_07");Java.choose("uk.rossmarks.fridalab.MainActivi..
1. 문제확인더보기6번 문제를 해석해보면 올바른값과 10초뒤에 chall06()을 실행하라는 문제이다.2. 문제풀이더보기chall06 함수를 challenge_06.confirmChall06을 만족해야 completeArr에 값을 넣는다.confirmChall06을 보니 boolean 형태, i는 'chall06값' and '메서드가 시작 후 10 초 후' 두 값이 참이여야 return i 가 참이 되는거 같다. addChall06은 chall06 값에 입력받은 i를 더하고 chall06 값이 9000을 넘으면 그 값을 i로 바꾸는 거 같다.setTimeout(function() { setImmediate(function(){ Java.perform(function(){ var chall_06 = ..
1. 문제확인더보기chall05 함수에 항상 "frida"를 보내라는 문제로 확인된다.2. 문제풀이더보기코드를 봤을 때 chall05 메서드가 String 형태의 문자로 "frida"를 받으면 completeArr 배열에 1을 반환하는 거 같다.그러므로 항상 chall05에 대해서 재정의를 하면 된다.chall05가 onCreate 함수에서 사용되기 때문에 MainActivity가 생성될 때 실행되어 메모리에 잡힌다.setImmediata(function() { Java.perform(function(){ var chall_05 = Java.use("uk.rossmarks.fridalab.MainActivity"); chall_05.chall05.overload("java.lang.S..
1. 문제확인더보기문제 4번은 chall04에 frida를 보내라는 것으로 해석된다.2. 문제풀이더보기chall04 함수를 확인해 본 결과 frida라는 문자를 받았을 시 completeArr이라는 배열에 값을 넣는 방식이다.그러므로 chall04함수에 frida라는 문자를 전송하라는 뜻이다.setImmediate(function(){ Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity",{ onMatch : function(chall_04){ chall_04.chall04("frida"); }, onComplete : function(){ ..
1. 문제확인더보기3번 문제는 "Make chall03() return true"를 chall03의 반환값을 true로 만들라는 것 같다.2. 문제풀이더보기MainActivity 클래스 내의 chall03()는 boolean 형태의 메서드가 false를 반환하고 있다. 이를 true로 만들면 될 듯하다. 이를 처음에는 Java.choose를 사용하면 된다고 생각하고 했는데.. 풀리지가 않았다. 그래서 https://blog.naver.com/diary_yw/223404700340 블로그의 글을 찾아본 결과 MainActivity에서 호출을 하고 있기 때문에 메모리가 올라가있어서 Java.use를 사용하면 된것이다. setImmediate(function(){ Java.perform(function(){ ..
1. 문제확인 더보기2번 문제는 chall02를 동작하면 된다2. 문제풀이더보기그래서 Jadx를 통해서 chall02를 찾아보니 MainActivity에 있는 인스턴스화된 객체였다.이를 통해 Java.choose 명령어를 사용해서 실행시키는 문제로 확인이 되었다. setImmediate(function(){ Java.perform(function(){ var chall_01 = Java.use("uk.rossmarks.fridalab.challenge_01"); chall_01.chall01.value = 1; Java.choose("uk.rossmarks.fridalab.MainActivity",{ //클래스 onMatch : function(chall_02){ chall_02.ch..