XCTF-mobile app3

本文介绍了对一个安卓应用(.ab文件)进行逆向分析的过程,包括文件提取、数据库解密及解密脚本的编写。通过分析MainActivity的源码,获取了加密密码,然后利用dex2jar转换.dex文件为.jar,进一步理解加密算法。最终,利用解密密钥成功打开SQLite数据库,揭示了Base64编码后的flag。
摘要由CSDN通过智能技术生成

app3-安卓逆向
题目下载地址

1.提取文件

下载题目后得到一个是.ab 后缀名的文件,查下资料

什么是一 .AB 文件?
Android的SDK(软件开发工具包)程序创建并访问附加的文件.ab扩展。该软件有一个版本的基于Microsoft Windows的系统,用户可以安装其他版本的基于Mac平台。而Android调试桥应用程序是一个小程序集成到Android的SDK软件,这是一个命令行程序。文件中的AB格式的内容包括参考使用Android开发项目的输出文件的开发库和其他文件。这些AB文件是用来还原关联使用Android SDK软件创建一个Android应用程序开发项目的数据备份文件。谷歌开发了Android SDK软件和AB文件格式。一般,AB文件不包括APK文件,它们是Android移动应用程序本身,而只是快照和引用其他文件和元素。 “亚行备份-all”是一个命令的用户可以键入创建一个Android SDK项目的AB备份文件,并将其存储在该项目中的目录。在另一方面“亚行备份-apk -all”创建与目录相关的APK文件,其中Android的SDK项目发现了一个AB的备份文件。在“亚行恢复backup.ab”命令将恢复应​​用程序

使用abe-all.jar文件吧.ab文件转换为tar文件

abe-all.jar unpack app3.ab app3.tar

解压后得到
在这里插入图片描述
文件中有两个db文件,这是数据库文件,尝试使用DB Browser for SQLite打开,发现数据库被加密了,尝试逆序APP找到密码
在这里插入图片描述
a文件夹下有一个APK文件,更改app安装包后缀为zip,
在这里插入图片描述
把这四个文件提取出来。
使用dex2jar将dex文件转换为jar文件,得到一个jar文件,这个文件中包含了大部分程序逻辑

d2j-dex2jar.bat classes.dex

2.分析文件

⾸先查看MainActivity,可以看到onCreate后,调⽤了a函数。
在这里插入图片描述
重点分析这里可以的到密码
aVar.a(contentValues.getAsString(“name”), contentValues.getAsString(“password”));
得到Stra1234
在这里插入图片描述
把这个分解下
在这里插入图片描述
tmp = aVar.b(a, contentValues.getAsString(“password”))
在这里插入图片描述
这里调用了b类中的a方法只传递了第一个参数(“Stra1234”)。
再分析b类中的a方法
在这里插入图片描述
经过b类中的a方法加密后返回一个值,假设为tmp。这里的a是“Stra1234”。
aVar.a(a + tmp ).substring(0, 7)
这里接着调用a类中的a方法,因为这里只有一个参数所以调用的是这个。
在这里插入图片描述
这个方法中调用了b类的b方法,参数是“Stra1234”+ tmp+"yaphetshan"
在这里插入图片描述
最后的返回值要取前7位,大概算法分析完成
a方法和b方法我们可以直接复制出来用,就不用使用别的语言再单独实现了,其实这个算法并不复杂

3.解密脚本

/*
* @Author: 夏了茶糜
* @Date:   2020-03-22 21:16:41
* @Last Modified by:   夏了茶糜
* @Last Modified time: 2020-03-22 21:26:55
*/
import java.security.MessageDigest;

public class main {
   
    public static void main(String[] args)
    {
   
        String str2 = "Stra1234";
        String str3 = a(str2);
        System.out
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值