일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Linux custom packer
- Obfuscator
- tracing
- on stack replacement
- uftrace
- android inject
- so inject
- TLS
- apm
- tracerpid
- linux thread
- linux debugging
- LLVM
- Injection
- 난독화
- custom packer
- LLVM 난독화
- Android
- on-stack replacement
- v8 tracing
- initial-exec
- v8 optimizing
- thread local storage
- OSR
- anti debugging
- pthread
- pinpoint
- Linux packer
- 안티디버깅
- LLVM Obfuscator
- Today
- Total
목록전체 글 (132)
Why should I know this?
Android 파헤치기 0. 시작하기 전에...'Android 파헤치기'에서 다루고자 하는 것은 Android라는 오픈소스를 구성하는 Stack 중에 가상머신(현재는 Runtime으로 대체되었다) 자체이다. 그러므로 응용 개발이나 프레임워크 개발을 하시는 분들에게 유용한 정보가 많지 않을 수도 있다. 1. Android의 어플리케이션 구동 구조Android의 Application이 구동하는 구조는 다소 복잡하다. 이렇게 복잡한 구성을 갖게 된 이유는 Android가 OS의 필요성에 따라 여러 상태로 전환되야 하기 때문이다. 그리고 Android의 응용 어플리케이션은 가상머신에서 동작하기 때문에 가상머신을 Process에 녹여내는 기술도 함께 포함이 되어있다. 이 부분은 굉장히 재미있는 요소가 많은데 예를..
Android 파헤치기 0. 시작하기 전에...'Android 파헤치기'에서 다루고자 하는 것은 Android라는 오픈소스를 구성하는 Stack 중에 가상머신(현재는 Runtime으로 대체되었다) 자체이다. 그러므로 응용 개발이나 프레임워크 개발을 하시는 분들에게 유용한 정보가 많지 않을 수도 있다. 1. 다양한 Class Load path 전 글에서 언급했듯이, Class는 Android 가상머신의 핵심 중에 핵심이며 Class가 로드, 링킹되는 과정만 이해해도 사실상 안드로이드의 대부분은 이해했다고 해도 무리가 아니다. 그만큼 Class를 로드하는 일은 매우 높은 빈도로 다양한 곳에서 많이 발생한다. 이처럼 Class를 로드하는 Path가 다양한 이유는 다음과 같다. -. System Class와 F..
Android 파헤치기 0. 시작하기 전에...'Android 파헤치기'에서 다루고자 하는 것은 Android라는 오픈소스를 구성하는 Stack 중에 가상머신(현재는 Runtime으로 대체되었다) 자체이다. 그러므로 응용 개발이나 프레임워크 개발을 하시는 분들에게 유용한 정보가 많지 않을 수도 있다. 1. 가상머신?Android는 흔히 알다시피 가상머신이다. 가상머신이라는 개념에 대해 아주 간단히 설명드리자면, 기존의 프로그래밍 패러다임은 '하나의 언어에 하나의 머신'으로 시작됐다. 여기서 언어는 고도화되어 C가 등장하여 공용어라는 개념이 생겨났으며 머신은 OS로 대체되어 플랫폼이 되었다. 하지만 C++이 등장하여 여러 Standard 라이브러리들이 제공되고, 여러 아키텍처와 플랫폼으로 크로스컴파일 및 ..
Thread Local Storage 파헤치기 0. 개요Thread Local Storage는 Multi-Thread 프로그램을 작성하는데 거의 필수로 사용되는 기능이다.Linux에서의 Thread Local Storage에 대하 자세히 다뤄보고자 한다. 이 글에서 다루는 모든 소스코드와 예제는 github 저장소에 존재한다. https://github.com/ParkHanbum/study_tls.git 0-0. 배경 -. 프로그래밍 공학시간에 배웠듯, 프로그래밍 언어에서 지역변수는 Stack에, 전역변수는 Data 영역에 보관된다.-. 모든 프로세스에는 아키텍처에 가용한 최대한의 메모리가 가상 메모리로 제공된다. 이것을 Flat 혹은 Linear 메모리 모델이라고 부른다. 0-1. Thread 란?먼저..
apt를 통해 설치할 수 있는 debian packages들은 prebuilt되어 있으며 strip되어 있다.이를 위한 symbol 정보를 -dbg 으로 제공하는데, 이를 사용하기 위해 해야 할 작업이 있따. 여기 참고https://wiki.ubuntu.com/Debug%20Symbol%20Packages