티스토리 뷰
[CodeEngn] SmartApp 02
apk를 설치하면 서명이 되어있지 않아 설치할 수 없다고 뜬다.
apksign을 이용하여 apk에 서명을 추가해주었다.
서명을 추가한 apk를 다시 설치하면 정상적으로 설치가 된다.
설치된 app을 실행하면 key값을 볼 수 있었던 SmartApp 01 과 달리 FindKey :) 라는 문구만 볼 수 있다.
androidKiller로 apk를 디컴파일하여 소스코드를 보았다.
MainActivity.class의 소스코드를 보니, 현재 시각이 2013-11-02-12:35:03 이고 볼륨이 53일 때, keyString()을 생성하여 출력해주는 것을 볼 수 있었다.
package com.namdaehyeon.findkey2;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
@SuppressLint({"SimpleDateFormat"})
public class MainActivity
extends Activity
{
TextView aView;
public int Volume()
{
return 33;
}
public String keyString()
{
return Security.DecryptStr("-1c776f3a2fa678cae27879e87a74553c61009eefb037bbe2abdbd5e4314407e60000000000000000");
}
public String makeDate()
{
Date localDate = new Date();
return new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(localDate);
}
protected void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(2130903040);
this.aView = ((TextView)findViewById(2131230720));
if ((makeDate() == "2013-11-02-12:35:03") && (Volume() == 53)) {
this.aView.setText(keyString());
}
}
public boolean onCreateOptionsMenu(Menu paramMenu)
{
getMenuInflater().inflate(2131165184, paramMenu);
return true;
}
}
그래서, 해당부분의 smali 코드를 수정하여 키 값을 보기로 했다.
.line 29
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->makeDate()Ljava/lang/String;
move-result-object v0
const-string v1, "2013-11-02-12:35:03"
if-ne v0, v1, :cond_0 // 같지 않을 경우 keyString을 생성하지 않고 점프
.line 30
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->Volume()I
move-result v0
const/16 v1, 0x35
if-ne v0, v1, :cond_0 // 같지 않을 경우 keyString을 생성하지 않고 점프
.line 31
iget-object v0, p0, Lcom/namdaehyeon/findkey2/MainActivity;->aView:Landroid/widget/TextView;
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->keyString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
현재 시각이 2013-11-02-12:35:03, 볼륨이 53이 아니면 keyString을 생성하지 않고 바로 리턴부분으로 점프하는 분기문을
같을 때 점프하도록 수정하여 같지 않아도 keyString을 생성하도록 바꿔주었다.
.line 29
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->makeDate()Ljava/lang/String;
move-result-object v0
const-string v1, "2013-11-02-12:35:03"
if-eq v0, v1, :cond_0 // 같을 경우 점프하도록 수정하여, 비교값과 같지 않아도 keyString을 생성하도록 함.
.line 30
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->Volume()I
move-result v0
const/16 v1, 0x35
if-eq v0, v1, :cond_0 // 같을 경우 점프하도록 수정하여, 비교값과 같지 않아도 keyString을 생성하도록 함.
.line 31
iget-object v0, p0, Lcom/namdaehyeon/findkey2/MainActivity;->aView:Landroid/widget/TextView;
invoke-virtual {p0}, Lcom/namdaehyeon/findkey2/MainActivity;->keyString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
리컴파일한 apk를 설치하여 실행하면 키값을 볼 수 있다.
key: November Rain
'CTF > App' 카테고리의 다른 글
[CodeEngn] SmartApp 03 (0) | 2017.04.22 |
---|---|
[CodeEngn] SmartApp 01 (0) | 2017.04.20 |
[2016 SECCON] Rock Paper Scissors (0) | 2017.04.11 |
[2016 HolyShield] SoundMeter (0) | 2017.04.11 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday