분류 전체보기

    Android Hackers Handbook 1장

    * 주의 : 나는 영어를 잘 하지 못한다. 이걸 번역한것은 뇌에서 고등학교 수준의 영어로 번역해낸 것이다. 더욱 자세한 내용을 볼려면 원문을 읽어라 Looking at the Ecosystem Understanding Android’s Roots ~ Version History Android는 다양한 뜻을 포함 한다. 모바일 운영 체제인 Android를 만든 회사와 Android의 버전의 이름에 대한 역사이야기가 초반에 나온다. 읽어 보면 재미는 있다. Examining the Device Pool 스마트 시계, 텔레비전 액세서리, 게임 콘솔, 오븐, 인공위성, 그리고 새로운 구글 글라스와 같은 장치들은 안드로이드에 의해 작동된다. 자동차 업계는 안드로이드를 차량의 인포테인먼트 플랫폼으로 사용하기 시작했..

    APK 보호기법

    안드로이드 앱은 자바로 이루어 져서 쉽게 디컴파일이 되는데 그걸 막기 위해 보안 솔루션을 사용합니다. 디컴파일을 하여 나온 코드를 보기 힘들게 만들기(난독화,암호화) 1. 이름 난독화 필드 , 메소드 , 클래스의 이름을 의미 없는 이름으로 변경합니다. ex) setText -> ab() 2. API 은닉 Java Reflection를 이용합니다. *Java Reflection : 리플렉션이란 객체를 통해 클래스의 정보를 분석해 내는 프로그램 기법을 말합니다. Class a = Class.forName("AAClass") 3. 흐름제어 클래스 속의 메소드 등의 영역을 바꾸거나, 의미 없는 더미 코드를 삽입하여 코드 흐름 파악을 어렵게 한다 //흐름제어 전 a = 0; while(a

    PicoCTF [droids 3]

    PicoCTF [droids 3]

    문제 해결 이번문제를 봤을때 든 풀이 방법은 "코드 패치 , 후킹" 두가지 였습니다. 코드 패치를 해봤는데 코드 패치후 서명까지 했는데도 제가 뭐가 실수가 있었는지 설치가 안되었습니다. 다음에 공부하고 다시 블로그에 쓰던가 해야 할것 같습니다. 그래서 이번에는 후킹으로 진행 하겠습니다. import frida,sys def on_messaege(message,data): print("{} -> {}".format(message,data)) #제일 중요한 후킹 코드 hook_code = """ Java.perform(function() { console.log("[*] HOOK START"); var Target = Java.use("com.hellocmu.picoctf.FlagstaffHill"); Ta..

    PicoCTF [droids 2]

    PicoCTF [droids 2]

    문제 해결 이번에는 저번과 다른 뭔가 특별히 필요한것이 없는 pico vaultdoor 같은 문제이다. a = ["weatherwax", "ogg", "garlick", "nitt", "aching", "dismass"] second = 0 third = 1 four = 2 five = 5 print(a[five],".",a[third],".",a[second],".",a[(five+second)-third],".",a[3],".",a[four]) 이러면 "dismass.ogg.weatherwax.aching.nitt.garlick" 가 나옵니다. 이걸 입력하면

    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 설치를..