更改app安装包后缀为zip
把这3个文件解压出来
然后使用dex2jar将dex文件转换为jar文件,得到一个jar文件,这个文件中包含了大部分程序逻辑
再使用AXMLPrinter2.jar对AndroidManifest.xml进行解包
使用JD-GUI分析jar文件
找到MainActivity.clss,因为正常情况下MainActivity是app加载的第一个页面。
可以看到程序获取两个编辑框的内容,通过Intent机制调用SecondActivity
跟过去看下
质量把两个编辑框的内容相连,通过doRawData函数加密后与VEIzd/V2UPYNdn/bxH3Xig==对比,跟到doRawData函数中,查看函数逻辑
这个函数是定义在共享库中的,找到解压出来的lib文件
lib文件下有3个文件夹,每个文件夹里都有一个so文件,没关系,都是一样的,只是不懂平台调用不懂的库文件。随便找一个,拖入IDA
找到这个函数。这里IDA分析的有点问题,手动把这个函数形参a1的类型改为JNIEnv*
,在变量上按Y就可以修改类型
发现这是一个AES加密,密钥是"thisisatestkey=="
解密脚本,或者使用在线解密网站,对一开始发现的这个密文进行解密。
import base64
from Crypto.Cipher import AES
cipher=base64.b64decode("VEIzd/V2UPYNdn/bxH3Xig==")
key = "thisisatestkey==".encode("utf-8")
aes = AES.new(key,AES.MODE_ECB)
msg = aes.decrypt(cipher)
print(msg.decode("utf-8"))
的到明文
aimagetencent
经过尝试,这个不是flag,在app中输入,得到的也不是flag
发现这个页面app总共有3个Activity,MainActivity、SecondActivity都分析过了,只有FileDataActivity还不懂它是干啥的,回到JD-GUI中找到FileDataActivity.class。发现还有一个密文,在IDA中跟下,看看decode是干啥的
应该是AES解密
Cas3_0f_A_CAK3
5.其他解法
#连接虚拟机
adb connect 127.0.0.1:62001
#获取shell
adb shell
#使用am start调用FileDataActivity页面
am start com.tencent.testvuln/.FileDataActivity
得到flag