文章总结: 本文介绍了使用Frida导出uniappjs文件的方法,通过HookWXSDKInstance.render方法并添加文件写入功能,将加密保存的uniappjs文件从APK中提取并保存到Android指定路径。文章提供了完整的Frida脚本,包括文件名处理、文件写入等功能,并说明了需要创建目录和设置权限的步骤。这种方法对于移动应用安全测试和逆向分析具有实用价值。
综合评分: 84
文章分类: 移动安全,逆向分析,安全工具
frida 导出 uniapp js文件(含脚本)
进击的HACK
2025年12月5日 07:50
江苏
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 326,阅读大约需 2 分钟
前言
最近在做测试的时候,遇到了uniapp js 在apk中被加密保存的情况,在互联网上找了一下hook js的代码,并在原本的基础上保存到Android指定路径下。
如果使用不成功,可以尝试给app赋予文件操作权限。
原本
if (Java.available) {
Java.perform(function () {
let WXSDKInstance = Java.use("com.taobao.weex.WXSDKInstance");
WXSDKInstance["render"].overload('java.lang.String', 'java.lang.String', 'java.util.Map', 'java.lang.String', 'com.taobao.weex.common.WXRenderStrategy').implementation = function (str, str2, map, str3, wXRenderStrategy) {
console.log(`WXSDKInstance.render is called: str=${str}, str2=${str2}, map=${map}, str3=${str3}, wXRenderStrategy=${wXRenderStrategy}`);
this["render"](str, str2, map, str3, wXRenderStrategy);
};
});
}
4b2ca0632afeace727e89a9e1a3ac01e.png
保存到本地
创建文件
mkdir /sdcard/Download/demo-js
chmod 777 /sdcard/Download/demo-js
Frida脚本
if (Java.available) {
Java.perform(function () {
let WXSDKInstance = Java.use("com.taobao.weex.WXSDKInstance");
WXSDKInstance["render"].overload('java.lang.String', 'java.lang.String', 'java.util.Map', 'java.lang.String', 'com.taobao.weex.common.WXRenderStrategy').implementation = function (str, str2, map, str3, wXRenderStrategy) {
// console.log(`WXSDKInstance.render is called: str=${str}, str2=${str2}, map=${map}, str3=${str3}, wXRenderStrategy=${wXRenderStrategy}`);
this["render"](str, str2, map, str3, wXRenderStrategy);
write_file_1(str3, str2)
};
});
}
function sanitizeFileName(fileName) {
// 移除路径分隔符等非法字符
return fileName.replace(/[\/\\:*?"<>|{}]/g, "_");
}
function trimUnderscores(str) {
// 先去除空白字符,再去去除下划线
return str.trim().replace(/^_+|_+$/g, '');
}
function write_file_1(filename, data) {
//frida 的api来写文件
filename = sanitizeFileName(filename)
filename = trimUnderscores(filename)
console.log(filename)
// 先检查文件是否存在,如果存在则删除
try {
var existingFile = new File("/sdcard/Download/demo-js/" + filename, "r");
if (existingFile) {
existingFile.close();
// 删除已存在的文件
File.remove("/sdcard/Download/demo-js/" + filename);
}
} catch (e) {
}
var file = new File("/sdcard/Download/demo-js/" + filename, "w");
file.write(data);
file.flush();
file.close();
}
结果
f9da93ba8a6a9115a6a44962d96df8ad.png
参考资料
- • 某Uniapp框架App hook方法 https://bbs.binmt.cc/thread-148015-1-1.html
- • https://bbs.kanxue.com/thread-279917-1.htm
欢迎加入知识星球,星球内容主要有:
1、公众号文章备份、工具分享。
2、常见问题的答疑、解决方案汇总在知识星球,作为便于搜索的知识库。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:进击的HACK 《frida 导出 uniapp js文件(含脚本)》