首页
社区
课程
招聘
[原创]腾讯apk逆向系列WriteUp
发表于: 2021-4-8 17:38 10927

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

2021-4-8 17:38
10927

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

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

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

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

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

如图,很容易确定代码逻辑——简单的异或操作
flag即为"versionName"的各个字符与"versionCode"进行异或操作的结果
图片描述
跟进代码,找到需要的两个常量,写解题脚本

得到flag:W3l_T0_GAM3_0ne

本题结束

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

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

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

同时发现代码中有一段校验 图片描述
我们跟进加密方法,发现是个native方法,即利用JNI,调用写好在so文件中的函数

使用IDA打开so文件
图片描述
从关键字AES_128_ECB_PKCS5Padding中即可知道加密方式
使用在线工具解密字符串,即可获得flag:“aimagetencent”

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

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

进入后发现存在使用了相同方式加密的字符串 图片描述
解密后获得真正的flag:Cas3_0f_A_CAK3

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

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

手机app便跳转到了这个Activity,如图所示
图片描述
使用这个方法,同样可以获得flag

本题结束

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

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

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

我们还是跟踪到MainActivity处进行分析
图片描述
关键字demo.db告诉我们,要找的关键代码就在这里,简单阅读了下代码逻辑后得出以下结论:

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

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

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

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

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

得到结果的前八位即为数据库密码:ae56f99
图片描述
图片描述
上方两个图片为Cipher类及其调用的加密类的代码,可以对照查看

使用DB Browserd打开db文件,输入密码,得到flag 图片描述
将其进行base64解密,拿到最终的flag:Tctf{H3ll0_Do_Y0u_Lov3_Tenc3nt!}

本题结束

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

 
 
 
#include <cstdio>
 
int main()
{
    char str[] = "X<cP[?PHNB<P?aj";
    int num = 15;
    for(int i = 0; i < 15; i++)
    {
        printf("%c", str[i] ^ num);
    }
}
#include <cstdio>

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-4-8 17:41 被郁雨编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 529
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
过于简单,可以试着加大难度挑战自己,或者做下看雪ctf
2021-4-8 21:39
0
雪    币: 529
活跃值: (1005)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
ctf逆向方向的精髓在于算法逆向和动调,在此基础上去学习大量进阶的东西,诸如各种反调试ollvm混淆虚拟机符号执行等
2021-4-8 21:47
0
雪    币: 38
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
_air ctf逆向方向的精髓在于算法逆向和动调,在此基础上去学习大量进阶的东西,诸如各种反调试ollvm混淆虚拟机符号执行等
好的!感谢师傅指点,会慢慢学习的(
2021-4-9 09:08
0
雪    币: 1750
活跃值: (1390)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
今年的还挺简单的)
2021-4-9 14:19
0
雪    币: 499
活跃值: (2189)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
6
这是哪的题? 今年新出的吗?
2021-4-13 13:39
0
雪    币: 499
活跃值: (2189)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7
wx_Dispa1r 今年的还挺简单的)
哦?1!今年比赛新出的题?
2021-4-13 13:39
0
游客
登录 | 注册 方可回帖
返回
//