메뉴 건너뛰기

조회 수 9598 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
먼저 카카오톡 apk 파일을 부셔버립니다!!
쪼개고 나면 다음과 같은 화면이 나옵니다.. 위의 링크의 글에 잘 따라가다 보면
다음과 같은 결과를 얻을 수 있습니다.

c0127168_51d726b758e89.jpg



이제 소스들을 본격적으로 해부해보겠습니다..

기본적으로 난독화를 해놓습니다. 이렇게 소스 수준까지 쉽게 복구가 가능하기 때문에(자바의 특징이죠)
난독화라는 것은 복구한 소스를 악용하거나 보호하기 위해서 소스를 읽기 어렵게 만드는 것입니다.
검색해보면 여러가지 프로그램들이 있습니다. 하지만 이것도 한계가 있죠..

friends에 해당하는 값을 운좋게 찾아냈는데
찾는 요령은 import 등 난독화 되지 않는 부분을 유심히 봐야 합니다.
난독화가 아무리 잘되어도 기본 import 하는 값들은 다른 문자로 대체하지 못하기 때문에
db나 hash 같은 유사 단어들을 찾아 다녀야 합니다.

위의 요령은 둘째치고 첫째로 워낙 함수들과 변수들이 많기 때문에 abcd에서 z까지 모두 다 사용해서 난독화를 해도
한계가 있었는지 운 좋게 db와 friend 라는 값은 난독화가 안되어있습니다.
심지어 그 내부 소스까지 대부분 그대로입니다.

경로는 com - kakao - talk - db - model - Friend 이렇게 되겠습니다.

여기서부터 이제 본격적인 시작입니다. 여기서 friends 테이블의 스키마가 잘 있는지 인사하고 출발하겠습니다.
c0127168_51d728b62db14.jpg


이제 이 값들이 암호화 되는데는 HashMap 이라는 클래스가 사용되었고 ...

점점 자바 강의가 되어가는것 같지만 계속 해보겠습니다..
원하는 것은 네전화번호에 집중해서 시작하겠습니다.
알고리즘을 찾아내고야 말겠다는 의지로 시작하겠습니다.

frineds 테이블을 암호화 시켜야 하니 이 클래스 내에 암호화 방법이 있을것이란 생각에
아래 com.kakao.skeleton.d.b 라는 클래스로 들어가봅니다.
여러 삽질을 통해서 skeleton이 암호화와 관련이 있다는 것이 느껴졌기에 더 확신을 가지고 뒤져봅시다.

또 기타 뒤지다가 나온 값들이 있는데 이것은 차후 더 생각해봐야 할 문제인듯 합니다.
클래스 위치는 com.kakao.skeleton.q.ab 입니다. 이상한 문자들이 들어있구요.
중요한 암호화 함수가 있는 클래스는 다음 위치입니다.
com.kakao.skeleton.g.y
내용과 같습니다..
c0127168_51d7b08246cf2.jpg


하나씩 살펴보면 암호화 방식이 PBEWITHSHAAND256BITAES-CBC-BC와 AES/CBC/PKCS5Padding 라는 것을 알 수 있고
(위 암호화 방식이 뭔지는 저도잘모릅니다 ㅜ.. 이제 알아봐야겠군요@.@)
위에 cipher c 와 cipher d 를 통해서 암호화 복호화가 이뤄진다는 것을 알 수 있습니다.
a는 iv 에 해당하는듯 하고
b는 salt 에 해당하는듯 합니다.


  1. 안드로이드 - RecyclerView 안에 RecyclerView 구현하기

    Date2021.04.02 Views502
    Read More
  2. 안드로이드 - Json 파싱하기

    Date2021.04.02 Views828
    Read More
  3. 안드로이드 - 타이머(Timer) 구현하기

    Date2021.04.01 Views1368
    Read More
  4. 안드로이드 - SQLiteDatabase 구현하기

    Date2021.04.01 Views241
    Read More
  5. 안드로이드 - 리사이클러 뷰(RecyclerView) 구현

    Date2021.04.01 Views388
    Read More
  6. 안드로이드 - 네비게이션 드로어(Navigation Drawer)를 활용하여 슬라이드 메뉴 구현하기

    Date2021.04.01 Views1853
    Read More
  7. 안드로이드 - 툴바(ToolBar)를 사용하여 앱바(App Bar) 구현하기

    Date2021.04.01 Views448
    Read More
  8. 안드로이드 - 프로그레스바(ProgressBar) 구현하기

    Date2021.04.01 Views451
    Read More
  9. 안드로이드 - AsyncTask 구현 예제

    Date2021.04.01 Views280
    Read More
  10. 안드로이드 - 액티비티(Activity)와 액티비티 생명 주기(Activity Life Cycle)

    Date2021.04.01 Views225
    Read More
  11. 안드로이드 - 리스트뷰(ListView) 구현

    Date2021.04.01 Views490
    Read More
  12. 안드로이드 - 컨텍스트 메뉴(Context Menu) 사용 예제

    Date2021.04.01 Views206
    Read More
  13. 안드로이드 - 옵션 메뉴 (Option Menu) 구현 방법

    Date2021.04.01 Views283
    Read More
  14. 안드로이드 - 명시적 인텐트(Explicit Intent)와 암시적 인텐트 (Implicit Intent)

    Date2021.04.01 Views324
    Read More
  15. 안드로이드 - 날짜 및 시간 정보 입력받기 (DatePickerDialog / TimePickerDialog)

    Date2021.04.01 Views1759
    Read More
  16. 안드로이드 - setContentView()와 레이아웃 전개자(LayoutInflater)

    Date2021.04.01 Views227
    Read More
  17. 안드로이드 - AlertDialog 사용하여 알림창 띄우는 방법 총정리

    Date2021.03.31 Views685
    Read More
  18. 안드로이드 - SnackBar를 사용해 팝업창 띄우기

    Date2021.03.31 Views279
    Read More
  19. 안드로이드 - 토스트(Toast) 메시지 사용하기.

    Date2021.03.31 Views321
    Read More
  20. 안드로이드 - 액티비티(Activity)로부터 결과 데이터 받아오기

    Date2021.03.31 Views483
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved