본문 바로가기
# write-up/- ctf

GoogleCTF 2017 - food

by ddddh 2017. 6. 19.

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