返回列表 发新帖

一个加固?没有源码

[复制链接]

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-6 19:31:15 来自手机  | 显示全部楼层 | 阅读模式  来自 天津
一个(算是vmp吧)的加固?还是混淆?,目前没有ollvm,我放了一份原版dex在里面,你们可以看看强度玩玩

说他是加固吧,没有签名校验。说是混淆吧,感觉太彻底了,全到so了

反正是有vmp的特点和dex2c的特点
就是效率低了点

https://www.lanzoub.com/iHohO3ur8rub
密码:cvrj

(我在安卓16和安卓9的系统上测试过了,别的系统没试过,应该能跑)

到时候我再搞搞别的去
回复

使用道具 举报

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-6 19:31:55 来自手机  | 显示全部楼层  来自 天津
来个人试试强度?
回复

使用道具 举报

31

主题

586

回帖

1867

积分

高中生

Rank: 4

金币
811
好评
5
信誉
101
发表于 2026-7-6 20:00:51 来自手机  | 显示全部楼层  来自 山东
我以为是加固器呢原来是样本
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3411
好评
164
信誉
119

考神MT论坛新人MT论坛活跃会员MT论坛帅哥MT论坛灌水老大MT论坛侠客MT论坛最佳新人

发表于 2026-7-6 20:06:11 来自手机  | 显示全部楼层  来自 广东
加强多了?
回复

使用道具 举报

31

主题

586

回帖

1867

积分

高中生

Rank: 4

金币
811
好评
5
信誉
101
发表于 2026-7-6 20:06:57 来自手机  | 显示全部楼层  来自 山东
有强度,兼容性应该比dcc强
回复

使用道具 举报

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-6 23:29:11 来自手机  | 显示全部楼层  来自 天津
이지은 发表于 2026-7-6 20:06
有强度,兼容性应该比dcc强

骗你的,指令还没支持全呢
回复

使用道具 举报

25

主题

1282

回帖

6798

积分

硕士生

Rank: 6Rank: 6

金币
1862
好评
3
信誉
100
发表于 2026-7-7 03:49:02 | 显示全部楼层  来自 湖南
回复

使用道具 举报

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-7 12:37:43 来自手机  | 显示全部楼层  来自 天津
本帖最后由 黄金 于 2026-7-7 12:38 编辑
当然明月几时有 发表于 2026-7-7 03:49
https://lyt3l.lanzoub.com/i7cSI3utalti
三分钟还原
66,它还原的是classes.dex.bak
我放了一份原dex在下面的
让它自己分析壳去


(我觉得你可以先问问是怎么还原的)

本帖子中包含更多资源

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

x
回复

使用道具 举报

25

主题

1282

回帖

6798

积分

硕士生

Rank: 6Rank: 6

金币
1862
好评
3
信誉
100
发表于 2026-7-7 19:24:20 | 显示全部楼层  来自 湖南
黄金 发表于 2026-7-7 12:37
66,它还原的是classes.dex.bak
我放了一份原dex在下面的
让它自己分析壳去

ai偷懒了,又弄了一下
https://lyt3l.lanzoub.com/i9SuS3uygb0f
回复

使用道具 举报

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-7 19:52:24 来自手机  | 显示全部楼层  来自 天津
当然明月几时有 发表于 2026-7-7 19:24
ai偷懒了,又弄了一下
https://lyt3l.lanzoub.com/i9SuS3uygb0f

帮我问问分析过程,我比较好奇从哪儿突破的
回复

使用道具 举报

25

主题

1282

回帖

6798

积分

硕士生

Rank: 6Rank: 6

金币
1862
好评
3
信誉
100
发表于 2026-7-7 20:00:44 | 显示全部楼层  来自 湖南
黄金 发表于 2026-7-7 19:52
帮我问问分析过程,我比较好奇从哪儿突破的

通过静态分析还原的,不是动态 dump。

核心流程:

1. 先看 DEX  
   `classes.dex` 里只有一个类:

   `Lcc/binmt/simpleapp/MainActivity;`

   方法列表显示:

   - `<clinit>()V`:加载 `libhvmp.so`
   - `<init>()V`:普通构造
   - `onCreate(Bundle)`:native
   - `onClick(View)`:native

   也就是说 VMP 后两个 Java 方法被改成了 native,由 `libhvmp.so` 执行。

