如何在PC安卓模拟器中定位APK运行写入文件及解密后的恶意APK?
针对Virtual App框架恶意APK的文件定位方案
我来帮你拆解这个问题,针对Virtual App框架打包的恶意APK,找解密后的APK和运行时写入文件的方法其实有几个可靠的路径:
一、找到解密后的APK文件
Virtual App类框架通常会把解密后的APK存放在私有目录或临时路径里,你可以试试这几种方法:
- 模拟器文件管理器+进程追踪:先给模拟器开ROOT权限,安装ES文件浏览器这类工具。启动恶意APK后,在ADB shell里执行
ps | grep virtual(或者找包名里带vx、virtual的进程),定位到Virtual App的进程包名,然后去/data/data/[进程包名]/目录下找files、cache子文件夹,里面大概率有解密后的APK,文件名可能是随机字符串或者类似temp.apk、payload.apk的命名。 - ADB实时监控文件变化:用ADB shell执行
inotifywait -mr /data/data/(主流模拟器比如夜神、雷电都支持这个命令),启动恶意APK后,盯着输出的文件创建/修改记录,找到后缀为.apk的新文件路径,然后用adb pull [文件路径] ./local_save.apk把文件拉到PC上。 - Frida动态Hook抓路径:如果前两种方法没找到,就用Frida hook文件写入的函数。写个简单的脚本:
Java.perform(function() { // Hook FileOutputStream的构造方法,打印写入路径 var FileOutputStream = Java.use("java.io.FileOutputStream"); FileOutputStream.$init.overload("java.lang.String").implementation = function(filePath) { console.log("正在写入文件到: " + filePath); return this.$init(filePath); }; });
保存为track_file.js,然后执行frida -U -f [恶意APK的包名] -l track_file.js,启动后就能在控制台看到解密APK的写入路径了。
二、查找APK运行时写入的所有文件
要找恶意APK运行时生成的文件,这些方法很实用:
- ADB find命令批量搜索:让恶意APK运行一段时间后,在ADB shell里执行
find /data/data/[恶意APK包名]/ -type f -mmin -15(-15表示搜索15分钟内修改的文件),能快速定位近期写入的文件。如果是Virtual App托管的,别忘了同时搜索Virtual App进程的包名目录。 - 模拟器应用数据备份:很多模拟器支持单独备份应用数据,比如夜神模拟器的「备份应用数据」功能,把恶意APK的数据备份出来后解压,就能看到所有私有目录里的文件,包括隐藏的缓存、配置文件。
- Logcat过滤文件操作日志:执行
adb logcat | grep -E "(open|write).*[恶意APK包名]",过滤系统日志里的文件操作记录,虽然会有不少冗余信息,但耐心筛选能找到关键的文件写入路径。
内容的提问来源于stack exchange,提问作者bugs king
相关产品推荐
相关产品推荐

