준비

- simg2img : netking.xyz/owncloud/index.php/s/l5IjEkCGclf63Jr

- 7zip : https://www.7-zip.org/

- 삼성 펌웨어 중 AP 파일 (Galaxy Note 20 Ultra / SM-N986 기준)

 

동적 파티션으로 전환 시의 새로운 물리 파티션 테이블 레이아웃

* Android 10부터 'system, vendor, product'를 'super.img로 관리

 

추출

1. simg2img.exe super.img super.raw

2. super.raw  7-Zip → 압축풀기(Extract file)

3. END

 

2번

 

'STUDY > Android' 카테고리의 다른 글

삼성 펌웨어에서 이미지 추출 (Extract Image from Samsung Firmware)  (0) 2020.08.11
Android Network Capture with ADB  (0) 2020.05.25
Android AOSP Build  (0) 2019.12.19
JLang Build  (0) 2019.12.02
VMware에서 Android X86 설치  (0) 2019.11.23

환경

Device : Android (Root)

OS : Kali-linux, Ubuntu Etc

 

방법 1 : 실시간 패킷 분석 (Real-time packet analysis)

$ adb exec-out "su -c tcpdump -i any -U -w - 2>/dev/null" | wireshark -k -S -i -

 

* 실시간 패킷 분석 시 프레임 에러가 발생할 땐 [방법 2]로 사용해보세요.

* If a frame error occurs during real-time packet analysis, use [방법 2].

 

Frame Error

 

방법 2 : 저장된 패킷 분석 (Analysis of stored packets)

$ adb exec-out "su -c tcpdump -i any -U -w {스마트폰 내에 저장할 위치}"

ex) adb exec-out "su -c tcpdump -i any -U -w /sdcard/capture.pcap"

 

$ adb pull {스마트폰 내에 저장된 위치}

ex) adb pull /sdcard/capture.pcap

 

'STUDY > Android' 카테고리의 다른 글

삼성 펌웨어에서 이미지 추출 (Extract Image from Samsung Firmware)  (0) 2020.08.11
Android Network Capture with ADB  (0) 2020.05.25
Android AOSP Build  (0) 2019.12.19
JLang Build  (0) 2019.12.02
VMware에서 Android X86 설치  (0) 2019.11.23

안드로이드 AOSP 빌드를 보다 간략하고 쉽게 따라할 수 있도록 작성해보았습니다.

빨간색 글자는 반드시 따라 안하셔도 되며, 안드로이드 장비에 맞게 설정하시길 바랍니다.

 

환경

Ubuntu 16.04 (권장)

 

필수 설치

$ sudo apt-get purge openjdk-* icedtea-* icedtea6-*
$ sudo apt-get update
$ sudo apt-cache search openjdk
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip liblz4-tool libncurses5 libssl-dev bc
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

 

이미지 생성

$ mkdir ~/bin

( bin 폴더는 자신이 원하는 곳에 해도 됩니다. )

$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

$ mkdir ~/android

( android 폴더는 자신이 원하는 곳에 해도 됩니다. )
$ cd ~/android
$ git config --global user.email "이메일(ex. admin@gmail.com)"
$ git config --global user.name "이름(ex. admin)"
$ repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r33

( 자신이 원하는 안드로이드 버전을 찾아 넣으면 됩니다. )

( 참고 : https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds )
$ repo sync -j16
$ make -j16

( j 뒤에 숫자는 CPU를 보고 맞춥니다. ex. make -j2, make -j4, make -j8, make -j16, make -j32 )

$ . build/envsetup.sh
$ lunch

Nexus 빌드 네임

( 자신이 빌드하고자 하는 장비에 맞게 선택해주시면 됩니다. )

( ex. Nexus 5X인 경우 "aosp_bullhead_userdebug"으로 29번 선택 )
$ make -j16

 

이미지 주입

※ 생성된 이미지를 가져와 윈도우10에서 작업하였습니다.

※ 키 생성 과정이 생략되어 추후 작성하겠습니다.

 

- fastboot 모드 진입은 전원키+볼륨상+볼륨하를 꾸욱 눌려줍니다.

- 언락

$ fastboot oem unlock

- 빌드

$ set ANDROID_PRODUCT_OUT=이미지가 들어가있는 폴더

$ fastboot -w flashall

 

References

Building and flashing a secured AOSP build with verified boot and separate lockscreen password for the Nexus 5X
안드로이드 포팅 1-2 AOSP 빌드하기
안드로이드 에뮬레이터 환경에서 OS 이미지 적용을 위한 안드로이드 OS 풀 소스 빌드 방법
안드로이드 스튜디오의 에뮬레이터 설치 및 사용 방법

'STUDY > Android' 카테고리의 다른 글

삼성 펌웨어에서 이미지 추출 (Extract Image from Samsung Firmware)  (0) 2020.08.11
Android Network Capture with ADB  (0) 2020.05.25
Android AOSP Build  (0) 2019.12.19
JLang Build  (0) 2019.12.02
VMware에서 Android X86 설치  (0) 2019.11.23

JLang은 Java를 LLVM IR로 변환하는 리프팅 도구이며, APK 내 class 코드를 Java로 변환한 후 생성된 Java 파일을 JLang을 이용해 IR로 변환하여 대상 함수에 대한 IR 소스코드를 바탕으로 LibFuzzer을 이용하여 퍼징 테스트를 도와줄 수 있다.

 

[환경]

- 우분투 18.04

 

- JLang 
$ git clone https://github.com/polyglot-compiler/JLang.git

- JDK 이전버전 제거
$ sudo apt-get remove openjdk*
$ sudo apt-get remove oracle*
$ sudo apt-get autoremove --purge
$ sudo apt-get autoclean

- JDK 7 설치
$ sudo mkdir -p /usr/local/java
$ sudo cp -r jdk-7u80-linux-x64.tar.gz /usr/local/java/
$ cd /usr/local/java
$ sudo tar xvzf jdk-7u80-linux-x64.tar.gz
$ sudo vim /etc/profile
==========================================
맨 밑에 추가
==========================================
JDK7=/usr/local/java/jdk1.7.0_80
JRE_HOME=/usr/local/java/jdk1.7.0_80
PATH=$PATH:$JDK7_HOME/bin:$JDK7_HOME/bin
export JDK7
export JDK7_HOME
export PATH
==========================================
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.7.0_80/bin/java" 1
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.7.0_80/bin/javac" 1
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.7.0_80/bin/javaws" 1
$ sudo update-alternatives --set java /usr/local/java/jdk1.7.0_80/bin/java
$ sudo update-alternatives --set javac /usr/local/java/jdk1.7.0_80/bin/javac
$ sudo update-alternatives --set javaws /usr/local/java/jdk1.7.0_80/bin/javaws
$ source /etc/profile

- JDK 8 설치
$ sudo mkdir -p /usr/local/java
$ sudo cp -r jdk-8u231-linux-x64.tar.gz /usr/local/java/
$ cd /usr/local/java
$ sudo tar xvzf jdk-8u231-linux-x64.tar.gz
$ sudo vim /etc/profile
==========================================
맨 밑에 추가
==========================================
JDK8=/usr/local/java/jdk1.8.0_231
JDK_HOME=/usr/local/java/jdk1.8.0_231
PATH=$PATH:$JDK_HOME/bin:$JDK_HOME/bin
export JDK
export JDK_HOME
export PATH
==========================================
$ sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_231/bin/java" 2
$ sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_231/bin/javac" 2
$ sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_231/bin/javaws" 2
$ sudo update-alternatives --set java /usr/local/java/jdk1.8.0_231/bin/java
$ sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_231/bin/javac
$ sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_231/bin/javaws
$ source /etc/profile

