이전 글(https://hackcatml.tistory.com/188) 에서 S10에 리니지를 올려봤는데요,
픽셀 익스 12 + kernelSU 도 올라가네요.
주로 픽셀폰을 써서 그런지 편하네요.
픽셀 익스 12는 https://get.pixelexperience.org/changelog/beyond1lte/PixelExperience_beyond1lte-12.1-20220928-1602-OFFICIAL.zip 에서 다운로드 받을 수 있습니다.
이하 커널 빌드 방법만 다룹니다. 나머지 절차는 이전 글(https://hackcatml.tistory.com/188) 참고 바랍니다.
※ 픽셀 익스 13(https://get.pixelexperience.org/changelog/beyond1lte/PixelExperience_beyond1lte-13.0-20230815-0644-OFFICIAL.zip) 을 올리고 싶은 경우 "git checkout twelve" 는 생략하고 커널 빌드
- Build Kernel
출처: https://github.com/CruelKernel/samsung-exynos9820
# Install prerequisites
# If you use ubuntu or ubuntu based distro then you need to install these tools:
sudo apt-get install build-essential libncurses-dev libtinfo5 bc bison flex libssl-dev libelf-dev heimdall-flash android-tools-adb android-tools-fastboot curl p7zip-full
# Install avbtool
wget -q https://android.googlesource.com/platform/external/avb/+archive/refs/heads/master.tar.gz -O - | tar xzf - avbtool.py
chmod +x avbtool.py
sudo mv avbtool.py /usr/local/bin/avbtool
# Install mkbootimg
wget -q https://android.googlesource.com/platform/system/tools/mkbootimg/+archive/refs/heads/master.tar.gz -O - | tar xzf - mkbootimg.py gki
chmod +x mkbootimg.py
sudo mv mkbootimg.py /usr/local/bin/mkbootimg
sudo mv gki $(python -c 'import site; print(site.getsitepackages()[0])')
# Install mkdtboimg
wget -q https://android.googlesource.com/platform/system/libufdt/+archive/refs/heads/master.tar.gz -O - | tar --strip-components 2 -xzf - utils/src/mkdtboimg.py
chmod +x mkdtboimg.py
sudo mv mkdtboimg.py /usr/local/bin/mkdtboimg
# Get the sources
git clone https://github.com/PixelExperience-Devices/kernel_samsung_exynos9820.git
cd kernel_samsung_exynos9820
git checkout twelve
git clone --depth=1 https://github.com/kdrag0n/proton-clang.git
kernelSU를 받고,
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
커널 소스 코드를 수동으로 패치 (출처: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html)
(1) fs/exec.c 파일 패치
다음 코드 추가
extern int ksu_handle_execveat(int *fd, struct filename **filename_ptr, void *argv, void *envp, int *flags);
ksu_handle_execveat(&fd, &filename, &argv, &envp, &flags);
(2) fs/open.c 파일 패치
다음 코드 추가
extern int ksu_handle_faccessat(int *dfd, const char __user **filename_user, int *mode, int *flags);
ksu_handle_faccessat(&dfd, &filename, &mode, NULL);
(3) fs/read_write.c 파일 패치
다음 코드 추가
extern int ksu_handle_vfs_read(struct file **file_ptr, char __user **buf_ptr, size_t *count_ptr, loff_t **pos);
ksu_handle_vfs_read(&file, &buf, &count, &pos);
(4) fs/stat.c 파일 패치
다음 코드 추가
extern int ksu_handle_stat(int *dfd, const char __user **filename_user, int *flags);
ksu_handle_stat(&dfd, &filename, &flags);
(5) Makefile 수정
빌드 에러나기 때문에, 515번째줄 주석 처리
다음 명령어 순서대로 입력해서 커널 빌드. 대략 20분정도 소요됨.
export PATH=~/kernel_samsung_exynos9820/proton-clang/bin:${PATH}
make O=out ARCH=arm64 CC=clang exynos9820-beyond1lte_defconfig
make O=out ARCH=arm64 CC=clang CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnueabi- AR=llvm-ar NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump STRIP=llvm-strip -j12
'Information Security > Android' 카테고리의 다른 글
Frida-portal 사용법 (0) | 2023.12.01 |
---|---|
Attach Frida Using Frida-gadget Zygisk Module (0) | 2023.11.27 |
Galaxy S9 PixelExperience 13 + KernelSU (9) | 2023.10.27 |
Move User Certs KernelSU Module (0) | 2023.10.21 |
Galaxy S10 LineageOS 12 + KernelSU (4) | 2023.10.03 |