APK 파일의 구조 APK 파일은 ZIP 형식으로 압축되어 있으며, 내부에는 여러 가지 디렉토리와 파일이 포함되어 있다. apk 파일의 구조는 다음과 같다. APK 파일 │ ├── META-INF/ │ ├── MANIFEST.MF │ ├── CERT.SF │ └── CERT.RSA │ ├── AndroidManifest.xml │ ├── res/ │ ├── drawable/ │ ├── layout/ │ ├── values/ │ └── ... │ ├── assets/ │ ├── fonts/ │ ├── sounds/ │ └── ... │ ├── lib/ │ ├── arm64-v8a/ │ ├── armeabi-v7a/ │ ├── x86/ │ └── ... │ ├── classes.dex │ └── resour..
안드로이드 구조 는 크게 5개의 계층으로 구성되어 있다. 리눅스 커널 계층 리눅스 커널은 안드로이드의 가장 기본적인 계층으로, 하드웨어와 소프트웨어의 중간 역할을 한다. 프로세스 관리, 메모리 관리, 파일 시스템 관리, 네트워크 관리 등의 기능을 제공한다. 리눅스 커널은 안드로이드 기기의 하드웨어를 관리하고, 안드로이드 프레임워크 및 애플리케이션이 실행되기 위한 기본적인 환경을 제공한다. 하드웨어 추상화 계층(HAL) HAL은 하드웨어와 소프트웨어의 차이를 추상화하여, 하드웨어에 대한 접근을 단순화한다. 예를 들어, 카메라, 화면, 오디오 등 다양한 하드웨어 장치에 대한 접근을 HAL을 통해 제공한다. HAL은 안드로이드 프레임워크 및 애플리케이션이 하드웨어에 직접 접근하지 않고도 하드웨어를 사용할 수 ..
frida server {"type":"error","description":"Error: invalid address","stack": "Error: invalid address\n at Object.value [as patchCode] (frida/runtime/core.js:207:1)\n 해당 오류를 검색창에 입력하면 글이 거의 나오지 않는다. 나와도 중국사이트에서 selinux를 끄라고 나오는데 꺼도 꺼지지 않고 해결이 되지 않는다. 그래서 해결한 방법을 공유하고자 글을 써본다. 일단 보통 1. data/local/tmp 이 위치에 frida 서버가 저장되어있을 텐데 모두 지우고 최신 버전으로 설치한다. 로컬에서도 마찬가지로 최신버전으로 버전을 맞추고 파일 경로를 2. 파일 위치를 /system..
with open('flag.png','rb') as f: plain_s = f.read() 파일 'flag.png'을 이진(binary) 모드로 ('rb'는 read binary의 약자) 연다. 'rb' 모드는 파일을 이진 데이터로 열기 위한 모드로, 파일 내용을 읽을 때 각 바이트를 이진 형식으로 다룬다. 'with' 문은 파일을 열고 사용한 후 자동으로 닫아준다. 열린 파일에서 데이터를 읽어와서 변수 plain_s에 저장한다. 이 코드는 파일 내용을 읽어 plain_s 변수에 이진 데이터로 저장하는 역할을 한다. 이진 데이터는 바이트의 연속으로 이루어져 있으며, 주로 이미지, 오디오, 비디오 및 기타 이진 파일 형식에서 사용된다. with open('파일명', '모드') as 파일별칭: # 파일에 ..
CHAR()와 VARCHAR()는 데이터베이스 스키마를 설계할 때 사용되는 데이터 유형(data type) 중의 하나이며 이러한 데이터 유형은 주로 문자열 데이터를 저장하기 위해 사용되고, 대부분의 관계형 데이터베이스 시스템에서 지원된다. 그러나 각 데이터베이스 관리 시스템(DBMS)마다 구현과 동작이 약간 다를 수 있다 char() CHAR 데이터 유형은 고정 길이 문자열 데이터를 저장하는 데 사용된다. 문자열 길이가 정확히 지정되며, 필드에 저장될 때 공백 문자로 채워질 수 있다. 예를 들어, CHAR(10)은 항상 10 글자의 문자열을 저장하고, 문자열이 10자보다 짧을 경우 나머지 공간은 공백으로 채워진다. 고정 길이 문자열로 인해 저장 공간이 효율적으로 사용될 수 있지만, 저장된 데이터에 따라 ..
***hex(i)는 파이썬에서 사용되는 함수로, 정수 i를 16진수 문자열로 변환하는 데 사용된다. 예를 들어, 다음과 같이 사용할 수 있다 i = 255 hex_string = hex(i) print(hex_string) # 출력 결과: '0xff' hex(i) 함수는 정수를 16진수 문자열로 변환하고, 앞에 '0x' 접두사를 붙여주고 이를 통해 16진수 값을 표현할 수 있으며, 주로 디버깅이나 다양한 프로그래밍 작업에서 사용된다. *** hex(i)[2:]는 hex(i)에 [2:]를 붙인 형태로 16진수 문자열에서 '0x' 앞부분을 제거하여 순수한 16진수 문자열만 남길 수 있다. i = 255 hex_string = hex(i)[2:] print(hex_string) # 출력 결과: 'ff' 위 코..
🍖 C언어 type casting 🍖 C 언어에서 type casting은 데이터의 자료형을 다른 자료형으로 변환하는 과정이며 크게 두가지 유형의 형변환이 있다. 이런 타입 캐스팅 과정은 CTF 문제를 풀 때 코드를 이해하는데에 있어서 기본이다. 묵시적 형변환 묵시적 형변환은 데이터 타입이 서로 호환되는 경우 자동으로 수행되는 형변환이다. 예를 들어, int형 변수와 float형 변수를 더하는 경우, int형 변수는 자동으로 float형으로 형변환된다. int a = 10; float b = 2.5; // 묵시적 형변환 printf("%f\n", a + b); // 12.5 명시적 형변환 명시적 형변환은 개발자가 직접 데이터 타입을 변환하는 것을 말하며 (자료형)값과 같은 형식으로 수행된다. 예를 들어,..
진단항목 XE-18. /etc/service 파일 권한 설정 취약도 중 항목설명 Service 파일을 관리자가 아닌 일반사용자들이 접근 및 변경 가능하면 이를 통해 정상적인 서비스를 제한하거나 허용되지 않은 서비스를 실행시켜 침해사고의 위험이 있다. ***/etc/services는 Linux, Unix, macOS 운영 체제에 있는 텍스트 파일로, TCP 또는 UDP 포트 번호와 해당 포트를 사용하는 서비스(또는 프로토콜 이름)의 정보를 연결하는 역할을 하며 이 파일은 애플리케이션이 네트워크를 통해 다른 기기에 연결할 때 인간이 읽을 수 있는 서비스 이름을 포트 번호로 변환하는 데 사용된다. 예를 들어, 다음 줄은 HTTP 서비스에 대한 정보를 제공한다. http /80 tcp 진단기준 양호 /etc/s..
자바스크립트 오류 상수를 선언할 때 값을 지정해주지 않아 생기는 오류이다. uncaught syntaxerror : Missing initializer in const declaration 해결방법 1. 상수는 선언할 때 값을 지정해야 한다. ex) const su=82
자바스크립트 오류 특정한 이름의 상수는 한 파일에서 한번만 선언가능해서 생기는 오류이다. uncaught syntaxerror : identifier 'name' has already been declared 해결방법 1. 새로고침 후에 ( 자바스크립트 상태 초기화 ) 다시 코드를 입력한다. 2. 다른 이름의 식별자로 선언한다.