Android - 실습


7번 문제는 chall07Pin() 메소드를 브루트 포스를 하여 chall07() 메소드로 확인하면 되는 문제이다. +) 브루트포스란 무작위 공격을 의미한다. 여기서 무작위 공격이란 전체 경우의 수를 다 대입하는 것을 뜻한다. 해당 코드를 확인해보면 인자로 전달된 var1의 값을 challenge_07클래스의 check07Pin() 메소드를 호출할 때 인자로 전달할 경우 참이면 초록불이 들어온다는 것을 확인할 수 있었다. 위 사진은 challenge_07을 정의한 부분이다. setImmediate(function(){ Java.perform(function(){ var chall_07 = Java.use("uk.rossmarks.fridalab.challenge_07"); Java.choose("uk.r..


6번 문제는 10초 뒤에 chall06()을 올바른 값으로 실행시키면 되는 문제이다. 해당 문제의 코드를 보면 challenge_06의 confirmChall06(var1)의 값이 참일 경우 해결되는 문제이고, challenge_06은 따로 선언이 되어있었다. challenge_06을 정의한 부분에 들어가보니 confirmChall06(var0)의 참 조건을 확인할 수 있었다. return var0 == chall06 && var1 > timeStart + 10000L;var0 값이 chall06의 값과 같고, 현재 시간이 timeStart+1000보다 커야 한다는 조건이 있었다. setTimeout(function(){ console.log("\n[+] 10초가 지나 프로그램을 실행합니다!"); ..


5번 문제는 "frida"는 매개변수를 항상 보내면 해결되는 문제이다. chall05()의 함수를 찾아보니 이러한 코드를 확인할 수 있었다.해당 코드를 보면 한 번이라도 전송이 안되면 0이 된다는 것을 확인할 수 있었고, 여기서 0은 초기 화면에 초록불이 아니라 빨간불이 들어온다는 것을 뜻했다. setImmediate(function() { Java.perform(function(){ var chall_05 = Java.use("uk.rossmarks.fridalab.MainActivity"); chall_05.chall05.overload("java.lang.String").implementation = function(arg) { this.chall05..


4번 문제는 chall04()의 매개변수로 frida라는 문자열을 보내면 해결되는 문제이다. 4번 문제도 2, 3번 문제와 동일하게 MainActivity.class에 들어있었다. Java.perform(function(){ var main; Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: function(instance) { main = instance; }, onComplete: function() {} }); main.chall04("frida");});4번 문제는 2번 문제와 매우 유사하다.main.chall04()로 함수를 호출하면서 동시에 인자를 firda를 주는 함수를 구성해 주었다...


프리다랩 3번은 chall03을 참으로 만들면 해결되는 문제이다. 우선 다른 문제들과 동일한 방식으로 3번 문제가 들어있는 문장을 찾아주었다. 2번 문제와 똑같은 곳에 있었다. 3번 문장을 살펴보니 현재 false를 리턴하는 것을 확인할 수 있었고, 여기서 false가 아닌 true를 리턴해주면 문제가 해결되는 거 같았다. Java.perform(function(){ var main; Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: function(instance) { main = instance; main.chall03.overload().implementation = function () { return true; }; }, onComple..


1번을 해결했으니 이제 2번을 풀 차례이다.2번 문제는 chall02() 함수를 실행시키면 되는 문제이다. 1번 풀이와 동일하게 먼저 2번 문제가 들어있는 파일을 찾아주었다. 1번 문제와는 다르게 2번은 MainActivity.class에 들어있었다.chall02의 코드를 살펴보니 private이기 때문에 바로 호출하여 사용할 수 없다. Java.perform(function(){ var main; Java.choose('uk.rossmarks.fridalab.MainActivity', { onMatch: function(instance) { main = instance; }, onComplete: function() {} }); main.chall0..


https://rossmarks.uk/blog/fridalab/ FridaLabI was struggling with a recent test using frida, knowing it could do what I want but unsure how. After lots of googling and trial and error I eventually got it working. So I decidedrossmarks.uk위 링크를 통해 프리다 랩 apk 파일을 다운로드한다. 해당 파일을 NOX에 설치하면 다음과 같이 뜨는 것을 확인할 수 있다.이번에 해결해야 될 1번 문제를 읽어보면 chall01의 값을 1로 바꾸면 문제가 해결되는 것을 알 수 있다. Bytecode Viewer을 이용해서 해당 ap..