buu [SCTF2019]Strange apk

本文详细介绍了如何对安卓APK进行动态分析,包括使用反射大师和 Frida 工具dump运行时DEX文件,以及如何通过解密和编码逻辑找出应用程序的入口点和关键解密过程。在分析过程中,揭示了字符串解密和加密算法,最终成功获取到隐藏的flag。整个过程展示了安卓逆向工程和动态分析的实践技巧。
摘要由CSDN通过智能技术生成

这个题目拿到题目后直接拖进模拟器里
在这里插入图片描述
是这个样子,我们也不尝试输入数值了(我不想看eorry之类的提示)

使用JEB打开apk,分析这个apk

我们需要寻找app入口点
打开Manifest

在这里插入图片描述
显然 入口点是sctf.demo.myapplication.t ,但是我们找不到,只能看到sctf.hello这个包。这可能是app动态释放文件

应对方法

整体的思路就是使用反射大师(安卓),frida dex dump(python)将app运行时候的dex给dump下来再进行分析。
安装反射大师具体步骤与使用教程

对dump下来的代码进行分析

在这里插入图片描述
找到关键位置sctf.demo.myapplication.t

但其在oncreate方法里面使用意图转到了sctf.demo.myapplication.MAIN
即sctf.demo.myapplication.s,并重写了onActivityResult根据返回结果进行操作
那我们不妨先分析sctf.demo.myapplication.s里面的逻辑

在这里插入图片描述
这里首先对输入字符串长度进行判断(length==30)
然后将输入字符串拆分成了两段前12位放入v1。并进行base64加密(v1=s.sctf(v1))然后通过后面if(v1.equals("c2N0ZntXM2xjMG1l"))这句话可以得到前12的内容。对c2N0ZntXM2xjMG1l解密可以得到 sctf{W3lc0me

接下来进入到sctf.demo.myapplication.t中对v2里的内容进行加密。

分析sctf.demo.myapplication.t
在这里插入图片描述
可以看到程序先将sycloverMD5后和sctf.demo.myapplication.s返回的v2一起作为参数传入到了f.encode

先去加解密网站上面拿到syclover的MD5 : 8bfc8af07bca146c937f283b8ec768d4

然后分析f.encode在这里插入图片描述
逻辑很简单,将之前传入的v2字符串按照偶数的方式(每隔一位放入一位)和syclover的md5放入一起形成新的字符串
再与~8t808_8A8n848r808i8d8-8w808r8l8d8}8比较 由于索引v3/v1其中的v1是传入的md5的length使得其每次都只能取到这个md5的索引0即第一位数字8 所以去除数字~8t808_8A8n848r808i8d8-8w808r8l8d8}8中的数字8即为剩下的flag
~t0_An4r0id-w0rld}

flag :flag{W3lc0me~t0_An4r0id-w0rld}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值