티스토리 뷰
[CodeEngn] SmartApp 03
SmartApp03 도 마찬가지로 서명을 추가하고, apk를 설치해준다.
app을 실행하면 랜덤값으로 남은 계단이 주어지고, 버튼을 클릭하면 현재위치가 1씩 증가한다.
아무래도 주어진 계단수만큼 버튼을 클릭해야 키 값이 주어지는 것 같다.
AndroidKiller를 이용하여 apk를 분석해보기로 했다.
package com.namdaehyeon.findkey3;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity
extends Activity
{
TextView aView;
TextView bView;
ImageButton button;
TextView cView;
public void addListenerOnButton()
{
this.button = ((ImageButton)findViewById(2131230726));
this.aView = ((TextView)findViewById(2131230724));
this.bView = ((TextView)findViewById(2131230725));
this.cView = ((TextView)findViewById(2131230727));
this.aView.setText(String.format("%d", new Object[] { Integer.valueOf(randomRange(44444)) }));
this.bView.setText("0");
this.cView.setText(myString());
this.button.setOnClickListener(new View.OnClickListener()
{
Integer myStairs = Integer.valueOf(Integer.parseInt(MainActivity.this.bView.getText())); // 현재 계단
Integer stairs = Integer.valueOf(Integer.parseInt(MainActivity.this.aView.getText())); // 남은 계단
public void onClick(View paramAnonymousView)
{
if (this.stairs.intValue() - 1 != this.myStairs.intValue()) // 클릭이벤트가 발생했을 때, 현재 계단수가 남은 계단수 -1 과 같으면 키값을 출력해줌.
{
this.myStairs = Integer.valueOf(this.myStairs.intValue() + 1);
MainActivity.this.bView.setText(this.myStairs.toString());
return;
}
MainActivity.this.aView.setText(Security.DecryptStr("2736f6055dbad2d42f6d5b0135395cb29e0d086b67e1fa266a0a0d277f151e5b00000000000000000000")); // 키값으로 추정
MainActivity.this.bView.setText("0");
}
});
}
public String myString()
{
return "c0de3ngn.com";
}
protected void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(2130903040);
addListenerOnButton();
}
public boolean onCreateOptionsMenu(Menu paramMenu)
{
getMenuInflater().inflate(2131165184, paramMenu);
return true;
}
public int randomRange(int paramInt)
{
return (int)(Math.random() * 10000.0D) * (paramInt << 2);
}
}
MainActivity 소스코드를 보면
버튼을 클릭했을 때 현재 계단수 = 남은 계단수 - 1 이면 키를 출력해주고
그렇지 않으면 현재 계단수에 +1을 해주는 것을 알 수 있었다.
그래서 분기문을 수정하여 버튼을 클릭했을 때 키값이 나오도록 해보았다.
.line 71
iget-object v0, p0, Lcom/namdaehyeon/findkey3/MainActivity$1;->stairs:Ljava/lang/Integer;
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
add-int/lit8 v0, v0, -0x1
iget-object v1, p0, Lcom/namdaehyeon/findkey3/MainActivity$1;->myStairs:Ljava/lang/Integer;
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
if-ne v0, v1, :cond_0 // if-eq v0, v1, : cond_0 을 if-ne 로 수정
분기문을 if-ne 로 수정하여, 현재 계단수 = 남은 계단수 -1 이 아닐 때 키값이 나오도록 수정하고
버튼을 클릭하였더니 키값을 볼 수 있었다.
key : CodeEngn_4_Ever
'CTF > App' 카테고리의 다른 글
[CodeEngn] SmartApp 02 (0) | 2017.04.20 |
---|---|
[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