1、分析代码
可以知道调用函数decrypt("hnci}|jwfclkczkppkcpmwckng\u007f", 2)可以直接得到答案。
image1.png (32.47 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传
image2.png (27.76 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传
2、使用objection命令得到flag
启动frida环境,启动APP。
使用objection附加APP,附加命令:objection -g com.zj.wuaipojie2023_1 explore
首先搜索对象:android heap search instancescom.zj.wuaipojie2023_3.MainActivity
直接调用实例的方法decrypt(),调用方法:android heap evaluate 5921857,其中5921857为实例句柄
然后输入:console.log("result:"+clazz.decrypt("hnci}|jwfclkczkppkcpmwckng\u007f",2))
输入完成后,按ESC退出编辑器,按回车执行,得到结果。
image3.png (63.98 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传
最终得到答案:flag{zhudajiaxinniankuaile}
二、解题领红包之四 {Android 初级题}
1、分析代码
可以看出输入uid和flag后,会调用函数com.zj.wuaipojie2023_1.A.B(Stringstr, String str2),在B()中最终调用Intrinsics.areEqual(substring,c.cipher(mD5Utils.MD5(base64Utils.encodeToString(bytes)), 5))进行比较,areEqual的第二个参数就是我们需要的flag。
image4.png (43.89 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传
image5.png (42.7 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传
2、使用objection命令得到flag
启动frida环境,启动APP。
使用objection附加APP,附加命令:objection -g com.zj.wuaipojie2023_1 explore
对方法areEqual进行hook,命令格式:android hooking watch class_methodkotlin.jvm.internal.Intrinsics.areEqual --dump-args --dump-return
然后在APP中输入uid=123456,flag随便输入,比如输入flag{aaaa}
在objection中就可以打印出函数areEqual的参数,第二个参数为i72jgg589f9i013f80gh1j5k31h3i925,所以uid=123456对应的答案为:flag{i72jgg589f9i013f80gh1j5k31h3i925}。其他用户可以在APP输入自己的uid得到对应的flag。
image6.png (100.02 KB, 下载次数: 0)
下载附件
2023-2-7 12:26 上传