Android_Crackme

最近在参加xman冬令营培训,学习移动安全,今天做了几个简单的android crackme,写篇博客记录一下。

一.Heziran

1.信息收集

下载下apk文件后放到模拟器中安装,先打开看看。

adcm1.jpg

尝试登录

adcm2.jpg

2.查看源码

用MT管理器打开apk文件(进入/data/app/目录下寻找,按安装时间来找),在两个.dex文件中寻找了一下没有找到ManActivity,发现一个可疑的zip文件,进去看看发现一堆.dex文件

adcm3.jpg

用Dex编辑器++全部打开,找到manactivity点进去,搜索“登录失败”,定位到目标代码段。

adcm4.jpg

向上找,即可发现登录的用户名密码,都是明文存储的,回app内验证一下:

adcm5.jpg

成功。

二.任意登录

1.收集信息

安装好apk后打开看看

adcm6.jpg

2.工具分析

使用jadx查看源码

adcm7.jpg

发现明文的用户名密码,显然这题我们已经拿到正确的用户名密码了,我就不贴验证的图了。但我们的目的是实现任意用户名密码登录。所以要想办法修改程序的smali代码并进行重新打包编译签名。

(1).分析smali代码

定位到checkSN函数

adcm8.jpg

耐心看明白这些if-eqz的含义就是判断输入的用户名密码是否正确,因此最简单的部分就是让程序跳过这部分代码。

(2).Androidkiller修改程序

这里我们使用Androidkiller来修改代码并重新编译

adcm9.jpg

记得修改后一定要保存再重新编译,否则不成功。

adcm10.jpg

(3).验证

之后在androidkiller安装目录下的projects\demo01\Bin目录下找到重新编译后的apk,安装进模拟器验证是否成功。

adcm11.jpg

成功!

三.注册码

先打开程序运行一下,要求是输入一个用户名以及此用户名对应的注册码。

adcm12.jpg

工具分析

adcm13.jpg

adcm14.jpg

这是两段关键代码,分析即可明白,注册码即为输入的用户名取md5后去掉奇数位字符所剩下的字符串。

py脚本

adcm15.jpg

脚本代码:

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.注册码

链接应该没有错,都是吾爱上的练手题。

0%
//这里改为从本地加载