본문 바로가기
  • 안아주는 다람쥐

seKUrity_Study : Andriod11

[andriod 실습] frida lab 7번, 8번 7. Bruteforce check07Pin() then confirm with chall07() chall07Pin() 메소드에 브루트 포스( 무차별 대입)를 시도하여 chall07()로 메소드가 무슨 값인지 확인하는 것으로 보인다. 그니까 쉽게 말하자면 pin값을 무차별 대입으로 때려 맞추라는 소리 먼저 소스를 분석해 보자 public void chall07(String str) { if (challenge_07.check07Pin(str)) { this.completeArr[6] = 1; } else { this.completeArr[6] = 0; } } 인자로 전달되어진 str 값을 challenge_07 클래스의 check07Pin() 메소드를 호출 할 때 인자로 전달 했을 때 참이면 정답으로 .. 2023. 4. 29.
[andriod 실습] frida lab 5번, 6번 5. Always send "frida" to chall05() 항상 frida 라는 문자열을 chall05에 보내야 하는 것으로 보이며, "항상" 이라는 말이 들어가 있는거 보면 한번만 보내는 것이 아닌 check 버튼을 누를 때마다 frida 라는 문자열을 보내야 하는것으로 파악된다. 먼저 chall05 메소드를 확인해 보면, public void chall05(String str) { if (str.equals("frida")) { this.completeArr[4] = 1; } else { this.completeArr[4] = 0; } } 위 4번과 같이 문자열을 보내는 방식은 동일하지만 else 로 한번더 확인을 해주면서 전송이 계속 되지 않으면 다시 0 값을 반환한다. 여기서 this.cha.. 2023. 4. 29.
[Andriod] 안드로이드의 부팅 순서 안드로이드 부팅 프로세스 이처럼 안드로이드 기기의 전원버튼을 누르면 위와 같은 과정들을 거쳐 기기가 켜지게 됩니다. 지금부터 안드로이드 부팅 과정을 각 단계별로 설명해보겠습니다. Step 0 : 전원 버튼 눌러 시스템 시작 전원 버튼을 누르게 되면 Boot ROM 은 미리 지정된 코드를 통해 BootLoader 를 램에 올려 실행을 시작합니다. BootLoader 는 커널을 디바이스로 불러오는 역할을 하는 프로그램인데 커널을 실행하기 위해 필요한 보드나 프로세서, 시계, 키패드, 네트워크, 메모리 등등을 셋업하는 역할을 합니다. Step 1 : 리눅스 커널 안드로이드는 리눅스 기반의 플랫폼입니다. 위의 BootLoader 를 통해 리눅스 커널이 부팅되면 일반적인 리눅스 부팅처럼 커널 초기화 작업을 거칩니.. 2023. 3. 26.
[andriod 실습] frida lab 3번, 4번 3. Make chall03() return ture chall03이란 함수를 참값으로 리턴하면 되는 내용으로 보인다. 먼저 chall03이 어떻게 짜여저 있나 보기 위해 mainactivity로 가서 찾아보았다. public boolean chall03() { return false; } 이렇게 boolean 자료형으로 chall03을 선언을 해주었다. 이것의 값을 true로 바꾸기 위해 public으로 선언되어 있으므로, frida의 Java.use를 이용해 chall03을 true로 리턴해주면 될 것으로 보인다. setImmediate(function(){ Java.perform(function() { var chall_03 = Java.use("uk.rossmarks.fridalab.MainAct.. 2023. 3. 26.
[andriod 실습] frida lab 1번 2번 먼저 녹스 - frida를 연결하는 adb 서버를 실행시켜 프리다 서버 프로그램을 adb 쉘에서 작동시켜 줘야 한다. 근데 필자의 컴퓨터에는 DOCKER가 실행중에 있어서 녹스를 설치하게 되면 wsl2와 오류를 일으켜 실행되지 않는 문제가 발생한다. 이를 고치기 위해 녹스를 삭제 한 후에 wsl을 다시 활성화 시켜도 문제가 생기는 일이 벌어저 포맷까지 했었다... 미래의 내가 그리고 이 글을 볼 누군가가 나처럼 스트레스 받지 않았으면 하는 마음 해경방법을 적어본다. powershell - 관리자 권한으로 실행 후 다음을 복붙한다. dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart di.. 2023. 3. 19.
[andriod] JNI와 NDK 1. JNI란? JNI(Java Native Interface)는 Java 코드가 C 또는 C++와 같은 다른 프로그래밍 언어로 작성된 코드와 상호 작용할 수 있도록 하는 프로그래밍 프레임워크입니다. JNI는 Java 프로그램이 일반적으로 저수준 프로그래밍 언어로 작성되고 Java와 직접 호환되지 않는 네이티브 코드 라이브러리를 호출하는 방법을 제공합니다. JNI는 Java와 네이티브 코드 간의 통신을 위한 일련의 규칙을 정의하여 작동합니다. 여기에는 두 환경 간에 데이터를 전달하는 데 사용할 수 있는 함수 집합과 네이티브 코드에서 함수 이름 지정 및 호출에 대한 규칙 집합이 포함됩니다. JNI를 사용하기 위해 Java 프로그램은 먼저 사용하려는 네이티브 코드가 포함된 네이티브 라이브러리를 로드합니다. .. 2023. 3. 14.
[andriod] 안드로이드에서 사용하는 자바와 코틀린 한 줄 정리 • 안드로이드가 무엇이고 어떻게 발전해왔는지 알아봅니다. • 코틀린을 자바와 비교하면서 코틀린을 사용하는 이유에 대해 알아봅니다. 2020년 4월 statcounter 통계에 따르면 전 세계 스마트폰 사용자 중 71%가 안드로이드를 사용하고 있습니다. 안드로이드란 용어는 많이 들어봤는데 정확히 안드로이드가 뭘까요? 우리가 말하는 안드로이드는 안드로이드 플랫폼입니다. 2005년 구글이 안드로이드 사의 운영체제, 안드로이드를 인수해 오픈소스로 공개하여 현재에 이르고 있지요. 2008년 9월, 버전 1.0을 처음 공개하였고, 버전1.5 컵케이크부터 코드네임에 디저트 이름을 붙였습니다. 이런 식의 코드네임은 2018년 9.0 버전인 파이(Pie)가 마지막이었으며, 2019년 버전 10부터는 디저트 .. 2023. 3. 14.
[Andriod] apk는 왜 디컴파일이 가능한가? 1. 컴파일 ( Compile ) 이란? 먼저 프로그램을 분해하는 디컴파일에 대해 알아보기 전에 디컴파일의 반댓말인 컴파일에 대해서 알아봅시다. 컴파일이란 큰 개념에서 보자면 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정을 말합니다. 자바나 C 같은 원시 코드에서 목적코드(목적 파일) 로 바꾸어 주는 것을 컴파일 이라고 하고, 목적 파일을 실행 파일로 만드는것이 링크 라고 볼수 있습니다. 여기서 원시 코드는 우리가 작성한 코드, 그리고 목적코드는 컴퓨터가 이해할수 있도록 번역한 코드입니다. 2. 디컴파일 (Decompile ) 이란? 앞서 컴파일에 대해 알아 보았기 때문에 이어서 디컴파일에 대해 알아봅시다. 디컴파일은, 위에서 말한 컴파일의 반대로라고 보면 됩니다. 기계어 전용으로.. 2023. 3. 14.
[Andriod] apktool 이란? $ apktool build [options] [-o ] 참고) https://guleum-zone.tistory.com/151 [Android] 디컴파일 & 리패키징(Apktool) 개요 Apktool 이란 난독화가 수행된 Android 앱의 개발 코드를 원복 수준 형태로 되돌릴 수 있게 도와주며 앱을 다시 설치하여 실행시킬 수 있게 도와주는 "리버스 엔지니어링" 도구입니다. Apktool은 W guleum-zone.tistory.com apktool을 기존에 사용해 본적 있었으나 더 자세히 알아보기 위해 위의 블로그를 인용하여 작성 1. apktool이란? apktool은 안드로이드 앱의 리소스 파일과 소스 코드를 분석하고 수정하는 데 사용되는 오픈 소스 도구입니다. 이 도구는 APK 파일(안드로이드.. 2023. 3. 13.