安卓逆向学习 之 KGB Messenger的writeup(1)

该题的 github地址为https://github.com/tlamb96/kgb_messenger,apk的下载地址为apk,

总结

  1. 清楚由apk到java源码的整个反编译过程:dex2jar+ jd-gui
  2. 绕过或者去除判断语句的思路
  3. 作者使用keytooljarsigner进行的签名,和平时使用的方法不同

challenges

就是说你是国际秘密情报局的逆向工程师。今天早上,你的团队负责人指派你检查一个有问题的APP。据传有个特工斯特林·阿切尔曾与一些克格勃间谍接触并使用了这个APP。你的工作是对这个APP进行逆向,以核实谣言。

Alerts(Medium)

第一个问题就是说当我们打开这个APP时他会弹出一个很恶心的窗口(苏卡不列!!),让我们调查一下。
打开APP时的弹窗
点击exit直接就退出了。

获得FLAG

过程如下:

  • 此弹窗在主界面中所以先找到intent-filter中的主activity,首先用APKtool解包:
    在这里插入图片描述

  • 查看AndroidManifest.xml文件,发现com.tlamb96.kgbmessenger.MainActivity的属性如下:
    在这里插入图片描述

  • 所以将APK后缀改为zip后解压找到其中的dex文件用dex2jar反编译:
    在这里插入图片描述

  • 使用jd-gui打开查看java代码并找到上面的MainActivity,可以很清楚的看到里面的逻辑:
    在这里插入图片描述

  • 在onCreate中可以很明显的看到字符串的比较过程,若不满足条件就会弹窗,而且是会有两个弹窗。

  • 第一个字符串若是Russia就可通过条件判断。

  • 而第二个字符串与2131558400的字符串比较(这里是)

  • 转化为16进制为
    在这里插入图片描述

  • 这里直接用Androidkiller简化后续过程(其他在terminal中查找字符串的方法可以看作者的workthrough video)

  • 在Androidkiller中搜索此字符串,在pulic.xml中发现其name为User
    在这里插入图片描述

  • 在string.xml文件中找到name='User’的字符串得到具体的值 在这里插入图片描述

  • 使用base64解码可以获得FLAG值
    在这里插入图片描述

  • 或者在linux中输入命令:

echo "RkxBR3s1N0VSTDFOR180UkNIM1J9Cg" | base64 -d

最终破解思路

  • 在判断语句之前将s1和s2赋予这两个值就可以取消弹窗
    在这里插入图片描述

  • 使用android killer重新安装后打开app已经没有弹窗了至此alert破解完毕:
    在这里插入图片描述

  • 作者使用的方法是删除中间的所有无关语句从而达到效果。不过最后要注意末尾有一个goto:goto_0的语句要复制下来写到下面,是个return语句。
    在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值