阿里CTF apk_3题解:
1. APK作了加壳,但并没做其他处理,直接ida调试,dump出dex文件
2. 反编译dex文件,发现存在一个WebviewActivity,实现了与js交互的接口
3. 找到其中的接口实现,有一个showToast方法,即题目要求被调用的方法
解法一:
直接查看showToast方法中的Toast内容,这只针对解题所用。
解法二:
根据js与java交互原理,html中调用showToast方法需要知道java类被映射后的别名。找到webViewActivity中的onCreate方法,发现名字是乱码"BQ1$*[w6G_",需要ListViewAutoScrollHelpern.decrypt_native方法解密。一种方法是,分析so算法或者通过logcat等方式得别名:SmokeyBear,另一种简单的做法是:直接在调用addJavascriptInterface之前添加,const-string v4, "ThomasKing"代码,将别名命名为:ThomasKing。我这里采用第二种方法。
知道了类名,就可以构建html了:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
</script>
</head>
<body>
<a onClick="window.ThomasKing.showToast()">showToast</a><br/>
</body>
</html>
push到手机测试,Toast出“祥龙!”。