Learning
-
Galaxy s4 안드로이드 다운그레이드Learning/Android 2024. 12. 19. 03:09
갤럭시 s4를 얻게 되었다 s4를 얻게된 이유는 안드로이드 공부 목적도 있지만 흑심이 조금 있다.어릴 때 재밌게 했던 게임 중에 다크월드라는 게임이 있다. 해당 게임은 현재 서비스 종료를 하였고 안드로이드 버전 4 이하에서만 돌아가는 특징이 있다. 내가 얻은 갤럭시 s4는 안드로이드 버전 5.0.1이었다.다크월드를 하기 위해서는 다운그레이드가 필요하다! 그렇기에 일단 odin을 다운 받고, 초기 갤럭시 s4 버전인 안드로이드 4.2.2 펌웨어를 다운받고 설치해줬다 저런내 마음도 모르고 다운그레이드도 되지 않고 녹스가 깨져버렸다 분명 공식 펌웨어인데 왜그럴까?????한 번 이유를 찾아봤다 https://doc.samsungmobile.com/SHV-E330K/KT/doc.html Notify Update..
-
-
[Frida] Uncrackable 4 (r2pay) 풀이2Learning/Android 2024. 3. 15. 23:27
글을 못 올린 기간 동안 드림핵도 풀고 훈련도 하고 드디어 돌아왔다pthread 통해 또 다른 함수 호출를 호출하며 종료되고 있었다. Interceptor.attach(Module.findExportByName(null, 'pthread_create'), { onEnter: function(args) { count++; var ptr2 = args[2]; Interceptor.attach(ptr2, { onEnter: function(args) { var xbase = String(DebugSymbol.fromAddress(this.context.pc)); console.log("[!] pthread args : " + xbase); if(xbase.indexOf("lib..
-
[Frida] Uncrackable 4 (r2pay) 풀이Learning/Android 2024. 1. 20. 23:38
요번엔 r2pay로 돌아왔다! uncrackable 1 ~ 3단계를 풀었더니 uncrackable4가 아닌 r2pay가 나온 게 이상했는데 후에 찾아보니 r2pay v0.9는 OWASP에서 만들었고, r2pay v1.0은 R2con CTF를 위해 만들어졌다고 한다 실행을 하는 순간 그냥 바로 꺼진다 메인액티비티의 onCreate 부분을 보니 특정 클래스의 메서드 실행결과에 따라 숫자를 0으로 나눠버리는 악랄한 짓을 하는 것을 볼 수 있다 0으로 나누면 당연히 에러가 발생할테니 우선 저기부터 후킹해봤다 rb.1161 메서드이다 특정 함수들의 리턴값을 리턴해준다 if문의 뒤쪽 로직은 rb.m1154() 혹은 rb.m1149() 중 하나만 false면 false이므로 rb.m1154()만 후킹했다 RootBe..
-
[Frida] Uncrackable level 3 풀이Learning/Android 2023. 12. 29. 15:41
레벨 3이다! 이번에도 루팅을 탐지했다! 이번에도 똑같겠거니...하고 앞선 1,2레벨과 같은 코드를 사용해봤다 이번에는 아예 앱이 꺼져버리는 것을 볼 수 있다 다른 검증코드가 있나보다 뭔가.... 많다.... SIGABRT로 종료된 것을 봐서는 비정상 종료가 확실하다 메인액티비티에서 foo 라이브러리를 불러오기 때문에 라이브러리를 봐야겠다. sub_3080 함수가 정말정말 수상해보인다. /proc/self/maps 에서 frida나 xposed 문자열이 탐지되면 프로그램을 종료한다! 우린 frida를 사용하니 frida를 탐지하나보다... 음... 그럼 뭐 /proc/self/maps를 열지 않도록 시키면 된다 저기 만만해보이는 status를 대신 열게 하도록 해보자 android native hooki..
-
[Frida] Uncrackable level 2 풀이Learning/Android 2023. 12. 18. 16:30
level 2다! level 1과 마찬가지로 들어가면 루팅을 감지하고 종료시킨다. 하지만 종료과정이 level 1과 같기 때문에 같은 코드로 우회가 가능하다. 검증 방식이다. m.a(obj)를 통해 검증한다 해당 클래스이다 native 함수를 불러오기 때문에 라이브러리를 확인해야한다 메인 액티비티에서 라이브러리는 foo를 사용하는 것을 볼 수 있다. apk를 zip으로 만든 후 압축해제하면 라이브러리를 볼 수 있다. 해당 라이브러리에는 uncrackable2_CodeCheck_bar라는 함수가 있으며 Thanks for all the fish라는 문자열과 v7이 같은지 검사하는 로직이 있다. 하드코딩 되어있기 때문에 해당 문자열을 그대로 넣으면 된다. 2번도 끝
-
[Frida] Uncrackable level 1 풀이Learning/Android 2023. 12. 18. 13:57
owasp에서 만든 apk 문제이다 우선 앱을 들어가면 루팅이 탐지되어 앱이 종료된다. 메인 액티비티의 onCreate 함수를 보면 c.a(), c.b(), c.c()를 체크하여 루팅을 탐지하는 것으로 보인다. c 클래스를 보면 a 메서드에서는 su라는 파일이 있는지 체크, b메서드에서는 Build.TAGS에 test-keys라는 항목이 있는지 체크, c 메서드에서는 여러 루팅 관련 어플리케이션이 있는지 탐지한다. b메서드의 경우 루팅되어있을 경우에는 ro.build.tags=release-keys라는 값을 가지고 있고, 루팅이 되어있지 않다면 ro.build.tags=test-keys라는 값을 가지고 있다. 결국 삼중으로 되어있는 루팅 체크를 우회해야한다. 근데 정말정말 간단한 방법이 있다. 앱 종료 ..
-
[Frida] FridaLab 1~8 풀이Learning/Android 2023. 12. 16. 23:04
프리다랩을 풀어보았고 최대한 다른 풀이를 보지 않고 풀었다. 8번은 도저히 모르겠어서 풀이를 참고했다... 1번 challenge_01 클래스의 변수인 chall01의 값을 1로 바꿔야 한다. 해당 문제의 코드부분이다. 내부에서 선언된 변수를 바로 return 해주는 것을 볼 수 있다. setImmediate(function() { Java.perform(function() { console.log("[*] Script start"); let challenge_01 = Java.use("uk.rossmarks.fridalab.challenge_01"); challenge_01["getChall01Int"].implementation = function () { challenge_01.chall01.val..