우리는 이북리더기 또는 스마트폰을 이용해 전자책을 보고있다.
근데 우리돈을 내고 다운받은 전자책을 리더기에서만 볼 수 있고, 실제 PDF 등으로 저장하려고 디바이스를 살펴보면 해당 파일이 암호화 되어 있는 것을 확인 할 수 있다. 하지만 난 공유는 안할꺼고 내가 편하게 아이패드에서 원하는 앱으로 책을 띄우고싶다.
이번 게시글에서는 작은 아이디어만 드릴려고 한다. 실제로 어떤 코드를 사용해서 복호화하고 이런 부분은 민감할 수 있기 때문이다.
(더군다나 구독서비스의 경우 해당 구독기간이 지나면 볼 수 없어야 하지만 PDF로 받으면 문제가 되지 않을까?)
필요한 스킬
내가 생각할 때 기본적으로 필요한 스킬...? 은 아래와 같다.
1. Frida 사용법 (스크립트 작성 & 실행..?)
2. 만약 내가 원하는 회사(어플)이 Frida 방지 또는 루팅 방지가 되어있는 경우 해당 방어를 우회할 수 있는 실력
3. 간단한 스크립트 작성(복호화정도..?)
이거 2개면 가능할 것 같다.
아이디어
1. 전자책 다운로드의 경우 오프라인 상태에서도 볼 수 있어야 한다. (온라인으로만 가능한 상태면 될수도 안될수도 있음)
2. 1에 따라서 오프라인 상태라면 앱내에 코드에 의해 암호화된 책이 복호화 되겠구나..?
3. 소스코드에서 복호화 되는 부분 or 암호화 하는 부분을 찾는다.
-> 요부분이 제일 핵심인데 대부분 암호화의 경우 java내 존재하는 라이브러리를 가져다 쓴다. 그러면 해당 라이브러리의 함수 또는 클래스를 프리다를 통해 후킹해 놓으면... 쉽게 찾지 않을까...? 하는 생각이 든다.
4-1 복호화를 찾음 -> 복호화 되는 파일을 그대로 땡겨오는 스크립트를 만든다
4-2 암호화를 찾음 -> 암호화에 사용되는 파라미터중 키와 알고리즘(Sha-256 같은) 을 가져와 복호화 스크립트를 만든다
실제로 구글에 리디 복호화 검색하면 DRM을 해제하는 많은 게시글이 있다. 그중에 내가 예전에 재미있게 읽은 블로그를 소개한다.
지금은 사라져서 아카이브가 떠진거 같다. 대충 아이디어는 비슷하다. 소스코드 분석을 통해 복호화 키를 만드는 곳을 찾았고, 해당 복호화 하는 툴을 만들어 자동으로 해제 하는 내용이다.
'Technical Docs > Android' 카테고리의 다른 글
[Frida] Root Check : getpid (0) | 2022.06.22 |
---|---|
[AVD] 환경구성 : 생성 및 환경변수 설정[AVD&ADB] / MAC & Windows (0) | 2022.06.21 |
Smali 수정으로 logcat 남기기 (0) | 2022.06.02 |
Manifest 구조를 알아보자 (0) | 2022.01.10 |
네임 맹글링 (Name Mangling or Name Decoration) (0) | 2021.12.30 |