首页
社区
课程
招聘
[原创]安卓逆向之2016年华山杯CTF安卓writeUp
发表于: 2017-6-17 18:29 9203

[原创]安卓逆向之2016年华山杯CTF安卓writeUp

2017-6-17 18:29
9203

题目下载:http://download.csdn.net/detail/darmao/9873200 
题目打开是这样的,有个序列号,然后根据这个序列号生成一个注册码,然后输入即可解锁。 
这里写图片描述

首先我们,这个序列号是不停更新的,所以我们需要先反编译,将其变化的周期改长一些:

这里写图片描述

点击提交按钮的代码逻辑是这样的: 
这里写图片描述 
调用了encryption01.MyEncryption()函数,用输入的注册码和这个函数的返回值相比较,一般的思路就是开始看着搞函数的加密算法,但是我们看看smali代码: 
这里写图片描述 
这里将encryption01.MyEncryption()的返回值放到了v1寄存器里,这个时候可以添加一个toast,将注册码弹出来: 
这里写图片描述 
重新打包,触发onClick函数,这时就会将正确的注册码弹出来了。 
这里写图片描述


******************************************************************************************

第二题:

题目下载:http://download.csdn.net/detail/darmao/9873200 
安装后打开是这样的: 
这里写图片描述 
输入用户名和密码登陆

扔进jeb里看看: 
这里写图片描述 
加壳了,看看是如何动态加载的: 
这里写图片描述 
**依次调用了readDexFileFromApk()–>splitPayLoadFromDex() 
第一个函数先将apk解压,将里边的dex文件读入到一个byte[]里,重点在splitPayLoadFromDex()函数:** 
这里写图片描述

通过以上分析,我们可以得到加壳了以后的apk的结构应该是: 
+——-+———–|——————+ 
+ 壳子 | 原始apk | 原始apk的长度 | 
+ ——+———–+——————+

我们需要做的就是将原始apk读取出来,然后解密,看看解密算法:

这里写图片描述 
**直接和0xff或一下即可 
Java代码如下:**

**将这个读取出来的新apk拖到jeb里: 
onClick函数:** 
这里写图片描述 
这里调用了checkNameAndPassword这个函数,其中第一个参数是:用户名,第二个是密码,还有另外一个参数,我们看看这个函数: 
这里写图片描述 
**首先对用户名做了使用sha-1进行了哈希,然后读取前16个字节 
进行判断的部分:密码要等于这前十六个字节,同时用户名等于其传进去的第三个参数,第三个参数是什么呢?**

这里写图片描述 
U2hlMTFfTjZSYw== 这个字符串的解码

总结:用户名:base64.decode(“U2hlMTFfTjZSYw==”); 
密码:sha1(“用户名”).subString(0,16); 
用户名:She11_N6Rc 
密码:6acbbca78fdca0c5 
这里写图片描述


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

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/06/19
最新回复 (12)
雪    币: 2575
活跃值: (502)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
2
学习,很详细
2017-6-17 19:50
0
雪    币: 371
活跃值: (94)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
wyfe 学习,很详细
比较适合新手
2017-6-19 16:27
0
雪    币: 184
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最近正在学习安卓,明天看看
2017-6-19 19:00
0
雪    币: 371
活跃值: (94)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
隔壁雷哥 最近正在学习安卓,明天看看
这些老哥支持
2017-6-20 08:40
0
雪    币: 371
活跃值: (94)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
darmao 这些老哥支持
谢谢老哥支持
2017-6-20 08:40
0
雪    币: 1721
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢分享!!!学习好资料!!!
2017-6-21 14:09
0
雪    币: 7
活跃值: (263)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
很不错    mark
2017-6-22 14:31
0
雪    币: 2
活跃值: (31)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
9

楼主第一题我按照你这个做法写了~~~~ 也弹出来了那串数字,,可是还是出现了 what a pity!

为什么呢?我去看了安全客上人家写的wp ,,也没看懂。。是只有唯一个正确的解吗?

下面是截图,第一个是安全客上的wp

2017-7-9 22:14
0
雪    币: 371
活跃值: (94)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
pipig 楼主第一题我按照你这个做法写了~~~~ 也弹出来了那串数字,,可是还是出现了 what a pity!为什么呢?我去看了安全客上人家写的wp ,,也没看懂。。是只有唯一个正确的解 ...
这个应该是弹toast逻辑的问题,不过打ctf的时候,提交肯定没问题的。
2017-7-22 02:40
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习
2017-7-26 09:57
0
雪    币: 116
活跃值: (354)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
不错,教程写的很好,学习了
2017-7-31 15:11
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习
2017-8-11 17:51
0
游客
登录 | 注册 方可回帖
返回
//