数字医学与健康大会DMHC——美创与您相约古都金陵
2025-08-12
美创科技打造县域医疗灾备新标杆|神木市医院 HIS 系统数据库分钟级切换演练实录
2025-07-02
百万罚单警示!DCAS助力金融机构筑牢数据安全防线,实现监管合规
2025-06-20
2025中国互联网产业年会丨《中国互联网产业绿色算力发展倡议》正式发布
2025-02-07
美创用户专访 | 精细化管理:医疗行业数据分类分级的策略与实践
2025-01-10
存储域
数据库加密 诺亚防勒索访问域
数据库防水坝 数据库防火墙 数据库安全审计 动态脱敏流动域
静态脱敏 数据水印 API审计 API防控 医疗防统方运维服务
数据库运维服务 中间件运维服务 国产信创改造服务 驻场运维服务 供数服务安全咨询服务
数据出境安全治理服务 数据安全能力评估认证服务 数据安全风险评估服务 数据安全治理咨询服务 数据分类分级咨询服务 个人信息风险评估服务 数据安全检查服务 通过上节的介绍,我们知道了frida是一个功能很强大的hook框架。hook,也就是插桩,其实就是在运行过程中插入代码实现自己想要的功能,比如当我们想要hook一个函数或者说方法时,只有这个函数被调用的时候,我们的hook才能发挥作用。
如果应用程序一直不调用那个函数,那我们的hook代码就一直得不到运行。难道我们只能够被动的等待应用程序调用函数,有没有主动触发函数执行的方法?答案是肯定的,frida的主动调用机制就可以很方便的让我们执行我们想要执行的函数。
frida主动调用可以分为以下5种情况:
上述5种情况的具体调用方法代码本文不做展开,下面以两个ctf比赛中的常见主动调用案例来演示frida主动调用的使用。
我们拿到一个压缩包,解压后里面是一个easyAPK.apk的安装文件。
将其安装到模拟器上运行。
使用jadx打开easyAPK.apk文件,搜索“摸到我就告诉你key”,发现提示文本在MainActivity中,且MainActivity中的代码功能实际是控制emoji移动的点击事件,对解题并没有实际作用。
源码中包含一个名为TheFlagIsNotHere的类,该类中存在一个getkey方法,方法里面是计算得到flag的算法。
搜索TheFlagIsNotHere,发现获取flag的方法并没有在该应用中被调用。
这种情况就可以使用frida主动调用来主动的执行TheFlagIsNotHere类的getkey方法来获取flag,编写的frida主动调用脚本如下:
成功拿到flag。
下载题目apk并安装到模拟器上,这是一个密码破解的题目,当输入密码错误时,会提示“Unfortunately,not the right PIN:(”
使用AndroidKiller打开apk文件,搜索“Unfortunately”关键字
然后再搜索代码中对应的dialog_failure
可以得到一个方法调用顺序
verifyPasswordClick()->verifyPassword()->encodePassword()
通过分析verifyPassword()、encodePassword()可以知道,密码为4位字符,输入的4位字符会被encodePassword方法加密/编码,加密/编码后的字符串与verifyPassword中固定的字符串进行比对,如果一致则为正确的密码。根据这个逻辑可以编写下面的frida主动调用脚本来爆破密码。
将编写的脚本保存为js文件并使用命令frida -U -l xxx.js org.teamsik.ahe17.qualification.easy进行hook
爆破出密码是9083。