@Author:Y4tacker
@Time:2021/03/29
文章目录
- 安卓逆向-一次简单的静态分析
安卓逆向-一次简单的静态分析
首先尝试安装apk发现报错应用安装失败,之后尝试在010editor中查看dex文件头,发现没有问题,既然如此那只有一个解释了,可能是APK签名校验未通过,我直接把apk拖入andriod killer当中,成功反编译,之后点击编译生成签名的APK文件
首先静态分析,启动APK,发现要连续点击87654321次才行,这个简单,第一层页面自然是在Oncreate函数创建
@SuppressLint({"UseValueOf"})
protected void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(2130903040);
this.totalMyTotalNumber = new Integer(87654321);
this.totalNumber = ((TextView)findViewById(2131099648));
this.totalNumber.setText(this.totalMyTotalNumber.toString());
this.NowNumber = ((TextView)findViewById(2131099650));
this.button_add = ((Button)findViewById(2131099652));
this.button_add.setOnClickListener(this);
this.text_view = ((TextView)findViewById(2131099654));
}
在smili当中将0x5397fb1
改为0x1
即可实现只需点击一次即可,之后弹出说离成功只有一步之遥
有个细节的地方是发现这个窗口是通过新建弹窗实现的,在代码里面也能看到,
并且还给了一个andriod
的值
因此我们点击返回,发现了一个True flag
当然从代码当中也能看出
我们继续从代码跟踪这一串神秘字符,在success.java当中
再看看check函数,简简单单的用Java实现的SHA-1加密仅此而已
private String check(String paramString)
{
try
{
this.sysytemDigest = MessageDigest.getInstance("SHA-1");
this.sysytemDigest.reset();
this.sysytemDigest.update(paramString.getBytes());
return bytesToString(this.sysytemDigest.digest());
}
catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
{
for (;;)
{
localNoSuchAlgorithmException.printStackTrace();
}
}
}
因此我们只需要获得this.intent.getStringExtra("data")
这里面的值即可,我们知道
在当前Activity1使用startActvity(intent)或者startActivityForResult(intent, code)方法跳转到另一个Activity2之前,如果要传递数据给Activity2,则应执行:intent.putExtra(“String str1”, “String Key1”)或intent.putExtra(“Int str1”, “Int Key1”)
因此,我们在MainActivity当中寻找
即可得到flag为android