OnePlus Pad 3 변환 후 복구

잘못된 OCDT를 GhostLock으로 교체하는 방법

OPPO Pad 4 Pro 또는 OnePlus Pad 2 Pro를 OnePlus Pad 3 펌웨어로 변환한 뒤 펜 인식이나 부트로더 접근 문제가 생겼을 때, 잠긴 부트로더 상태에서 OCDT를 다시 쓰는 절차다.

먼저 읽기

이 작업은 복구용이다

부트로더 언락이 가능하다면 이 방법보다 부트로더를 언락한 뒤 fastboot에서 OCDT를 플래싱하는 쪽이 실패했을 때 복구하기 쉽다. 이 글은 부트로더 접근이 막혔거나 부트로더 언락이 불가능한 상태를 전제로 한다.

01 / 적용 대상

어떤 경우에 필요한가

이 절차는 GhostLock(CVE-2026-43499) 취약점으로 재부팅하면 사라지는 임시 root, 즉 탈옥 상태를 만든 뒤 잘못된 OCDT를 교체하는 방식이다. 아래 두 상황에 해당하지 않는다면 진행하지 않는 편이 안전하다.

A

펌웨어 변환 후 OCDT를 변환하지 않아 펜 인식이 되지 않는 경우

B

OCDT도 변환해 펜 인식은 되지만 부트로더 접근이 되지 않는 경우

B의 경우에는 이전에 본인이 백업해 둔 원래 OCDT가 필요하다. 백업이 없다면 부트로더 접근 불가 문제를 이 방식으로 되돌릴 수 없다. 인터넷에 올라온 다른 사람의 OCDT를 그대로 쓰는 것은 의미가 없다.

테스트 기준

이 글의 GhostLock 실행은 OxygenOS 16.0.9.400에서 확인했다. 더 높은 버전에서 같은 취약점이 계속 동작한다고 보장할 수 없다.

02 / 준비

KernelSU 앱과 ADB 준비

기기에는 KernelSU APK를 먼저 설치한다. GhostLock 실행이 끝날 때 waiting for su...에서 멈춰 있으면 KernelSU 앱에서 Shell에 root 권한을 부여해야 한다.

Windows에 Platform Tools 설치

Windows 터미널 또는 명령 프롬프트를 관리자 권한으로 열고 실행한다.

명령어
winget install --id Google.PlatformTools

설치가 끝나면 터미널 창을 완전히 닫았다가 다시 연다. 그래야 새 PATH가 반영된다.

관리자: Windows 터미널 읽기 전용
PS C:\> winget install --id Google.PlatformTools
찾음 Google Platform Tools [Google.PlatformTools]
패키지를 설치하는 중...
설치 완료

이제 새 터미널 창에서 adbfastboot 명령을 사용할 수 있다.

03 / GhostLock

GhostLock 바이너리 다운로드 후 실행

GhostLock 다운로드 버튼으로 ghostlock 바이너리를 받는다. 다운로드한 파일이 있는 폴더에서 터미널을 열고 아래 명령을 순서대로 실행한다.

명령어
adb push ghostlock /data/local/tmp/a/e
adb shell chmod 755 /data/local/tmp/a/e
adb shell /data/local/tmp/a/e

waiting for su...에서 멈춘 경우에는 KernelSU 앱을 열고 Shell 항목에 root 권한을 부여한다.

KernelSU 슈퍼유저 목록에서 Shell이 ROOT 상태로 표시된 화면
슈퍼유저 목록에서 Shell을 찾는다.
KernelSU Shell App Profile에서 슈퍼유저 토글이 켜진 화면
Shell의 슈퍼유저 토글을 켠다.
성공 예시 읽기 전용
[*] kernel: 6.6.118-android15-8-g2e6b9c3812c5-ab15114928-4k
[+] offsets matched: 6.6.118-android15-8-g2e6b9c3812c5-ab15114928-4k

[+] SELinux DISABLED

[*] child uid = 0
[+] child is root!
[+] root shell pid=11604 uid=0
[*] waiting for su...
KernelSU 앱 실행 후 Shell에 ROOT 권한 부여
[+] su ready, fixing SELinux policy
[+] load_policy done

위의 핵심 줄이 보이면 GhostLock 실행이 끝난 상태다.

KernelSU 홈 화면에서 OnePlus Pad 3 정보와 Jailbreak mode가 표시된 화면
탈옥 성공 시 KernelSU 앱 화면

04 / 백업

필요한 경우 현재 OCDT를 추출

A의 사례이고 기존 OCDT 백업이 없다면 현재 기기에서 OCDT를 먼저 추출한다. B의 사례라면 이 단계로는 문제를 해결할 수 없으므로, 예전에 백업해 둔 OCDT 파일을 사용해야 한다.

명령어
adb shell su -c dd if=/dev/block/bootdevice/by-name/ocdt of=/sdcard/ocdt.img
adb pull /sdcard/ocdt.img
명령 프롬프트 읽기 전용
C:\> adb shell su -c dd if=/dev/block/bootdevice/by-name/ocdt of=/sdcard/ocdt.img
256+0 records in
256+0 records out
131072 bytes (128 K) copied, 0.006 s, 21 M/s

C:\> adb pull /sdcard/ocdt.img
/sdcard/ocdt.img: 1 file pulled, 0 skipped. 17.0 MB/s (131072 bytes in 0.007s)

C:\>

PC에 ocdt.img가 복사되었는지 확인한다. 파일 크기가 128KB가 아니거나 dd가 실패했다면 다음 단계로 넘어가지 않는다.

05 / 수정

OCDT를 수정하고 다시 쓰기

헥스 에디터는 hexed.it을 사용하면 된다. 백업해 둔 ocdt.img를 열고, 지정된 바이트를 수정한다. OnePlus Pad 2 Pro 기준으로는 93 62 B37F 8E 5F로 바꾼다. OPPO Pad 4 Pro는 값이 다를 수 있지만 수정 위치는 동일할 가능성이 크다.

변경 전 93 62 B3
변경 후 7F 8E 5F
hexed.it에서 OCDT 바이트를 93 62 B3에서 7F 8E 5F로 수정하는 전후 비교
예시는 hexed.it 화면이다. 강조된 세 바이트만 바꾸고 저장한다.

수정해서 저장한 파일은 ocdt_new.img로 이름을 바꾸고, 기존 ocdt.img와 같은 폴더에 둔다. 그 다음 아래 명령으로 기기에 복사하고 OCDT 파티션에 쓴다.

명령어
adb push ocdt_new.img /sdcard/
adb shell su -c dd if=/sdcard/ocdt_new.img of=/dev/block/bootdevice/by-name/ocdt
adb shell su -c reboot
명령 프롬프트 읽기 전용
C:\> adb push ocdt_new.img /sdcard/
ocdt_new.img: 1 file pushed

C:\> adb shell su -c dd if=/sdcard/ocdt_new.img of=/dev/block/bootdevice/by-name/ocdt
256+0 records in
256+0 records out
131072 bytes copied

C:\> adb shell su -c reboot

records out과 복사된 바이트 수가 보이면 쓰기 명령이 완료된 것이다.

06 / 확인

재부팅 후 펜 페어링 확인

재부팅이 끝나면 OnePlus Pad 3에서 펜 페어링이 정상적으로 되는지 확인한다. nRF Connect로 강제 연결해서 쓰고 있었다면 기존 Bluetooth 연결을 삭제한 뒤 다시 페어링해야 할 수 있다.

의도대로 복구가 완료됐다면, 재부팅을 수행하면서 이미 탈옥은 풀린 상태이므로 KernelSU 앱은 설치 제거해도 된다.