Google CTF 2017 - food
tag - reversing.
안드로이드 애플리케이션 'food.apk'가 주어진다.
'classes.dex' 파일을 추출해 디컴파일하면 cook.so의 라이브러리를 가져오는 걸 확인할 수 있다.
'/lib/x86/libcook.so'를 IDA로 분석해 보면 fopen, fwrite, fclose, fgets, etc 를 사용해 새로운 'classes.dex' 를 만들어주는 걸 확인할 수 있다.
'libcook.so' 파일 안에 새로운'classes.dex' 데이터가 들어가 있음을 확인 했으니 'Hxd'를 사용하여 classed.dex 시그니쳐를 검색해 준다.
'classes.dex'를 carving해서 만든 뒤 디컴파일하면 암호화 된 flag data와 복호화 루틴은 알 수 있다.
하지만, cc() 함수의 데이터가 더미 값으로 차 있어 답을 알 수 없다.
'cook.so' 파일을 다시 분석해 보면 qmemcpy로 off_15A0의 0x90 byte를 가져와 0x5a를 XOR 해주고 void cc() 데이터에 옮겨준다.
void cc() 를 정상적인 데이터로 바꿔 준 후 분석하면 다음과 같이 나오게 되며 이를 토대로 복호화 연산을 하면 flag가 나온다.
'# write-up > - ctf' 카테고리의 다른 글
[seccon 2021] Reversing - flag (2) | 2021.12.17 |
---|---|
Codegate 2019 - The Matirx (5) | 2019.01.30 |
HUST 2017 - Mystic Crypt (0) | 2017.06.06 |
[DEFCON 2017] - pegem (2) | 2017.05.10 |
[Plaid CTF 2017] zamboni (0) | 2017.05.02 |