文章总结: 本文介绍了在Windows及Mumu环境下逆向支付宝小程序的技术。通过adb定位沙箱中的0.data文件并提取,利用Python脚本根据tar魔数偏移量将其还原为tar包,从而获得小程序源码。该文为移动应用安全测试提供了具体的数据提取与解包实战步骤。 综合评分: 87 文章分类: 逆向分析,移动安全,实战经验,代码审计
【银行逆向百例】15小程序逆向之支付宝提取data文件为tar格式
原创
挖个洞先
挖个洞先
2026年1月3日 00:01 北京 标题已修改
“ 万分抱歉我不懂周全,反正我从来没上过版面。——《歌手》 ”
01
—
环境版本
环境:
电脑,Windows 11 专业版 23H2
https://github.com/JiaoSuInfoSec/JiaoSuInfoSec_T00ls_Win11
软件:
Android 支付宝,10.5.60.8000
https://www.wandoujia.com/apps/279979/history_v971
Mumu模拟器,5.14.2
https://mumu.163.com/download/
02
—
操作步骤
1、豌豆荚下载支付宝v10.5.60.8000版本
https://www.wandoujia.com/apps/279979/history_v971
2、服务
3、参考文章
支付宝小程序反编译
https://blog.csdn.net/weixin_52381874/article/details/141713311
4、打开小程序后,使用mumu自带adb,全局查找所有 0.data 文件,按修改时间从新到旧排序,保存输出结果到1.txt
cd D:\MuMu\nx_mainadb shellsufind /data/data/com.eg.android.AlipayGphone/files/Sandbox -name "0.data" -exec ls -lt {} + 2>/dev/null > /data/local/tmp/1.txt
5、查看最新的文件前20个
cat /data/local/tmp/1.txt | head -n 20
6、新建xcx目录,从 1.txt 中读取前20行,提取出每一行的最后一列,提取父目录的名字作为新文件名
mkdir -p /data/local/tmp/xcx
cat /data/local/tmp/1.txt | head -n 20 | awk '{print $NF}' | while read filepath; do if [ -f "$filepath" ]; then new_name=$(basename $(dirname "$filepath")) echo "copy: $filepath" cp "$filepath" "/data/local/tmp/xcx/$new_name.data" else echo "not found: $filepath" fidone
7、先给权限,然后pull下来
chmod -R 777 /data/local/tmp/xcxexitexitadb pull /data/local/tmp/xcx .
8、直接修改扩展名为tar,打开报错
9、使用python批量提取data为tar,py和xcx放在同级目录
import osINPUT_DIR_NAME = "xcx"OUTPUT_DIR_NAME = "tars"TAR_MAGIC_SIGNATURE = b'ustar'TAR_HEADER_OFFSET = 257def extract_tar_from_container(container_path, result_path): if not os.path.exists(container_path): return False try: with open(container_path, 'rb') as f: content = f.read() signature_index = content.find(TAR_MAGIC_SIGNATURE) if signature_index != -1: tar_start_offset = signature_index - TAR_HEADER_OFFSET if tar_start_offset >= 0: tar_data = content[tar_start_offset:] with open(result_path, 'wb') as f_out: f_out.write(tar_data) return True except Exception: return False return Falsedef batch_process(): current_dir = os.getcwd() input_dir = os.path.join(current_dir, INPUT_DIR_NAME) output_dir = os.path.join(current_dir, OUTPUT_DIR_NAME) if not os.path.isdir(input_dir): return if not os.path.exists(output_dir): os.makedirs(output_dir) for filename in os.listdir(input_dir): if filename.endswith(".data"): input_path = os.path.join(input_dir, filename) output_filename = os.path.splitext(filename)[0] + ".tar" output_path = os.path.join(output_dir, output_filename) extract_tar_from_container(input_path, output_path)if __name__ == "__main__": batch_process()
10、解压tar发现格式与文章中一致
11、全局搜索目标系统关键字定位到小程序代码
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:挖个洞先 挖个洞先《【银行逆向百例】15小程序逆向之支付宝提取data文件为tar格式》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论