**타커뮤니티에도 같은 글을 작성한 적이 있습니다. 타커뮤니티에 보이는 이 글들은 불펌글이 아닌 제 글입니다.
서론
이전에 동일 커뮤니티에 같은 주제의 글 ([230413 수정됨] 롯데 샬롯홈의 안드로이드OS와 시스템에 관하여)을 작성한 적이 있습니다. 이 글을 처음 접하시는 분은 이전 글을 보고 오시면 큰 도움이 됩니다.
1. 2022년판 펌웨어 개요

* 이미지가 많아질 것을 우려해서 콜라주 하여 넣었습니다. 자세히 보고 싶은 이미지가 있다면 댓글로 적어주세요. 구글 드라이브 링크를 추가 첨부하겠습니다.
2022년판 펌웨어는 이전 글에서 서술한 내용과 같이 단순히 구성되어 있습니다. 2번째 사진의 버튼 배열은 왼쪽부터
크로미움, ZOOM, 유튜브(Webview Test Shell), 알람, 타이머, 백 버튼, 밝기, 음량, 자체 설정, 홈 버튼 입니다.
2. 운영체제 빌드
| 모델 | LD-800 |
| Android 보안 패치 수준 | 2019년 1월 5일 |
| 커널 버전 |
4.9.82-perf (gcc version 4.9.x 20150123 (prerelase) (GCC) ) bytes77@43-server #5 Mon Nov 14 14:59:18 KST 2022 |
| 빌드 번호 | OPM1.171019.026 dev-keys |
| publicVersion | 버전 03.00.00 |
3. ADB 연결/시스템 prop 확인

다른 기기와 같이 설정-시스템-휴대전화 정보에서 빌드 번호를 5연타하여 개발자 옵션 진입이 가능합니다. OEM 잠금 해제 메뉴도 있으나 부트로더의 정책으로 동작하지는 않고, USB 디버깅 메뉴를 통해 ADB Over TCP/IP 통신이 가능합니다.
(루트쉘이 아닌 일반 ADB 쉘로 동작합니다)
이 펌웨어에서는 기기의 prop를 볼 수 있으니 확인해 보겠습니다.
adb shell getprop
ro.boot.flash.locked: 1
ro.boot.vbmeta.device_state: locked
ro.boot.verifiedbootstate: green
ro.boot.veritymode: enforcing
ro.secure: 1
ro.adb.secure: 1
ro.debuggable: 0
sys.usb.config: diag,adb
ro.crypto.state: encrypted
ro.crypto.type: block
ro.crypto.fs_crypto_blkdev: /dev/block/dm-2
USB 포트에서 diag,adb 사용이 가능하다는 내용이 있고, 부트로더는 잠긴 상태임을 확인 가능합니다.
4. 하드웨어 해킹

바닥 부분의 원형 고무를 제거합니다.

모든 포트에 납땜해 줍니다.

