【银行逆向百例】15小程序逆向之支付宝提取data文件为tar格式

admin 2026-01-04 01:43:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了在Windows及Mumu环境下逆向支付宝小程序的技术。通过adb定位沙箱中的0.data文件并提取,利用Python脚本根据tar魔数偏移量将其还原为tar包,从而获得小程序源码。该文为移动应用安全测试提供了具体的数据提取与解包实战步骤。 综合评分: 87 文章分类: 逆向分析,移动安全,实战经验,代码审计


cover_image

【银行逆向百例】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格式》

评论:0   参与:  0