返回列表 发新帖

某SG加固的so文件切片保护分析学习

[复制链接]

183

主题

631

回帖

5181

积分

禁止发言

金币
102
好评
1
信誉
97

考神MT论坛最佳新人

QQ
发表于 2026-2-8 17:29:22 来自手机  | 显示全部楼层 | 阅读模式  来自 湖南
本帖最后由 hehua 于 2026-2-8 17:36 编辑

1. Java代码分析:

- com.hardening.stub.SoLoader$Config - 负责SO库加载配置
- com.hardening.stub.RuntimeProtector - 运行时保护
- com.hardening.stub.SecurityChecker - 安全检查器


1) SO文件被加密存储在其他位置
2) 使用了自定义的SO加载机制
3) 运行时动态解密SO文件

2. 针对SO加密的Java实现分析:

```java
// SoLoader$Config 类的可能实现
public class SoLoader {
    public static class Config {
        private String encryptedSoPath; // 加密SO存放路径
        private String decryptedSoDir;  // 解密后存放目录
        private String key;            // 解密密钥
        
        public Config(String encryptedPath, String decryptedDir, String key) {
            this.encryptedSoPath = encryptedPath;
            this.decryptedSoDir = decryptedDir;
            this.key = key;
        }
        
        public String getDecryptedSoPath(String soName) {
            return decryptedSoDir + File.separator + soName;
        }
    }
   
    public static void loadLibrary(Context context, String libName, Config config) {
        // 1. 检查解密目录是否存在
        File decryptedDir = new File(config.decryptedSoDir);
        if (!decryptedDir.exists()) {
            decryptedDir.mkdirs();
        }
        
        // 2. 检查是否已解密
        String decryptedPath = config.getDecryptedSoPath(libName);
        File decryptedFile = new File(decryptedPath);
        
        if (!decryptedFile.exists()) {
            // 3. 从assets或指定路径读取加密SO
            byte[] encryptedData = readEncryptedSo(context, libName, config);
            
            // 4. 解密SO数据
            byte[] decryptedData = decryptSo(encryptedData, config.key);
            
            // 5. 写入解密文件
            writeDecryptedSo(decryptedPath, decryptedData);
        }
        
        // 6. 加载解密后的SO
        System.load(decryptedPath);
    }
   
    private static byte[] readEncryptedSo(Context context, String libName, Config config) {
        // 实现从assets或指定路径读取加密SO的逻辑
    }
   
    private static byte[] decryptSo(byte[] encryptedData, String key) {
        // 实现解密逻辑,可能是AES等对称加密
    }
   
    private static void writeDecryptedSo(String path, byte[] data) {
        // 实现写入解密文件逻辑
    }
}
```

3. 针对选中类的特定分析:

- RuntimeProtector 类可能负责:
  - 反调试检测
  - 完整性校验
  - 环境安全检查
  
典型实现可能包含:

```java
public class RuntimeProtector {
    public static void checkEnvironment() {
        // 检查root、调试状态等
        if (isRooted() || isDebugging()) {
            exitProcess();
        }
    }
   
    private static boolean isRooted() {
        // 检查root标志
    }
   
    private static boolean isDebugging() {
        // 检查调试状态
    }
   
    private static void exitProcess() {
        System.exit(1);
    }
}
```






3) 使用示例:

```java
// 初始化配置
SoLoader.Config config = new SoLoader.Config(
    "encrypted_libs",
    context.getFilesDir() + "/decrypted_libs",
    "dynamic_key_part1" + getKeyPart2()
);

// 加载加密的SO库
SoLoader.loadLibrary(context, "native-lib", config);
```

5. 补充说明:

如果找不到llb目录或so文件,可能是因为:
1) SO文件被加密存储在assets或自定义位置
2) 使用了动态加载技术,运行时才解密释放
3) 路径被混淆或动态生成
可能分析
- assets目录下的加密文件
- 应用的data目录下的临时文件
- 运行时动态生成
签名被屏蔽
回复

使用道具 举报

10

主题

217

回帖

1146

积分

高中生

Rank: 4

金币
545
好评
5
信誉
100
发表于 2026-2-8 17:37:50 来自手机  | 显示全部楼层  来自 浙江
直接把腾讯元宝回复复制过来了? 是真一点没改呀
回复

使用道具 举报

3

主题

461

回帖

1356

积分

高中生

Rank: 4

金币
326
好评
0
信誉
101
发表于 2026-2-8 17:38:35 来自手机  | 显示全部楼层  来自 吉林
大佬
回复

使用道具 举报

43

主题

2043

回帖

5540

积分

硕士生

喵~

Rank: 6Rank: 6

金币
856
好评
7
信誉
103

考神MT论坛新人MT论坛最佳新人

QQ
发表于 2026-2-8 17:43:45 来自手机  | 显示全部楼层  来自 广西
还是太强惹喵
回复

使用道具 举报

38

主题

989

回帖

3580

积分

大学生

新手小白

Rank: 5Rank: 5

金币
1393
好评
4
信誉
100

考神MT论坛帅哥MT论坛新人MT论坛最佳新人

QQ
发表于 2026-2-8 18:17:54 来自手机  | 显示全部楼层  来自 山东
依旧md语法
回复

使用道具 举报

0

主题

2968

回帖

6905

积分

硕士生

Rank: 6Rank: 6

金币
3326
好评
0
信誉
100

MT论坛新人考神MT论坛帅哥

发表于 2026-2-8 22:24:31 来自手机  | 显示全部楼层  来自 浙江
感谢分享
回复

使用道具 举报

8

主题

1478

回帖

2898

积分

大学生

Rank: 5Rank: 5

金币
553
好评
1
信誉
100
发表于 2026-2-8 23:53:32 来自手机  | 显示全部楼层  来自 河南
看看分享
回复

使用道具 举报

1

主题

1万

回帖

3万

积分

博士后

Rank: 8Rank: 8

金币
9013
好评
4
信誉
1302

考神MT论坛帅哥MT论坛新人

发表于 2026-2-9 07:05:50 来自手机  | 显示全部楼层  来自 广西
看看
回复

使用道具 举报

0

主题

2515

回帖

4574

积分

大学生

Rank: 5Rank: 5

金币
2853
好评
0
信誉
90

MT论坛最佳新人MT论坛帅哥MT论坛新人考神

发表于 2026-2-9 07:26:32 来自手机  | 显示全部楼层  来自 河南
路过
回复

使用道具 举报

发表回复

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

本版积分规则

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