2. 分析壳库 JNI 导出  
   `libhvmp.so` 里有两个静态导出:

   - `Java_cc_binmt_simpleapp_MainActivity_onCreate`
   - `Java_cc_binmt_simpleapp_MainActivity_onClick`

   对应被 VMP 的两个方法。

3. 提取壳内明文元数据  
   这个样本的 VM 元数据和常量没有完全加密,SO 里能直接看到关键内容,包括:

   - `Lcc/binmt/simpleapp/MainActivity;->onClick(Landroid/view/View;)V`
   - `Lcc/binmt/simpleapp/MainActivity;->onCreate(Landroid/os/Bundle;)V`
   - `Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V`
   - `setContentView(I)V`
   - `findViewById(I)Landroid/view/View;`
   - `setOnClickListener(...)`
   - `EditText.getText()`
   - `Object.toString()`
   - `String.equals(Object)`
   - `Toast.makeText(...)`
   - `Toast.show()`
   - `EditText.setText(CharSequence)`
   - `EditText.setVisibility(I)`
   - `LinearLayout.setGravity(I)`
   - `ObjectAnimator.ofFloat(Object,String,[F)`
   - `ObjectAnimator.setRepeatCount(I)`
   - `ObjectAnimator.start()`
   - 字符串:`123456`
   - 字符串:`rotation`
   - 字符串:`请输入:123456`

4. 对照资源表还原 ID  
   `resources.arsc` 里资源 ID 是:

   - `R.id.button = 0x7f010000`
   - `R.id.container = 0x7f010001`
   - `R.id.editText = 0x7f010002`
   - `R.layout.activity_main = 0x7f020000`
   - `R.string.success = 0x7f040001`

   布局里是一个 `LinearLayout`,里面一个 `EditText` 和一个 `Button`。

5. 从 VM 字节码常量和调用序列恢复逻辑  
   壳内能看到两个方法对应的 VM 指令块。

   `onCreate` 的调用序列很短,恢复为:

   - 调用 `super.onCreate(bundle)`
   - `setContentView(R.layout.activity_main)`
   - `findViewById(R.id.button)`
   - 给 Button 设置 `OnClickListener` 为当前 Activity

   `onClick` 的调用序列恢复为:

   - 找到 `editText`
   - 取输入文本
   - 转成字符串
   - 和 `"123456"` 比较
   - 如果正确:
     - toast `R.string.success`
     - 隐藏 EditText
     - 取按钮父布局
     - 设置父布局居中
     - 对按钮创建 rotation 动画
     - 重复次数设为 `-1`
     - 启动动画
   - 如果错误:
     - EditText 设置为 `"请输入:123456"`
     - toast 同样文本

6. 回填 smali  
   用 `dex_batch` 把两个 native 方法替换回普通 Java 方法体:

   - `onCreate(Bundle)` 回填 smali
   - `onClick(View)` 回填 smali
   - `<clinit>()` 改成空实现,避免再加载壳库

7. 去壳  
   删除:

   `lib/arm64-v8a/libhvmp.so`

   然后重签 APK。

8. 校验和安装测试  
   - DEX check 通过
   - APK 安装成功
   - Activity 启动成功

所以这次能还原,主要原因是这个样本很小,而且 VMP 壳里保留了足够完整的调用元数据、字符串、资源 ID 和执行序列。没有靠猜函数名硬补,而是按 SO 里的 VM 元数据和资源表交叉还原。
回复

使用道具 举报

282

主题

4131

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5838
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-7-7 20:18:12 来自手机  | 显示全部楼层  来自 天津
本帖最后由 黄金 于 2026-7-7 20:28 编辑
当然明月几时有 发表于 2026-7-7 20:00
通过静态分析还原的,不是动态 dump。

核心流程:
66,原来是猜的吗
(其实是没开ollvm)
回复

使用道具 举报

25

主题

1282

回帖

6798

积分

硕士生

Rank: 6Rank: 6

金币
1862
好评
3
信誉
100
发表于 2026-7-7 20:19:43 | 显示全部楼层  来自 湖南
黄金 发表于 2026-7-7 20:18
66,原来是猜的吗
(其实没上强度)

来体验一下我的加固
回复

使用道具 举报

发表回复

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

本版积分规则

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