最近在参加xman冬令营培训,学习移动安全,今天做了几个简单的android crackme,写篇博客记录一下。
一.Heziran
1.信息收集
下载下apk文件后放到模拟器中安装,先打开看看。
尝试登录
2.查看源码
用MT管理器打开apk文件(进入/data/app/目录下寻找,按安装时间来找),在两个.dex文件中寻找了一下没有找到ManActivity,发现一个可疑的zip文件,进去看看发现一堆.dex文件
用Dex编辑器++全部打开,找到manactivity点进去,搜索“登录失败”,定位到目标代码段。
向上找,即可发现登录的用户名密码,都是明文存储的,回app内验证一下:
成功。
二.任意登录
1.收集信息
安装好apk后打开看看
2.工具分析
使用jadx查看源码
发现明文的用户名密码,显然这题我们已经拿到正确的用户名密码了,我就不贴验证的图了。但我们的目的是实现任意用户名密码登录。所以要想办法修改程序的smali代码并进行重新打包编译签名。
(1).分析smali代码
定位到checkSN函数
耐心看明白这些if-eqz的含义就是判断输入的用户名密码是否正确,因此最简单的部分就是让程序跳过这部分代码。
(2).Androidkiller修改程序
这里我们使用Androidkiller来修改代码并重新编译
记得修改后一定要保存再重新编译,否则不成功。
(3).验证
之后在androidkiller安装目录下的projects\demo01\Bin目录下找到重新编译后的apk,安装进模拟器验证是否成功。
成功!
三.注册码
先打开程序运行一下,要求是输入一个用户名以及此用户名对应的注册码。
工具分析
这是两段关键代码,分析即可明白,注册码即为输入的用户名取md5后去掉奇数位字符所剩下的字符串。
py脚本
脚本代码:
import hashlib
your_str = input("Please input your username: ")
m = hashlib.md5()
b = your_str.encode(encoding='utf-8')
m.update(b)
gencode = m.hexdigest()
code_list = []
i = 0
while i < len(gencode) :
code_list.append(gencode[i])
i += 2
code = ''.join(code_list)
print("Your code: " + code)
这些都是非常简单的题目,很适合入门练手,题目apk文件改天再放上来吧,准备洗洗睡了,明天还有课。
下载链接:
1.heziran
2.任意登录
3.注册码
链接应该没有错,都是吾爱上的练手题。