0x00 前言
今天突然来一看,发现bugku更新了,正好来看一看。
本来以为只是一道前道题的。结果里面的道道还是有一点多的。我们接下来就分享一下思路,以及做法。
0x01 start
其实拿到这种都是要先安装看一下的。我能说我有一点懒么。
你们自己看一看就好。
我们使用AndroidKiller反编译。
然后回编译测试一下。
一道签到题,连回编译都不行了???
试一下直接看java源码
好吧,这些都没用了。不过不要担心,我们还有其他的办法看到源码。
APK包其实就是zip包,至于为什么可以自行百度。所以我们解压。
然后我们dex2jar。
然后打开jar。
然后就可以开开心心的看源码了。
然后我们接着看。
发现这里有一个对比。
其实我本来以为这道题我做出来了。
paramString.equals(new String(Base64.decode(new StringBuffer(getFlag()).reverse().toString(), 0))))
解析一下就是先获取getFlag()
然后就是reverse() 反转字符串
然后base64解密
就是这样一个操作。
然后getFlag()看一下
getBaseContext().getString(2131427360);
这个就很坑啦。
2131427360,这里出现一个数字,明明就是一道前道题,考的也太多了吧。
这个肯定要系统的了解过,才知道2131427360其实就是一个资源管理分配的id。
这里还要知道Android开发里,这个id是由R…什么来管理。所以,我们才有思路就是在R文件里找到这里ID。
然后找到toString。
好了,这里又要考一个知识点,toString是一个字符串,要了解一定的开发知识,才能知道字符串的管理地方是在string.xml文件里。
然后就看到字符串。
991YiZWOz81ZhFjZfJXdwk3X1k2XzIXZIt3ZhxmZ
然后基本就是正常套路。
ZmxhZ3tIZXIzX2k1X3kwdXJfZjFhZ18zOWZiY199
然后解密。
最后,还有一个坑就是,这个答案是不对的。。。
这里多了一个小横杆。
然后