Android CodeEngn 练习

概述

为了让初学者能够更好的学习基于android的渗透测试,CodeEngn开发了很多的android app供大伙学习。

SmartApp Analysis

SmartApp 01

题目地址

SmartApp 01

解题步骤

发现程序不能直接安装到手机上。

解压APK文件后发现有三个文件的文件名是错误的且缺少META-INF文件,所以不能正常安装到手机,如下图所示:

android-codeengn-smartapp01-1

修改错误的文件名后,进行zip压缩,并修改后缀为apk,然后进行签名:

1
2
$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore 【keystore名称】 【apk文件】 【密钥别名】
$ jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore releasekey.keystore C:\Users\dell\Desktop\app-test\SmartApp-L01.apk keyalias

android-codeengn-smartapp01-2

签名成功后安装到移动设备上,打开启动app就可以看到Key:H3ll0 C0de3ngn

SmartApp 02

题目地址

SmartApp 02

解题步骤

发现程序不能直接安装到手机上。

解压apk文件后发现缺少META-INF文件,签名成功后安装到移动设备上,打开启动app就可以看到如下界面:

android-codeengn-smartapp02-1

于是反编译了下源代码,发现key的值被加密了,而且作了限制,只有条件成立,才能解密:

android-codeengn-smartapp02-2

于是修改smali代码:

android-codeengn-smartapp02-3

重新编译下程序,然后再进行一次签名,然后安装到手机上,key就出来了: The Key is November Rain

SmartApp 03

题目地址

SmartApp 03

解题步骤

发现程序不能直接安装到手机上。

解压apk文件后发现缺少META-INF文件,签名成功后安装到移动设备上,打开启动app就可以看到如下界面:

android-codeengn-smartapp03-1

用androidlyze.py分析了下代码:

1
2
3
$ a, d, dx=AnalyzeAPK('Desktop/SmartAppL03.apk', decompiler="dad")
$ d.CLASS_Lcom_Namdaehyeon_findekey3_MainActivity.source()
$ d.CLASS_Lcom_Namdaehyeon_findekey3_MainActivity_1.source()

看了代码之后,发现模拟器界面没有显示全,少了几个按钮,而且看到了判断的条件:

android-codeengn-smartapp03-2

android-codeengn-smartapp03-3

首先修改判定条件,如下图:

android-codeengn-smartapp03-4

然后进行签名。
既然模拟器运行不全,应该是android的版本有问题,换到手机试下:

android-codeengn-smartapp03-5

SmartApp 04

题目地址

SmartApp 04

解题步骤

直接反编译一下,发现这里有个条件判断,输入key后才能显示答案正确:

android-codeengn-smartapp04-1

先看下dex的字符串:

android-codeengn-smartapp04-2

找到了一个比较可疑的地方,这里有一个helloWorldD函数,而直接还原成java代码,并不能找到:

android-codeengn-smartapp04-3
android-codeengn-smartapp04-4

通过010编辑器查看确实有一个helloWorldD函数,应该是被隐藏掉了:

android-codeengn-smartapp04-5
android-codeengn-smartapp04-6

找到原先的helloWorldC函数,它后面应该是helloWorldD函数,记下地址:0x0cd0

android-codeengn-smartapp04-7

找到如下图所示的地方,根据前几个函数相应的规则,修改:

android-codeengn-smartapp04-8

用androidlyze.py分析了下代码:

1
2
$ d,dx = AnalyzeDex("Desktop/classes.dex",decompiler="dad")
$ d.CLASS_Lcom_namdaehyeon_zfinekey4_zFindKey.source()

android-codeengn-smartapp04-9

可以看到就是每个位置和 240(0xf0) 异或了下:

android-codeengn-smartapp04-10

解出来就是:

The Key is BoanprojectZZang

android-codeengn-smartapp04-11

#总结