안드로이드에 관하여

    pico CTF [droid 1]

    pico CTF [droid 1]

    문제 풀이 이번에도 MainActivity 에서 중요한 부분은 여기입니다. 이번에도 FlagstaffHill을 찾아가야 할것 같습니다. FlagstaffHill에서 R.string.password와 비교 하는 것을 볼 수 있습니다. 가봅시다. 흠.... 우리가 원하는 정보가 저걸까요? 그래서 전 저 숫자를 쳐봤더니 당연히 아닙니다. 그래서 검색을 해봤더니 어플에서 이용하는 모든 리소스들은 res/values폴더에 xml 형식으로 저장이 된다고 합니다. 위를 보면 유추할수도 있겠지만 우리가 찾는 password는 string일것이라고 생각됩니다. 하지만 더 정확히 알기 위해 모든 리소스가 정리되어있는 res/values/public.xml 을 확인 하면 됩니다. 더보기 *public.xml이 하는일 (🚨자..

    pico CTF [droid 0]

    pico CTF [droid 0]

    문제 풀이 화질이 좋진않지만 mainactivity를 볼때 가장 중요한 부분은 이 부분이다. 여기서 얻을 수 있는 정보는 hellojni라는 라이브러리를 사용한다는 점과 FlagstaffHill을 사용해서 Flag를 출력한다는 점이다. FlagstaffHill을 확인해보겠습니다. 글을 쓰면 paprika라는 함수를 통해 나온 리턴 값과 앞에 PICO를 붙혀서 로그가 찍히고 그후 Not Today를 리턴 해준다는 것을 볼 수 있습니다. 여기서 바로 확인 할 수 있을것 같았습니다. adb에 접속해서 logcat | grep PICO 를 하면 바로 Flag를 알 수 있습니다. *Logcat은 기기에서 오류가 발생할 때의 스택 트레이스와 앱에서 아까와 같이 Log 클래스로 작성한 메시지를 비롯하여 시스템 메시지..

    what is Smali code?

    Smali code 는 무엇인가요 Smali는 dalvik에서 사용하는 dex 형식의 어셈블러입니다. Dex 파일은 기계어로 되어있으니까 이걸 읽기 쉽게 해주는 것이 Smali code 입니다. 가끔 CTF 를 보면 dex 파일만 주는 경우가 있는데 smali code로 변경 해서 풀거나 pallergabor.uw.hu/androidblog/dalvik_opcodes.html Dalvik opcodes 4B aput vx,vy,vz Puts the integer value in vx into an element of an integer array. The element is indexed by vz, the array object is referenced by vy. 4B00 0305 - aput v0,..

    Dex 파일 구조는 어떻게 되어 있는가

    Dex 파일 구조는 어떻게 되어 있는가

    일단 Dex 파일이란 무엇일까에 대해 알아 봅시다. 1.Dex 란? Dex에는 Android 런타임에서 궁극적으로 실행되는 코드가 포함 되어 있습니다. 즉 기계어로 되어있습니다. 이것을 디컴파일 하면 smail 코드가 되는 것입니다. 2. Dex 파일의 구조 어느 파일이나 비슷하겠지만 dex 파일은 헤더와 섹션으로 나뉩니다. (이러고 보면 ole 파일 구조와도 비슷해보이네) 2-1) File Magic Number 위 파일이 무슨 파일인지 알려주는 부분이다. 처음에 dex라는 텍스트와 버전 번호가 있습니다. 2-2) Checksum - uint 체크섬은 이 파일이 변조 되었는지 확인하는 부분입니다. 파일의 바이트 값이 손상 된 경우 체크섬 값이 맞지 않아 Android Framework에서 Apk 설치를..

    Android framework  Study[2 - 핸드폰을 부팅 하자]

    Android framework Study[2 - 핸드폰을 부팅 하자]

    핸드폰을 할 때에는 먼저 핸드폰을 켜야한다. 핸드폰을 안키면 뭔가를 할 수가 없으니까 0.

    Android framework  Study[1]

    Android framework Study[1]

    안드로이드에 대해 자세히 공부 하기 직전 어떤것을 공부 해야하는지에 대한 지도 입니다. 파란색 부분은 JAVA로 구성 되어 있고 초록 부분은 C/C++로 구성 되어 있다고 합니다. 맨위부터 차례대로 공부해 보겠습니다. application Layer 우리가 흔히 사용하는 게임이나 카카오톡 같은 앱스토어에서 다운 받는 어플 들과 핸드폰을 사면 기본으로 깔려있는 기본 어플리케이션들은 어플리케이션 영역에 속한다. 여기서 우리가 깔지 않았는데 깔려있는(전화 ,메시지,카메라) 앱들은 시스템 우선권을 가지고 있다. 읭? 왜요?!?!?! 라고 물을 수도 있겠는데 만약 우리가 메모리가 부족하다고 생각 해보자 그럴때 우리 전화 앱은 꺼지면 안되기 때문에 우선 순위가 가장 높게 설정 되어 있는 것이다. Applicatio..

    안드로이드 리버스 엔지니어링 공부 체크 리스트

    0. 안드로이드 환경 구성 - adb,에뮬레이터 설치 등 1. 안드로이드 앱 구조 ✔ 1.1 안드로이드 apk 구성 ✔ 1.2 DEX 구조 ✔ 1.21. smail code ✔ 1.3 Dex 정적 분석 ✔ 1.3.1 jadx ✔ 1.32 jeb2 ✔ 1.4 DEX 동적 분석✔ 1.4.1 ida✔ 1.5 smail code 변조✔ 1.6 DEX로만 구성된 크랙미 풀어보기 (언크랙과 pico로 완료) ✔ 2. DEX 보호기법✔ 2.1 DEX 난독화 ✔ 2.2 DEX 암호화 ✔ 3. ARM? ✔ 3.1 ARM 아키텍처가 무엇인가?✔ 3.2 레지스터 3.3 스택 3.4 vfp,인터럽트 모드 7가지 등 4. 리눅스 ELF 구조 4.1 안드로이드에서 SO 역할 4.2 ELF, 프로그램, 섹션 헤더 4.3 중요한 섹..

    adb 가 외안댄데?(adb unauthorized , device offline)

    adb 가 외안댄데?(adb unauthorized , device offline)

    안드로이드를 처음 접해서 이것 저것 해보다가 adb를 이용해서 device에 접속을 하려고 하는데 adb kill-server 하고 adb devices 를 해도 자꾸 이상하게 접속이 안되는 분이 접니다. 그래서 해결 방법을 적어 놓으려고 합니다. 1. adb unauthorized 난 분명히 디바이스를 접속시켰는데 왜 자꾸 unauthorized가 뜨지 생각이 들었습니다. 개발자 모드에서 usb디버깅을 켰는데도 왜 안되는거야!! 왜 자꾸 이렇게만 뜨냐고!! 의 해결 방법입니다. 침착하게 연결된 device를 켜서 허용을 해주자. 그럼 해결되는 문제였다. 2. adb devices offline 1을 해결 했음에도 자꾸 offline 이라고 뜨네....이게 뭐야. device는 분명히 켰는데 왜 이래 할..