Android逆向writeup,[原创]腾讯apk逆向系列WriteUp

0x00 前言

正在学习安卓逆向的萌新SR绝赞刷题中,昨天做了三道有意思的题目,感觉很适合入门,于是写了个wp发了出来

题目已上传至文章附件,想摸的dalao们可以看看(

0x01 APP1

工具:JADX,安卓设备/虚拟机

安装并打开app,是一个简单的 输入-校验 式app

我们用JADX打开apk,看一下反编译代码

首先打开xml文件,这里写明了app启动时打开的Activity,确定是MainActivity后转到反编译代码处

791b2bcbda69983a6d53cc0c18893c92.png

如图,很容易确定代码逻辑——简单的异或操作

flag即为"versionName"的各个字符与"versionCode"进行异或操作的结果

a17ac42cb36194f35a888ce0dc745334.png

跟进代码,找到需要的两个常量,写解题脚本

得到flag:W3l_T0_GAM3_0ne

本题结束

0x02 APP2

工具:JADX,安卓设备/虚拟机,IDA,adb

如同分析APP1一般,我们安装并打开APP2,同时使用JADX进行反编译

APP2界面上要求填写账号密码,但无论什么账号密码都有效,影响不大

对反编译代码进行分析,发现无论我们怎么输入,都会打开SecondActivity界面

同时发现代码中有一段校验

23ae7d51e4dbedb89d7f3b4c8da131f3.png

我们跟进加密方法,发现是个native方法,即利用JNI,调用写好在so文件中的函数

使用IDA打开so文件

9976058d3e96e5c69bed8f165214f528.png

从关键字AES_128_ECB_PKCS5Padding中即可知道加密方式

使用在线工具解密字符串,即可获得flag:“aimagetencent”

不过,得到的flag是错误的,我们继续分析代码

观察左侧的几个类,我们发现了第三个Activity:FileDataActivity

进入后发现存在使用了相同方式加密的字符串

48fa51ef635d8b5683ec8c51e566267b.png

解密后获得真正的flag:Cas3_0f_A_CAK3

提交后,考虑到我们在app中从未进入过FileDataActivity,决定打开这个Act一探究竟

使用adb自带的am命令(adb配置与连接的方法不多赘述)

手机app便跳转到了这个Activity,如图所示

050d51dfe44dfe1f3447f8db8058857e.png

使用这个方法,同样可以获得flag

本题结束

0x03 APP3

工具:JADX,DB Browser for SQLite,android-backup-extractor

题目文件是ab文件,即adb的备份文件,我们使用android-backup-extractor工具将其解压

压缩包内能找到apk文件和两个数据库文件

使用JADX打开apk,发现反编译出来的代码有点复杂(

我们还是跟踪到MainActivity处进行分析

9587d09a11919ee1d95774e4525eabd8.png

关键字demo.db告诉我们,要找的关键代码就在这里,简单阅读了下代码逻辑后得出以下结论:

程序对Strange和123456字符串进行了一些操作,作为数据库的密码

至于进行了什么操作,我们慢慢分析

首先,调用了Cipher类的"mo6317a"函数(此处由JADX的反混淆功能生成,不同设备可能有所不同),该函数的作用是取两个字符串的前四个字符进行拼接

即"Stra1234"

然后以得到的字符串为参数,调用了Cipher类的"mo6318b"函数,跟踪过去发现,该函数进行了MD5和base16操作

最后,在加密结果的首部填上"Stra1234",以此为参数调用”mo6316a“函数,该函数的作用是:在参数尾部接上”yaphetshan“,进行SHA-1和base16操作

得到结果的前八位即为数据库密码:ae56f99

2a9e398163f35aed335b398b864c55ce.png

c8c19743222db8f695c53c2bf59a6745.png

上方两个图片为Cipher类及其调用的加密类的代码,可以对照查看

使用DB Browserd打开db文件,输入密码,得到flag

72401403ff952796a6f6bc5fcd37e7a0.png

将其进行base64解密,拿到最终的flag:Tctf{H3ll0_Do_Y0u_Lov3_Tenc3nt!}

本题结束

0x04 结语

若有疑问可以在评论区提出!感谢各位的阅读与支持啦!

最后于 2021-4-8 17:41

被郁雨编辑

,原因:

上传的附件:

app1.apk

(1.54MB,29次下载)

app2.apk

(593.97kb,18次下载)

app3.ab

(8.43MB,22次下载)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值