2014. 10. 27. 00:38ㆍSecurity ★ Development/안드로이드 모바일 보안
* 틀린 내용이 있을 시 지적 부탁드립니다.
그냥 설치하려고하면 역시 안됩니다. zip파일로 만들어서 압축을 풀면 파일명들은 제대로 되어있지만 서명이 되어있지 않습니다. 서명을 해주고 설치하면 남은계단과 버튼이 하나 있습니다. 버튼을 눌러 계단을 모두 올라가면 키 값을 확인할 수 있습니다.
...
소스를 살펴봅니다.
androlyze를 이용합니다.
a, d, dx=AnalyzeAPK('./apk/SmartAppL03.apk', decompiler="dad")
* androlyze 버전이 낮아 decompiler 예약어가 안되는 분들은 are에서 androguard, androlyze를 업데이트 하는 것 보다 다른 리눅스에 새로 androguard를 설치하는 걸 추천합니다.
d.CLASS_Lcom_Namdaehyeon_findekey3_MainActivity_1.source()를 입력해 소스코드를 확인할 수 있습니다.
d. 까지 입력하고 tab을 누르면 어떤 패키지들이 있는지 확인할 수 있습니다. 적당해보이는 걸 골라줍니다.
언뜻 봐도 누른 계단수가 올라갈 계단 수와 같으면 긴 문자열을 복호화해서 보여주고 아니면 누른 계단수를 ++해준다는걸 알 수 있습니다.
stairs값을 낮춰줘보도록 하겠습니다.
d.CLASS_Lcom_Namdaehyeon_findekey3_MainActivity.source()도 같이 보면
이렇습니다.
stairs는 aView에서 가져오고 aView는 randomRange를 이용해 생성되고 있습니다.
좀 위에 randomRange메소드를 보면 랜덤값에 10000을 곱하고 인자로 받은 값을 4배 한 값과 곱해주고 있습니다.
저걸 바꿔줍니다. https://code.google.com/p/smali/downloads/list에서 smali와 baksmali를 다운받아줍니다.
backsmali를 이용해 classes.dex파일에서 smali파일들을 추출합니다.
그 후 radomRange 메소드의 코드를 보면 다음과 같습니다.
여기서 바꿔줘야 할 건 리턴값입니다. 그럼 위 프로세스가 어떻게 되든 특정값만 리턴되게 되고 aView는 그 값으로 설정될 것입니다.
.local v0, "random":l 아래에
const/4 v0, 0x1 을 추가해줍니다.
이 코드는 v0 변수에 1을 추가하라는 코드입니다.
그럼 randomRange는 항상 1을 리턴하게됩니다.
이제 다시 smali를 이용해 classes.dex를 만들어서 실행시켜봅니다.
'Security ★ Development > 안드로이드 모바일 보안' 카테고리의 다른 글
안드로이드 해킹대회 어플 문제 3 (0) | 2014.10.30 |
---|---|
smali 로그 코드 추가 (0) | 2014.10.29 |
안드로이드 해킹대회 어플 문제 1 (0) | 2014.10.14 |
안드로이드 진단 도구 (0) | 2014.10.05 |
안드로이드 어플 진단 4 (0) | 2014.10.01 |