일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LLVM Obfuscator
- 안티디버깅
- tracing
- linux debugging
- android inject
- tracerpid
- on-stack replacement
- anti debugging
- custom packer
- apm
- Linux packer
- Obfuscator
- on stack replacement
- v8 optimizing
- initial-exec
- pthread
- TLS
- OSR
- Injection
- so inject
- pinpoint
- LLVM 난독화
- uftrace
- Linux custom packer
- linux thread
- LLVM
- 난독화
- Android
- thread local storage
- v8 tracing
- Today
- Total
목록분류 전체보기 (139)
Why should I know this?
0. 개요 이 글의 내용은 DEX를 메모리에서 로드하는 기법을 다루고 있습니다. 제가 2018년 고안하였으며 이 글은 2019년에 글을 작성되었습니다. 그간 비공개로 해놨으며, github를 통해 다음 프로젝트처럼 동일 기법이 오픈소스로 공개되어 있는것을 확인되어 공개로 전환합니다. https://github.com/yongyecc/dexshellerInMemory GitHub - yongyecc/dexshellerInMemory: android APK一键DEX加固脚本(内存加载DEX) android APK一键DEX加固脚本(内存加载DEX). Contribute to yongyecc/dexshellerInMemory development by creating an account on GitHub. githu..
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
execv로 실행한 프로세스에서 PRELOAD된 라이브러리를 구동하는 시점에.plt.got의 실행이 정상적으로 이뤄지지 않고 segfault를 발생시키는 문제가 있다.
======== gdb 지원 메소드 컴파일 ===========v8에는 GDB에서의 디버깅을 지원하기 위한 메소드들이 있다. 이를 사용하고자 한다면, 컴파일 할 때 옵션을 설정해야 한다.nodejs 를 예로 들면, node$ ./configure --help...--gdb add gdb support...node$ ./configure --gdb node$ make -j 6이렇게 컴파일 하면 gdb 지원 메소드들을 사용할 수 있다. 관련 내용은 deps/v8/tools/gdbinit 에 있다. ========== v8 Tracing ========== TOTAL TIME : FUNCTION 2.522 s : (1) node 2.522 s : (4) v8::Fu..
G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log ./test_resolve `which gcc`