반응형

좀 열심히 쓴 글 22

Android 동작 구조

Android 동작 구조 Android architecture 안드로이드는 스마트 폰을 비롯한 다양한 모바일/임베디드 기기에서 사용할 수 있도록 제작된 Linux 기반의 오픈 소스 소프트웨어 스택입니다. 다음 그림은 해당 구조를 나타냅니다. Linux Kernel Android 플랫폼은 Linux Kernel 기반으로 구성되어 있습니다. 특히, ART(Android runtime)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux Kernel을 사용합니다. Linux Kernel 부분에서 담당하는 부분은 다음과 같습니다. ü 메모리 등의 자원 관리 ü 보안 설정 ü 전원 관리 ü 하드웨어 장치 드라이버 관리 ü 네트워크 시스템 관리 등HAL(Hardware Abstraction Laye..

Unity Mono 분석

Unity Mono 분석 .Net Framwork Microsoft에서 개발한 Windows 프로그램 개발 및 실행 환경을 말합니다. 다양한 프로그래밍 언어와 라이브러리들을 이용하여 윈도우 기반 응용프로그램을 개발 및 실행할 수 있도록, MSIL(MicroSoft Intermediate Language)를 사용함으로써 통합된 프로그래밍 환경을 제공합니다. .NET Framework는 지원하는 언어들이 사용할 수 있는 API와 type으로 구성된 Class Library와 쓰레드 관리, garbage collection, 예외 handling 등을 제공하는 CLR(Common Language Runtime)이라는 실행 엔진(일종의 가상머신)으로 구성되어 있습니다. 이 구조를 CLI(Common Langua..

Frida 및 nodejs 사용할 때 TMI

Frida 및 nodejs 사용할 때 TMI1. Memory.readByteArray()로 읽어온 데이터에 접근할 때Memory.readByteArray의 리턴 형은 ArrayBuffer인데, 얘로 가져온 결과는 index로 접근할 수가 없다.다음과 같이 Uint8Array로 변화하여 접근하면 됨.var data2 = Memory.readByteArray(save, 0x18); var data = new Uint8Array(data2); console.log(data[0])2. nodejs char intfromCharCode와 charCodaAt을 이용하여 변환하면 됨.var tmp = String.fromCharCode(data[i] ^ xor_key[i].charCodeAt());3. Native ..

Format String field width

Format StringFormat of the format string포맷 스트링은 initial shift state(byte sequence에 대한 해석을 문자로 알리는 상태)에서 시작하고 끝나는 문자열을 말한다. 포맷 스트링은 0이상의 지시문으로 구성되는데, 다음과 같다.output stream으로 변경되지 않고 복사되는 (%이 아닌) 일반 문자 (ordinary characters)0이상의 연이은 인자들을 가져오는 변환 명시 (conversion specifications) 각각의 conversion specification은 % 문자로 시작하여 conversion specifier로 끝난다. 그 사이에는 0개 이상의 flag와 optional한 minimum field width, precis..

[Project Zero] Bad Binder: Android In-The-Wild Exploit 분석글

[Project Zero] Bad Binder: Android In-The-Wild Exploit Target : https://googleprojectzero.blogspot.com/2019/11/bad-binder-android-in-wild-exploit.html?m=1 Vulnerability : CVE-2019-2215 IndexReport SummaryPrior knowledgeBug DetailsExploit VulnerabilityAnalysis POCPatch NoteEnvironment SetupReferenceReport Summary본 보고서에서 소개하는 취약점은 Android binder에서 발생하는 Use-After-Free 취약점입니다. 간단하게 요약하면, epoll을 사용하는..

Unity IL2CPP 분석

Unity IL2CPP 분석 Unity IL2CPP Unity는 쉬운 C#의 사용, 써드파티 라이브러리에 대한 접근 등의 이유로 Mono를 사용했습니다. 그러나 Mono에는 몇 가지 난제가 존재합니다. C# runtime performance가 C/C++에 비해 여전히 느리다는 점. 더 뛰어난 최신 버전의 .NET 언어를 Unity Mono에서 지원하기 힘들다는 점. 다양한 플랫폼들의 아키텍처에 맞추려면 포팅, 유지보수 등의 작업이 필요한데 너무 많은 노력이 든다는 점. 실행 중에는 Garbage collection이 멈출 수도 있다는 점. 위의 문제점들을 해결할 수 있다며 Unity에서 내세운 기술인 IL2CPP에 대해 살펴보도록 하겠습니다. Background IL2CPP의 등장은 기존 Mono 방식..

IL2CPP 메타데이터 노출 취약점 대응 방안

IL2CPP 메타데이터 노출 취약점 대응 방안 다음과 같이 Unity 에디터의 소스 코드를 수정함으로써 공격자의 심볼 복구에 대한 대비를 할 수 있습니다. Unity Editor의 설치 폴더에는 Unity에서 사용하는 다양한 플러그인, 리소스들이 존재할 뿐만 아니라, 프로젝트 빌드 시 사용되는 코드들 또한 존재합니다. Unity Editor는 Unity Hub 설치 시 기본적으로 C:\Program Files\Unity\Hub\Editor에 버전 별로 설치됩니다. 본 대응 방안에서는 Unity 2018.4.8f1 에디터를 예시로 사용하며, IL2CPP 빌드와 관련된 코드가 존재하는 C:\Program Files\Unity\Hub\Editor\2018.4.8f1\Editor\Data\il2cpp\libil..

시스템 수준 입출력(I/O)

시스템 수준 입출력(I/O) 입출력(I/O)이라는 동작은 결국 주 메모리와 외부 디바이스 간에 데이터를 주고 받는 동작이다.입력(INPUT)의 경우 외부 디바이스에서 주 메모리로 데이터를 전송하는 과정이고, 출력(OUTPUT)의 경우 주 메모리에서 외부 디바이스로 데이터를 전송하는 과정이다.이런 동작에 대해 알아보기 전에, 우선 알아두어야 할 점은 리눅스는 네트워크, 디스크, 터미널 같은 모든 I/O 디바이스들을 파일로 모델링한 뒤, 모든 입력과 출력을 해당 파일을 읽고 쓰는 방식으로 관리한다는 점이다.즉, 우리의 입출력 역시 일반 파일을 읽고 쓰는 것처럼 관리할 수 있다. 크기가 m인 파일을 읽기위해 현재 파일 위치 k를 증가시킬 때, k>m 인 경우 발생하는 "EOF(end of file)"가 일반 ..

free.c 상세 분석일지 2 (glibc-2.25)

free.c 상세 분석일지 2 (glibc-2.25) heap 공부는 malloc 동작 분석부터 하는게 맞는거 같다. malloc 관련해서 예전에 정리해놓은 걸 좀 더 다듬어 봤다. heap 공부를 하는 누군가에게(나를 포함한) 도움이 되기를 바람glibc는 점점 update되어가며 사용자에게 다양한 기능을 제공하고 있다. 발견된 취약점, 매크로 상수들에 대한 패치와 같이 함수 동작에 대해 아주 크게 영향을 끼치지 않는 update가 있는 반면, 새로운 자료형 및 함수들을 추가하여 함수 동작에 큰 영향을 끼치는 update도 존재한다.지금 분석할 malloc 함수 역시 glibc-2.26 version 이상부터 per-thread cache라는 개념이 등장하여 이전 glibc version의 malloc..

malloc.c 상세 분석일지 1 (glibc-2.25)

malloc.c 상세 분석일지 1 (glibc-2.25) heap 공부는 malloc 동작 분석부터 하는게 맞는거 같다. malloc 관련해서 예전에 정리해놓은 걸 좀 더 다듬어 봤다. heap 공부를 하는 누군가에게(나를 포함한) 도움이 되기를 바람glibc는 점점 update되어가며 사용자에게 다양한 기능을 제공하고 있다. 발견된 취약점, 매크로 상수들에 대한 패치와 같이 함수 동작에 대해 아주 크게 영향을 끼치지는 않는 update가 있는 반면, 새로운 자료형 및 함수들을 추가하여 함수 동작에 큰 영향을 끼치는 update도 존재한다.지금 분석할 malloc 함수 역시 glibc-2.26 version 이상부터 per-thread cache라는 개념이 등장하여 이전 glibc version의 mal..

반응형