리버싱
Zeta (구 Nutty)
0xff
2024. 4. 21. 06:08
Nutty가 새롭게 이름이 Zeta로 바뀌었다.
근데, 소스코드가 완전 통째로 바뀌어서 기존에 만들어뒀던 nutty client 구현체가 무용지물이 되어버렸다.
아무튼 분석을 시작해보자.
Nutty 시절에는 어플리케이션이 React native로 되어있었고, 별도의 보안 장치가 없어서 쉽게 디컴파일이 가능했었다.
Zeta로 넘어온 후에는 React native + hermes로 되어있었다.
Hermes란 React native에 최적화 된 자바스크립트 엔진이며, JS코드를 byte code로 컴파일해준다.
hermes로 컴파일 된 바이너리는 Hermes-dec을 사용해서 디컴파일 할 수 있다.
근데 말이 디컴파일이지, 바이너리로 컴파일 된 파일을 디컴파일 해봤자 그다지 보기 좋게 나오진 않는다.
JS코드라고 생각하지 못할만큼 Native한 output이 나왔다.
저걸 보고 사실상 소스코드를 해석하는건 불가능에 가깝다는 결론을 내렸다.
Zeta의 모든 통신은 HTTP로 이루어지니 MITM으로 이 데이터만 까봐도 부족하진 않았다.
추후 API 정리글 작성 예정...