zoukankan      html  css  js  c++  java
  • XCTF-boomshakalaka-3

    这题讲道理出的挺脑洞的,apk直接拖入jeb打开,找到主活动

     这里有两个方法,一个是onCreate()方法,还有一个是onCreateView()方法

     onCreate()方法调用了a这个对象的d方法,还调用了两次,onCreateView()方法调用是在onCreate()方法调用后才会调用

    里面也调用了a对象的d方法,现在跟进这个方法看看

     它里面调用了一个getSharedPreferences()方法,这个方法是会返回一个SharedPreference对象的,这个对象在安卓开发中

    用途就是保存一些配置信息的,不过是以键值对的形式保存在xml文件中,调用edi()方法后,返回一个edit对象,调用putString()方法

    将键值对保存到xml文件中,这里d方法,是先将data这个key所对应的值弄出来,然后和我们传入的字符串进行一个拼接,之后再保存

    到xml文件中,java层仔细看了半天发现,根本没有涉及到分数的函数,这里就是用ida,打开它的so文件

    搜索一下分数的字符串。

     发现好像是每到一定分数,都会往xml文件中添加对应的字符串,这里我先玩了一下,观察了一下xml文件的内容,以此来验证一下我的猜想

     那些通过Sharepreference对象保存的xml文件是在data/data/对应app包名/shared_prefs这个文件下的

    发现每次我刷新最高分数,都会在分数0的基础上所对应的字符串上,添加我ida里面看到的字符串,并每次结束都是以dz99结尾

    那么我大概就可以直接拼凑出字符串了,然后为什么联想到base64呢,因为onCreate()方法里面是放进来的一个是base64的编码后的东西

    所以可以联想到,这里真的脑洞

  • 相关阅读:
    (hdu 7.1.8)Quoit Design(最低点——在n一个点,发现两点之间的最小距离)
    [Windows]_[0基础]_[使用命令行工具dumpbin分析文件]
    《走开》反馈
    二分基础
    日历的问题C语言,C++(boost),python,Javascript,Java和Matlab实现
    Unity3D 游戏开发架构篇 ——性格一流的设计和持久性
    2015第54周四
    2015第54周三
    2015第54周二
    2015第54周一
  • 原文地址:https://www.cnblogs.com/YenKoc/p/13718257.html
Copyright © 2011-2022 走看看