USB 인식 오류로 인해 D-Plus와 D-Minus에 꼬임선 구조를 취해 노이즈를 상쇄시켜 간이적으로 인식에 성공했습니다.
혹시나 저항 추가 등 인식률을 높이는 방법을 알고 계신 분들은 댓글 부탁드립니다.
VBUS는 연결 시 과전압으로 기기가 꺼지므로 연결하지 않았는데, 이로 인해 일반 부팅 모드에서 인식이 되지 않습니다.
5. fastboot 접속
fastboot를 접속하는 별도의 하드웨어 키가 알려지지 않은 관계로 다음 명령으로 fastboot에 접속합니다.
Bus 001 Device 007: ID 18d1:d00d Google Inc. Xiaomi Mi/Redmi 2 (fastboot)
adb reboot bootloader
이후 부트 스플래시 창에 멈추며 기기가 인식됩니다.
fastboot getvar all
실행합니다.
| 파티션 | 타입 | 크기(hex) |
| userdata | ext4 | 0x1c6c79e00 |
| hfs | raw | 0xa00000 |
| exdata | raw | 0x8ad00000 |
| exprop | raw | 0x1000000 |
| logdump | raw | 0x4000000 |
| dpo | raw | 0x2000 |
| msadp | raw | 0x40000 |
| apdp | raw | 0x40000 |
| keymasterbak | raw | 0x100000 |
| keymaster | raw | 0x100000 |
| cmnlib64bak | raw | 0x100000 |
| cmnlib64 | raw | 0x100000 |
| cmnlibbak | raw | 0x100000 |
| cmnlib | raw | 0x100000 |
| lksecappbak | raw | 0x20000 |
| lksecapp | raw | 0x20000 |
| mcfg | raw | 0x400000 |
| syscfg | raw | 0x80000 |
| mdtp | raw | 0x2000000 |
| dip | raw | 0x100000 |
| mota | raw | 0x80000 |
| limits | raw | 0x8000 |
| oem | raw | 0x10000000 |
| config | raw | 0x8000 |
| keystore | raw | 0x80000 |
| misc | raw | 0x100000 |
| persist | raw | 0x2000000 |
| cache | ext4 | 0x10000000 |
| vendor | raw | 0x40000000 |
| system | ext4 | 0xc0000000 |
| devinfo | raw | 0x100000 |
| recovery | ext4 | 0x4000000 |
| boot | raw | 0x4000000 |
| vbmetabak | raw | 0x10000 |
| vbmeta | raw | 0x10000 |
| dtbobak | raw | 0x800000 |
| dtbo | raw | 0x800000 |
| abootbak | raw | 0x100000 |
| aboot | raw | 0x100000 |
| splash | raw | 0xb00000 |
| sec | raw | 0x4000 |
| fsg | raw | 0x180000 |
| DDR | raw | 0x8000 |
| modemst2 | raw | 0x180000 |
| modemst1 | raw | 0x180000 |
| dsp | raw | 0x1000000 |
| devcfgbak | raw | 0x40000 |
| devcfg | raw | 0x40000 |
| tzbak | raw | 0x200000 |
| tz | raw | 0x200000 |
| rpmbak | raw | 0x80000 |
| rpm | raw | 0x80000 |
| sbl1bak | raw | 0x80000 |
| sbl1 | raw | 0x80000 |
| ssd | raw | 0x2000 |
| fsc | raw | 0x400 |
| modem | raw | 0x5800000 |
파티션 정보를 알아낼 수 있었습니다.
fastboot flashing unlock fastboot reboot fastboot boot XX.img
등의 명령어는 작동되지 않습니다.
(boot 명령어는 이미지 파일은 올라가나 부팅이 진행되지 않습니다.)
6. EDL
adb reboot edl
명령어로 접속 가능합니다.
공개된 어떤 MSM8953 firehose를 넣어도 인증이 통과되지 않습니다.
(불안정적 USB 연결로 인한 문제일 수도 있습니다)
HWID: 0x000660e101730100 (MSM_ID:0x000660e1,OEM_ID:0x0173,MODEL_ID:0x0100)
CPU detected: "APQ8053"
PK_HASH: 0xeb1e3fa94d5525de6dd25673e382c0bf8309c3454c187cfe2505b28530ad404bcc3153a80293939b90d02d3bf8b23e0292e452fef662c74998421adad42a380fcc3153a80293939b90d02d3bf8b23e0292e452fef662c74998421adad42a380f
Serial: (Redacted)
7. UART
Baud 115200으로 접속 가능하고, 쉘로 진입되지는 않습니다.
8. 업데이트
LDDms.apk를 분석해 보면,
https://dev.soe.vcp.lotte.com롯데닷컴
https://stg.soe.vcp.lotte.com롯데닷컴
(현재 모두 닫힌 서버) 에서
GET /v1.0/devices/update
를 이용하여 업데아트 정보를 json 값으로 받아오고
PUT /v1.0/devices/version
을 통해 기기의 버전을 서버에 등록합니다.
downloadFile(url, savePath)
펌웨어 링크에 접속하여 펌웨어 패키지 다운로드 후
위에서 받은 json과 MD5 해시 검증 후
/exdata/ota.zip/
경로에 저장합니다.
그 후, libdmsua.so가 업데이트를 설치하는 구조를 갖습니다.
이후
PUT /v1.0/devices/update/callback
를 통하여 서버에 보고합니다.
서버에 OTA 파일 예시 링크가 있어 접속하였으나 서버가 닫혀 접속되지 않습니다. EMMC 칩오프를 통하여 exdata 파티션에서 OTA 파일을 추출하면 자체 프록시서버를 통하여 기기를 속여 복지관 펌웨어를 설치하여 사용이 불가한 기기를 어느정도 사용 가능하도록 할 수 있을 것 같습니다.
9. 실사용/긱벤치
복지관 펌웨어서는 APK 설치가 가능하므로 유튜브 머신으로 사용이 가능합니다.

긱벤치 결과는 처참합니다......
PS.
중학교 2학년 때 시작한 연구가 고등학교 3학년 때 까지 이어졌습니다. 올해 개인적 프로젝트로는 마지막 프로젝트인데 결과가 만족스럽지는 않은 것 같습니다. 혹시나 연구를 위해 복지관 펌웨어가 설치된 기기 대여를 원하시면 기꺼이 빌려드리겠습니다.
그리고 혹시 EDL 부트로더 관련이나 USB 연결 관련해서 잘 아시거나, 이전에 이 기기 개발하신 분이 계시면 댓글 또는 1082hj@gmail.com 메일로 많은 의견 주시면 감사하겠습니다.
그런데 샬롯홈 복지관 펌웨어라는 것도 있군요^^ 좋은 글 감사합니다.!!