SalRyeoJuSeYo
close
프로필 로고

SalRyeoJuSeYo

    • 카테고리 (95)
      • Web Application (6)
        • 필기 (5)
        • 실습 (1)
      • Information Security (8)
        • 사이버범죄심리학 (1)
        • 정보보안개론 (2)
        • 암호학 (3)
      • Android (12)
        • 필기 (6)
        • 실습 (6)
      • System & Reversing (17)
        • 필기 (13)
        • 실습 (4)
      • IoT(사물인터넷) (2)
        • 필기 (2)
        • 실습 (0)
      • Digital Forensic (43)
        • 필기 (9)
        • Anti Forensic (1)
        • Dreamhack (9)
        • CTF (16)
        • 기타정보 (3)
        • 디지털포렌식전문가2급 (3)
      • Programming (2)
        • 다인 프로젝트 (2)
        • 개인 프로젝트 (0)
      • Computer Engineering (1)
        • 자료구조 (1)
  • mode_edit_outline글작성
  • settings환경설정
  • 홈
  • 태그
  • 방명록
728x90
[Frida-Lab#6] 코드 분석 및 풀이

[Frida-Lab#6] 코드 분석 및 풀이

1. MainActivity에서 chall06 함수를 확인. public void chall06(int arg3){ if(challenge_06.confirmChall06.arg3)) { this.completeArr[5] = 1; } } challenge_06 클래스에서 confirmchall06을 호출한 뒤에 if 결과가 참이면 completeArrp[5] 6번 문제가 풀린다. 2. Java.use vs Java.choose? fridalab 문제를 풀 때 가장 고민하게 되는 API 호출 함수 정하기. Mainactivity에 있는 함수를 후킹하면 choose 독립된 클래스라면 use를 사용하는데, chall06은 mainactivity에도 있고 별도로challenge_06에도 있어서 둘 다 써줬다...

  • format_list_bulleted Android/실습
  • · 2023. 4. 30.
  • textsms
[Frida-Lab#5] 코드 분석 및 풀이

[Frida-Lab#5] 코드 분석 및 풀이

5번째 문제이다. 딱 봐도 chall04와 비슷하게 생긴 코드 블럭이라 일단은 chall04 문제를 해결할 때 썼던 것과 비슷하게 작성해보았다. 단순히 chall04에 frida를 넣어 실행시키면 되었던 chall04의 문제 해결 스크립트 코드이다. chall04와 chall05의 차이점은 if문을 통해 분기문이 나뉜다는 것. 그래서 chall03을 풀었을 때와 마찬가지로 implementation을 통해 코드를 직접 수정해서 재호출하는 스크립트로 작성했다. 이렇게 적고 실행시킨 결과. 뭐가 문제지 싶던 와중에 Java.use와 Java.choose의 차이에 대해 다시 한 번 찾아보았다. 내가 지금까지 알고 있던 건 Java.use는 정적 함수에 Java.choose는 동적 함수에 쓰는 것이다. 라는 사..

  • format_list_bulleted Android/실습
  • · 2023. 3. 31.
  • textsms
[Frida-Lab#4] 코드 분석 및 풀이

[Frida-Lab#4] 코드 분석 및 풀이

-> chall04 함수의 인자 var1가 string이면 성공 -> 그러면 일단 chall04 함수를 호출하고 인자에 frida를 넣으면 된다. setImmediate(function() { Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity", { onMatch:function(cs){ cs.chall04("frida") }, onComplete:function(){ console.log("OK"); } }); }); }); -> chall02의 코드를 가져와서 약간의 변형만 주면 성공이다.

  • format_list_bulleted Android/실습
  • · 2023. 3. 22.
  • textsms
[Frida-Lab#3] 코드 분석 및 풀이

[Frida-Lab#3] 코드 분석 및 풀이

3번 역시 2번과 마찬가지로 MainActivity에 위치. 딱 봐도 false를 true로 바꿔주면 되는 것 같다. setImmediate(function() { Java.perform(function() { Java.choose("uk.rossmarks.fridalab.MainActivity", { onMatch:function(cs){ cs.implementation = function(){ return true; }; }, onComplete:function(){ console.log("OK"); } }); }); }); 2번 풀 때 사용한 코드를 변형하여 작성했다. -> 오류 반환 setImmediate(function() { Java.perform(function() { Java.choose(..

  • format_list_bulleted Android/실습
  • · 2023. 3. 22.
  • textsms
[Frida-lab #2] 코드 분석 및 풀이

[Frida-lab #2] 코드 분석 및 풀이

2번째 문제부터는 챗 지피티의 도움 없이 함수를 익혀 코드를 작성하기 위해 다음과 같은 사이트를 참고하였다. https://ch4njun.tistory.com/160, https://velog.io/@1-3-1/Frida-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC chall02()의 위치는 메인 액티비티. 액티비티에 위치에 있어 실행은 되어 있다고 생각했으나 선언만 되어있는 것을 확인. Java.choose(className, callbacks) Java Heap을 스캔해 클래스의 라이브 인스턴스를 열거한다. -> callbacks에 onMatch나 onComplet을 지정해서 원하는 함수를 호출할 수 있다. 즉, chall02()로 함수 호출만 하면 된다! Java.perfor..

  • format_list_bulleted Android/실습
  • · 2023. 3. 16.
  • textsms
[Frida-lab #1] 코드 분석 및 풀이

[Frida-lab #1] 코드 분석 및 풀이

- adb connect 127.0.0.1:62001을 통해 Nox와 연결한다.(고정 주소) - adb shell로 안드로이드 시스템에 연결한다. - frida-server를 실행 시키기 위해 과거 frida-server를 넣어둔 위치로 이동해 실행시킨다. - ...허가 거부가 뜬다. - chmod 777 frida-server으로 권한을 부여한 뒤 frida-server를 실행 시킨다. - ps | grep frida: 실제로 실행 중인지 확인한다. - APK 디컴파일 프로그램에서 fridalab.apk 파일을 디컴파일한다. - 애플리케이션의 메인화면을 뜻하는 MainActivity 클래스를 찾아 연다. - 컴플릿... 배열이 8개, 녹스에서 확인할 수 있는 챌린지 갯수도 8개이다. 하나를 컴플릿할 때..

  • format_list_bulleted Android/실습
  • · 2023. 3. 16.
  • textsms
Android OS 부팅 순서와 자료 구조

Android OS 부팅 순서와 자료 구조

안드로이드 부팅 순서(간략화) - 부트 로더 > 리눅스 커널 > init process > Native daemons > Zygote > system_server > 응용 프로그램 1) ROM CPU에 전원이 인가되면, 지정 번지의 ROM code를 찾아 실행한다. 이때, ROM code는 Bootloader를 RAM에 적재시키는 역할을 한다. 2) Bootloader RAM과 하드웨어를 초기화하고, 커널과 램 디스크를 RAM으로 올린다. 커널의 시작 지점으로 점프해 불러들인다. OS 시작 전 실행되는 코드이며 장치가 어떻게 시작하는지 알려주고, 커널을 찾는 명령어를 가진 저수준 코드이다. /bootable/bootloader/legacy/usbloader 부트로더는 위의 경로대로 비휘발성 메모리에 상주..

  • format_list_bulleted Android/필기
  • · 2023. 3. 16.
  • textsms
NDK(Native Development Kit) 개요 및 사용법

NDK(Native Development Kit) 개요 및 사용법

NDK(Native Development Kit)란? 안드로이드에서 C/C++ 코드를 사용할 수 있게 해주는 일련의 도구 모음으로, 네이티브 액티비티를 관리하고 센서 및 터치 입력과 같은 실제 디바이스의 컴포넌트(구성요소)에 액새스하는 데에 사용할 플랫폼 라이브러리를 제공한다. NDK의 쓰임 앱을 개발할 때 기기의 성능을 최대한 활용하여 짧은 지연 시간을 구현해야하거나, 게임 또는 물리엔진이 적용된 컴퓨팅 집약적 애플리케이션을 실행해야하는 상황, 혹은 본인 또는 다른 개발자의 C/C++ 라이브러리를 재사용하는 경우 사용된다. NDK를 사용하려면 다음과 같은 도구가 선택적으로 설치되어 있어야한다. CMake: 네이티브 라이브러리를 빌드하는 외부 빌드 도구. (ndk-build만 사용하려는 경우에는 필요없다..

  • format_list_bulleted Android/필기
  • · 2023. 3. 11.
  • textsms
JNI(Java Native Interface) 개요 및 사용법

JNI(Java Native Interface) 개요 및 사용법

JNI(Java Native Interface) JDK의 일부분이자 자바를 위한 네이티브 프로그래밍 인터페이스이다. JNI를 사용해 코드가 모든 플랫폼 상에서 완벽히 이식되도록 할 수 있다. JNI는 C/C++로 쓰여진 애플리케이션이나 라이브러리가 자바 가상 머신과 상호작동하도록 하고 자바 코드가 자바 가상 머신 내에서 실행되도록 보장한다. JNI의 쓰임 표준 자바 클래스 라이브러리가 플랫폼 의존적 틍징들을 지원하지 못할 때. 이미 다른 언어로 쓰여진 애플리케이션이나 라이브러리를 자바 애플리케이션에서 접근하고자 할 때. 저수준 언어로 구현한 코드를 자바 애플리케이션에서 호출하고자 할 때. Android가 관리 코드에서 컴파일하는 바이트 코드(Java, Kotlin)와 네이티브 코드(C/C++)가 상호작용..

  • format_list_bulleted Android/필기
  • · 2023. 3. 11.
  • textsms
안드로이드 - JAVA, Kotlin

안드로이드 - JAVA, Kotlin

꾸준히 안드로이드 애플리케이션 개발에 사용되었던 JAVA가 지난 2017년 5월 안드로이드 측에서 공식 개발 언어로 채택한 Kotlin으로 대체되고 있는 추세이다. Java는 무엇이고 Kotlin은 무엇일까? 이 게시글에서는 두 언어의 개요와 차이(장단점) 등을 정리한다. JAVA 1995년 sun Microsystems가 출시한 객체지향 프로그래밍 언어이자 컴퓨팅 플랫폼이다. 노트북, 데이터 센터, 게임 콘솔, 과학용 슈퍼 컴퓨터, 휴대 전화, 인터넷 등 광범위한 분야에 활용되고 있다. 특징 C/C++ 스타일 언어와 가상 머신을 구현하는 것을 목표로 개발되어 왔다. 부품에 해당하는 객체를 만들어 하나씩 조립 및 연결해 프로그램을 완성하는 객체지향 프로그래밍 언어다. JRE(자바 실행 환경)이 설치되어 ..

  • format_list_bulleted Android/필기
  • · 2023. 3. 11.
  • textsms
디컴파일의 개요, 원리 및 이유 (+Apktool)

디컴파일의 개요, 원리 및 이유 (+Apktool)

디컴파일이란? 컴파일과는 반대대는 개념으로, 실행 가능한 프로그램 코드를 보다 높은 수준의 프로그래밍 언어 형식으로 변환하여 더 읽기 쉬운 형식으로 만드는 것이다. 즉, 컴파일된 실행 파일을 소스코드로 되돌리는 작업. 더보기 대상이 되는 시스템을 분석하여 그 시스템의 구성요소와 구성요소 사이의 관계를 밝히는 작업으로 전통적으로 디컴파일은 매우 어려운 것으로 알려져있다. 디컴파일할 대상이 매우 크고, 배포되어 실행되는 목적코드(object code)에는 소스코드의 정보가 숨겨서 보관되기 때문이다. 디컴파일 분야에서 다루는 언어 중 'JAVA'를 예를 들어 설명하자면, 자바의 소스코드는 바이트 코드로 컴파일 되게 된다. 이 바이트 코드는 이식성을 강조하여 사용자가 바이트 코드의 제어에 개입할 예지를 없애 버..

  • format_list_bulleted Android/필기
  • · 2023. 3. 11.
  • textsms
안드로이드의 개요, 4대 구성 요소(+240720 수정)

안드로이드의 개요, 4대 구성 요소(+240720 수정)

안드로이드란?리눅스 커널을 기반으로 구글에서 제작하고 있는 모바일 운영체제와 미들웨어 및 중요 애플리케이션이 포함된 소프트웨어 집합이다. Android 앱은 Kotlin, Java, C++ 언어를 사용하여 작성할 수 있다. 각 안드로이드 맵은 자체적인 보안 샌드박스에 속하며, 멀티유저 Linux 시스템, 고유한 Linux ID 할당, 자체적인 가상 머신, 앱 자체의 Linux 프로세스에서의 실행 등 최소 권한의 원리를 구현한다. 이보다 더 자세한 정보들은 안드로이드 개발자 페이지 를 참고할 것. 이 포스트에서는 안드로이드 앱을 구성하는 핵심 프레이워크 구성요소에 대해 서술한다. 안드로이드의 4대 구성 요소컴포넌트는 구성 요소라는 뜻을 지니고 있다. 다시 말해, 안드로이드 컴포넌트는 안드로이드 앱을 구성하..

  • format_list_bulleted Android/필기
  • · 2023. 3. 11.
  • textsms
  • «
  • 1
  • »
250x250
공지사항
전체 카테고리
  • 카테고리 (95)
    • Web Application (6)
      • 필기 (5)
      • 실습 (1)
    • Information Security (8)
      • 사이버범죄심리학 (1)
      • 정보보안개론 (2)
      • 암호학 (3)
    • Android (12)
      • 필기 (6)
      • 실습 (6)
    • System & Reversing (17)
      • 필기 (13)
      • 실습 (4)
    • IoT(사물인터넷) (2)
      • 필기 (2)
      • 실습 (0)
    • Digital Forensic (43)
      • 필기 (9)
      • Anti Forensic (1)
      • Dreamhack (9)
      • CTF (16)
      • 기타정보 (3)
      • 디지털포렌식전문가2급 (3)
    • Programming (2)
      • 다인 프로젝트 (2)
      • 개인 프로젝트 (0)
    • Computer Engineering (1)
      • 자료구조 (1)
최근 글
인기 글
최근 댓글
태그
  • #seKUCTF
  • #기계어
  • #저급언어
  • #IoT보안
  • #SeKUrity
  • #고급언어
  • #건국대학교(글로컬)
  • #사물인터넷
  • #IoT해킹
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바