返回列表 发新帖

简易存储重定向计划

[复制链接]

177

主题

2265

帖子

5712

积分

硕士生

Rank: 6Rank: 6

金币
229
好评
10
贡献
1
发表于 2021-9-16 14:53:30 来自手机  | 显示全部楼层 | 阅读模式

在修改应用途中,遇到一位朋友,他制作了此简易存储重定向,仅对 JDK 层有效,修改后的哔哩哔哩完美适配此存储重定向
#存储重定向#
# 使用方法:
一、修改原APK中所有dex,替换的代码如下
1、开正则将
new\-instance ([a-z]\d+), Ljava/io/File;$
替换成
new-instance $1, Lcom/relickiller/fake/File;
2、将 Ljava/io/File;-><init> 替换为 Lcom/relickiller/fake/File;-><init>
二、将此dex与原APK的classes.dex合并,合并后放回原APK中
黑名单就是黑名单里的写入私有目录
白名单就是除白名单外的重定向到私有目录

不会使用?参考范例
.class public Lcom/relickiller/fake/FileConfig;
.super Ljava/lang/Object;


# direct methods
.method public constructor <init>()V
    .registers 1

    .line 6
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static getBlackDirList()Ljava/lang/String;
    .registers 1

    const-string v0, "这里是不允许读写的目录可多层,多个目录用\n隔开"

    return-object v0
.end method

.method public static getBlackFileList()Ljava/lang/String;
    .registers 1

    const-string v0, ".cu\n.um\n.tmfs\n.tmsdual\n.yyy\n.sss\n"

    return-object v0
.end method

.method public static getFakeSDCardPath()Ljava/lang/String;
    .registers 1

    const-string v0, "fakeStorageDir"

    return-object v0
.end method

.method public static getPackageName()Ljava/lang/String;
    .registers 1

    const-string v0, "tv.danmaku.bili"

    return-object v0
.end method

.method public static getReadme()Ljava/lang/String;
    .registers 1

    const-string v0, "isDebug 为调试,当 isDebug 为 true 时被替换的 File 将会记录操作的文件到 Android/data/包名/  + getFakeSDCardPath() + /下的fileRecord.log \nisEnable 为总开关,只有当 isEnable 为 true 时 除 isDebug 外的其他设置才生效 注意所以规则需要填写的均为 内置存储根目录 的相对目录 即不需要/storage/emulated/0/ \nisOnlyEnableWhiteListMode 为是否只开启白名单模式,开启之后黑名单无效,白名单内目录可访问,但这并影响目录重定向\nisEnableRedirectMode 为开启重定向模式,目录文件可以重定向到其他目录和文件优先级最高,对应规则请在 getRedirectRule 内增加\nisEnableWhiteListMode 为开启白名单模式,规则内的文件可以正常访问优先级仅次于重定向,对应规则请在 getWhiteDirList 及 getWhiteFileList 内增加\nisEnableBlackListMode 为开启黑名单模式,规则内的文件及目录不可访问优先级最低,对应规则请在 getBlackDirList 及 getBlackFileList 内增加\n"

    return-object v0
.end method

.method public static getRedirectRule()Ljava/util/Map;
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "()",
            "Ljava/util/Map<",
            "Ljava/lang/String;",
            "Ljava/lang/String;",
            ">;"
        }
    .end annotation

    .line 16
    new-instance v0, Ljava/util/HashMap;

    invoke-direct {v0}, Ljava/util/HashMap;-><init>()V

    const-string v1, "原始相对路径无/开头结尾"

    const-string v2, "要重定向到的相对路径无/开头结尾"

    .line 17
    invoke-interface {v0, v1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    return-object v0
.end method

.method public static getSDCardPath()Ljava/lang/String;
    .registers 1

    const-string v0, "/data/media/0\n/mnt/runtime/default/emulated/0\n/mnt/runtime/default/sdcard0\n/mnt/runtime/default/self/primary\n/mnt/runtime/read/emulated/0\n/mnt/runtime/write/emulated/0\n/mnt/sdcard\n/mnt/shell/emulated/0\n/mnt/user/0/primary\n/sdcard\n/storage/emulated/0\n/storage/emulated/legacy\n/storage/sdcard0\n/storage/self/primary/data/media/999\n/mnt/runtime/default/emulated/999\n/mnt/runtime/default/sdcard999\n/mnt/runtime/read/emulated/999\n/mnt/runtime/write/emulated/999\n/storage/emulated/999\n"

    return-object v0
.end method

.method public static getWhiteDirList()Ljava/lang/String;
    .registers 1

    const-string v0, "Pictures/bili"

    return-object v0
.end method

.method public static getWhiteFileList()Ljava/lang/String;
    .registers 1

    const-string v0, "这里是允许读写的文件可多层,多个文件用\n隔开"

    return-object v0
.end method

.method public static isDebug()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x0

    .line 72
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

.method public static isEnable()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x1

    .line 68
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

.method public static isEnableBlackListMode()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x0

    .line 76
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

.method public static isEnableRedirectMode()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x0

    .line 84
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

.method public static isEnableWhiteListMode()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x1

    .line 80
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

.method public static isOnlyEnableWhiteListMode()Ljava/lang/Boolean;
    .registers 1

    const/4 v0, 0x0

    .line 88
    invoke-static {v0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;

    move-result-object v0

    return-object v0
.end method

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

2

主题

538

帖子

1328

积分

高中生

Rank: 4

金币
355
好评
0
贡献
0

考神MT论坛新人

发表于 2021-9-16 14:54:49 来自手机  | 显示全部楼层
好东西
回复

使用道具 举报

2

主题

107

帖子

737

积分

初中生

Rank: 3Rank: 3

金币
131
好评
1
贡献
0
发表于 2021-9-16 15:02:31 来自手机  | 显示全部楼层
路过看看
回复

使用道具 举报

100

主题

3069

帖子

7635

积分

硕士生

Rank: 6Rank: 6

金币
2028
好评
7
贡献
0
发表于 2021-9-17 00:27:05 来自手机  | 显示全部楼层
厉害厉害
回复

使用道具 举报

0

主题

3327

帖子

6750

积分

硕士生

Rank: 6Rank: 6

金币
2542
好评
0
贡献
0
发表于 2021-9-17 01:39:25 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

1017

帖子

2768

积分

大学生

Rank: 5Rank: 5

金币
1005
好评
0
贡献
0
发表于 2021-9-17 06:46:54 来自手机  | 显示全部楼层
感谢楼楼分享!!!
回复

使用道具 举报

15

主题

1689

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2483
好评
0
贡献
0
发表于 2021-9-17 09:29:19 | 显示全部楼层

此贴必火,占位刘留名~~~~
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表