- LLVM 5.0, Clang 5.0 설치 설치
버전 체크 : llc --version, clang++ --version
$ sudo apt-get install clang-5.0 llvm-5.0
$ sudo ln -s /usr/bin/clang++-5.0 /usr/bin/clang++
$ sudo ln -s /usr/bin/llc-5.0 /usr/bin/llc

- gc-7.6.4 설치
$ wget https://www.hboehm.info/gc/gc_source/gc-7.6.4.tar.gz
$ tar -xvf gc-7.6.4.tar.gz
$ cd gc-7.6.4/
$ git clone https://github.com/ivmai/libatomic_ops.git
$ brew install boehmgc
$ ./configure; make; sudo make install

- Git LFS 설치
$ sudo apt-get install curl
$ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
$ sudo apt-get install git-lfs

- ANT 설치
$ sudo apt-get install ant

- Boehm-Demers-Weiser garbase collector 설치
$ sudo apt-get install libgc-dev

 

- 빌드

$ make

'STUDY > Android' 카테고리의 다른 글

삼성 펌웨어에서 이미지 추출 (Extract Image from Samsung Firmware)  (0) 2020.08.11
Android Network Capture with ADB  (0) 2020.05.25
Android AOSP Build  (0) 2019.12.19
JLang Build  (0) 2019.12.02
VMware에서 Android X86 설치  (0) 2019.11.23

1단계. 준비

- VMware Workstation

- android-x86_64-9.0-rc1.iso (191123 기준)

 

2단계. 새 가상 머신 생성

게스트 운영체제

처음 가상 머신을 생성 후 ISO 파일을 선택하지 말고 게스트 운영체제에서 "Linux"와 "Other Linux 5.x or ..."을 선택하여 생성하자

 

Hard Disk (SCSI) (수정 전)

여기서 VMware는 처음 생성된 가상 디스크가 SCSI로 되어있고, Android-x86은 SCISI를 지원하지 않기 때문에 가상 디스크 유형을 IDE로 변경해주자

 

Hard Disk (IDE) (수정 후)

기존 가상 디스크는 Remove 후 IDE로 다시 생성하면 된다

 

Memory 2GB, Processors 2

중요한건 아니지만 가상 머신 최적화를 위해 메모리 2GB, 프로세서는 2로 맞추었다

 

CD/DVD (IDE)

Android-x86의 ISO를 넣어주자

 

Display -> 3D graphics

Display에서 "Accelerate 3D graphics" 활성화 선택

 

3단계. Android-x86 설치

처음 설치 화면

"Advanced options" 선택

 

Advanced options

"Auto_Installation - Auto Install ..." 선택

 

Auto Installer

"YES" 선택

 

추카푸카!

"Reboot" 선택 후 OK

(설명. 윈도우 설치할 때 부팅 USB으로 설치 후 계속 꽂아두면 안 되니 재부팅해서 빼주는 작업이 필요)

(ISO 이미지 연결 해제 하자는 말 :D)

 

4단계. xForce 모드 부팅

부팅 화면

"e"버튼을 눌려보자

 

"e"버튼을 눌린 다음 화면

다시 "e"을 눌리면 편집 모드가 보이고

 

편집 후

"quitet"를 지우고 "nomodest xforcevesa"로 교체한 다음 "Enter"를 눌려 저장하고 "b"버튼을 누르면 부팅이 된다.

 

5단계. INJOY

정상적인 첫 부팅화면
언어 설정
Android-x86

'STUDY > Android' 카테고리의 다른 글

삼성 펌웨어에서 이미지 추출 (Extract Image from Samsung Firmware)  (0) 2020.08.11
Android Network Capture with ADB  (0) 2020.05.25
Android AOSP Build  (0) 2019.12.19
JLang Build  (0) 2019.12.02
VMware에서 Android X86 설치  (0) 2019.11.23

+ Recent posts