返回列表 发新帖

【原创教程】-画质怪兽-dex混淆解锁会员

  [复制链接]

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 16:49:57 | 显示全部楼层 | 阅读模式  来自 重庆
本帖最后由 Juntianzi 于 2025-12-26 18:15 编辑

ok啊 首先我们 打开软件看一下界面以及vip功能





可以看到目前我们还不是VIP以及无法使用功能
我们点击购买卡密激活跳转到激活页面看看会提示什么
随便输入数字点击激活 返回卡密不存在或者不正确

接下来我们使用mt管理器打开这个app进行分析一下

点击查看进入dex编辑器
然后点击搜索 搜索验证 (刚刚其实点击激活是有应该窗口显示验证中字样)

点击进去进行分析
  1. .method public final onClick(Landroid/view/View;)V
  2.     .registers 5

  3.     iget p1, p0, Lۦۙۛ/ۦۖۨ;->ۦۖ۫:I

  4.     iget-object v0, p0, Lۦۙۛ/ۦۖۨ;->ۦۖۨ:Lbom/gshy/app/ui/activity/ActivateCardActivity;

  5.     packed-switch p1, :pswitch_data_58

  6.     goto :goto_1c

  7.     :pswitch_8  #0x0
  8.     sget-object p1, Lۦۙۥ/ۦۖ۫;->ۦۖۗ:Lۦۙۥ/ۦۖ۫;

  9.     iget-object p1, p1, Lۦۙۥ/ۦۖ۫;->ۦۖ۠:Ljava/lang/String;

  10.     if-nez p1, :cond_16

  11.     sget p1, Lbom/gshy/app/ui/activity/ActivateCardActivity;->ۦۗۧ:I

  12.     const-string p1, "暂未开启"

  13.     invoke-virtual {v0, p1}, Lۦۙۤ/ۦۖۨ;->ۦۗۤ(Ljava/lang/String;)V

  14.     goto :goto_1b

  15.     :cond_16
  16.     sget v1, Lbom/gshy/app/ui/activity/ActivateCardActivity;->ۦۗۧ:I

  17.     invoke-virtual {v0, p1}, Lۦۙۤ/ۦۖۨ;->ۦۗ۬(Ljava/lang/String;)V

  18.     :goto_1b
  19.     return-void

  20.     :goto_1c
  21.     iget-object p1, v0, Lbom/gshy/app/ui/activity/ActivateCardActivity;->ۦۗۢ:Lbom/gshy/app/databinding/ActivityActivateCardBinding;

  22.     iget-object p1, p1, Lbom/gshy/app/databinding/ActivityActivateCardBinding;->edCard:Landroid/widget/EditText;

  23.     invoke-virtual {p1}, Landroid/widget/EditText;->getText()Landroid/text/Editable;

  24.     move-result-object p1

  25.     invoke-virtual {p1}, Ljava/lang/Object;->toString()Ljava/lang/String;

  26.     move-result-object p1

  27.     const-string v1, ""

  28.     invoke-virtual {p1, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

  29.     move-result v1

  30.     if-eqz v1, :cond_36

  31.     const-string p1, "请输入卡密"

  32.     invoke-virtual {v0, p1}, Lۦۙۤ/ۦۖۨ;->ۦۗۤ(Ljava/lang/String;)V

  33.     goto :goto_57

  34.     :cond_36
  35.     new-instance v1, Landroid/app/ProgressDialog;

  36.     invoke-direct {v1, v0}, Landroid/app/ProgressDialog;-><init>(Landroid/content/Context;)V

  37.     const-string v0, "验证中..."

  38.     invoke-virtual {v1, v0}, Landroid/app/ProgressDialog;->setMessage(Ljava/lang/CharSequence;)V

  39.     const/4 v0, 0x0

  40.     invoke-virtual {v1, v0}, Landroid/app/ProgressDialog;->setIndeterminate(Z)V

  41.     const/4 v0, 0x1

  42.     invoke-virtual {v1, v0}, Landroid/app/Dialog;->setCancelable(Z)V

  43.     invoke-virtual {v1}, Landroid/app/Dialog;->show()V

  44.     new-instance v0, Lۦۖۢ/ۦۖ۬;

  45.     const/16 v2, 0x8

  46.     invoke-direct {v0, p0, p1, v1, v2}, Lۦۖۢ/ۦۖ۬;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;I)V

  47.     const-string p1, "cami"

  48.     invoke-static {v0, p1}, Lcom/bumptech/glide/ۦۖۢ;->ۦۙ۬(Lۦۙ۟/ۦۖۥ;Ljava/lang/String;)V

  49.     :goto_57
  50.     return-void

  51.     :pswitch_data_58
  52.     .packed-switch 0x0
  53.         :pswitch_8  #00000000
  54.     .end packed-switch
  55. .end method
复制代码
可以看到上面代码方法名存在乱码这是被混淆了 我们不用管,接下来讲解这个代码是干什么的
上面这段代码主要获取用户输入的字符串,检查字符串是否等于空字符串 ""
如果为空,弹出提示:"请输入卡密",并结束流程,
如果用户输入了内容,代码会初始化一个 ProgressDialog,
设置显示文字为:"验证中..."。
然后下面新建了一个实例 new-instance v0, Lۦۖۢ/ۦۖ۬;
将当前的点击监听器对象 (p0)、用户输入的卡密字符串 (p1) 以及刚创建的加载弹窗 (v1) 作为参数传入。
最后通过 invoke-static {v0, p1}, ...;->ۦۙ۬ 发起网络请求或异步任务 下面有个cami 这里就是通过刚刚获取的字符串赋值然后从服务器进行请求

知道这段代码做什么的之后我们就已经明确 判断卡密真不真以及激活vip在新建的 new-instance v0, Lۦۖۢ/ۦۖ۬;实例里面
这里我们通过mt找到这个进行跳转

进来之后我们看到非常长的一段代码
  1. <blockquote>.method public final ۦۖۧ(Lorg/json/JSONObject;)V
复制代码

这段代码是软件的验证逻辑总闸门。它通过 packed-switch 分成了两个验证场景,一个是卡密激活,一个是任务激活
v0指向全局状态类 Lۦۙۥ/ۦۖ۫
v0->ۦۖۢ则是授权开关1为已授权,0为未授权
v1分支判断 8为卡密激活其他的任务激活
p1和v2一个是传入的参数一个则是常量为1
先说卡密激活 (:pswitch_d)
如果代码获取响应 JSON 中的 code 字段,如果 p1 == 1那么则为激活成功,这里退出激活页面
任务答题 (:goto_46)
也是代码获取响应 JSON 中的 code 字段,如果 p1 == 1,则当前进度 ۦۗۧ 加 1,如果进度等于总题数,将 v0->ۦۖۢ 设为 true(解锁),并弹出 “恭喜获得本软件使用权!”

了解怎么校验之后我们进行修改,删除所有的 JSONObject 解析指令(如 getString 和 getInt),并移除了整个 try-catch 异常处理块
直接硬编码指令 iput-boolean v2, v0, Lۦۙۥ/ۦۖ۫;->ۦۖۢ:Z直接硬编码指令 iput-boolean v2, v0, Lۦۙۥ/ۦۖ۫;->ۦۖۢ:Z,因为v0->ۦۖۢ 是该软件的全局授权字段。通过在回调入口处强制写入 True(1)我们就绕过了验证结果
屏蔽了 if-eq p1, v2, :cond_5a 判断以及废弃了原有的自增指令 add-int/2addr v1, v2(进度+1),改为读取数组长度 array-length 并直接赋值给进度字段 ۦۗۧ
如果嫌麻烦可以直接复制下面代码进行替换即可
  1. .method public final ۦۖۧ(Lorg/json/JSONObject;)V
  2.     .registers 8
  3.         
  4.     sget-object v0, Lۦۙۥ/ۦۖ۫;->ۦۖۗ:Lۦۙۥ/ۦۖ۫;
  5.         
  6.     iget v1, p0, Lۦۖۢ/ۦۖ۬;->ۦۖ۫:I
  7.         
  8.     const/4 v2, 0x1
  9.         
  10.     const-string v3, "code"
  11.         
  12.     iget-object v4, p0, Lۦۖۢ/ۦۖ۬;->ۦۖ۬:Ljava/lang/Object;

  13.     packed-switch v1, :pswitch_data_8c

  14.     goto :goto_task_logic

  15.     :pswitch_d  # 0x8
  16.     check-cast v4, Landroid/app/ProgressDialog;
  17.         
  18.     invoke-virtual {v4}, Landroid/app/Dialog;->dismiss()V

  19.     iput-boolean v2, v0, Lۦۙۥ/ۦۖ۫;->ۦۖۢ:Z


  20.     iget-object v1, p0, Lۦۖۢ/ۦۖ۬;->ۦۖۢ:Ljava/lang/Object;
  21.     check-cast v1, Lۦۙۛ/ۦۖۨ;
  22.     iget-object v1, v1, Lۦۙۛ/ۦۖۨ;->ۦۖۨ:Lbom/gshy/app/ui/activity/ActivateCardActivity;

  23.     const-string v4, "破解激活成功!"
  24.     sget v5, Lbom/gshy/app/ui/activity/ActivateCardActivity;->ۦۗۧ:I
  25.     invoke-virtual {v1, v4}, Lۦۙۤ/ۦۖۨ;->ۦۗۤ(Ljava/lang/String;)V


  26.     iget-object p1, p0, Lۦۖۢ/ۦۖ۬;->ۦۖۢ:Ljava/lang/Object;
  27.     check-cast p1, Lۦۙۛ/ۦۖۨ;
  28.     iget-object p1, p1, Lۦۙۛ/ۦۖۨ;->ۦۖۨ:Lbom/gshy/app/ui/activity/ActivateCardActivity;
  29.     invoke-virtual {p1}, Landroid/app/Activity;->finish()V
  30.    
  31.     goto :goto_end

  32.     :goto_task_logic
  33.     iget-object p1, p0, Lۦۖۢ/ۦۖ۬;->ۦۖۢ:Ljava/lang/Object;
  34.     check-cast p1, Lۦۙۛ/ۦۗ۬;
  35.     iget-object p1, p1, Lۦۙۛ/ۦۗ۬;->ۦۖ۫:Lbom/gshy/app/ui/activity/TaskActivity;


  36.     iget v1, p1, Lbom/gshy/app/ui/activity/TaskActivity;->ۦۗۧ:I
  37.     add-int/2addr v1, v2
  38.     iput v1, p1, Lbom/gshy/app/ui/activity/TaskActivity;->ۦۗۧ:I


  39.     iget-object v3, p1, Lbom/gshy/app/ui/activity/TaskActivity;->ۦۗۥ:[I
  40.     array-length v3, v3

  41.     if-ne v1, v3, :cond_7b


  42.     iput-boolean v2, v0, Lۦۙۥ/ۦۖ۫;->ۦۖۢ:Z
  43.     const-string v0, "恭喜获得本软件使用权!"
  44.     invoke-virtual {p1, v0}, Lۦۙۤ/ۦۖۨ;->ۦۗۤ(Ljava/lang/String;)V


  45.     iget-object p1, p0, Lۦۖۢ/ۦۖ۬;->ۦۖۢ:Ljava/lang/Object;
  46.     check-cast p1, Lۦۙۛ/ۦۗ۬;
  47.     iget-object p1, p1, Lۦۙۛ/ۦۗ۬;->ۦۖ۫:Lbom/gshy/app/ui/activity/TaskActivity;
  48.     invoke-virtual {p1}, Landroid/app/Activity;->finish()V

  49.     goto :goto_85

  50.     :cond_7b

  51.     const-string v0, "本项任务完成,请继续!"
  52.     invoke-virtual {p1, v0}, Lۦۙۤ/ۦۖۨ;->ۦۗۤ(Ljava/lang/String;)V
  53.    
  54.     new-instance v0, Landroidx/activity/ۦۖۥ;
  55.     const/16 v1, 0xe
  56.     invoke-direct {v0, v1, p0}, Landroidx/activity/ۦۖۥ;-><init>(ILjava/lang/Object;)V
  57.     invoke-virtual {p1, v0}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V

  58.     :goto_85
  59.     check-cast v4, Landroid/app/AlertDialog;
  60.     invoke-virtual {v4}, Landroid/app/Dialog;->dismiss()V
  61.     return-void
  62.    
  63.     :goto_end
  64.     return-void

  65.     :pswitch_data_8c
  66.     .packed-switch 0x8
  67.         :pswitch_d  #00000008
  68.     .end packed-switch
  69. .end method
复制代码
修改完之后我们返回对软件重新打包以及签名进行安装
打开app进入我的可以看到还没有显示是vip

我们点击购买永久卡密进去激活看看
随便输入数字点击激活可以看到返回我的页面并且vip也已经显示出来了

我们点击旁边功能看看功能是否可以使用

可以看到都是可以使用的,也算是成功了。

本帖子中包含更多资源

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

x
已有2人评分金币 理由
青春向上 + 1 支持一下。
ee + 1 很给力!

查看全部评分 总评分:金币 +2 

回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 16:51:19 | 显示全部楼层  来自 重庆
沙发!!!
回复

使用道具 举报

17

主题

896

回帖

3793

积分

大学生

ee

Rank: 5Rank: 5

金币
479
好评
6
信誉
123

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

发表于 2025-12-26 16:57:47 来自手机  | 显示全部楼层  来自 陕西
本帖最后由 萌 于 2025-12-26 17:07 编辑

加油
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:05:55 | 显示全部楼层  来自 重庆
为什么没人评价捏
回复

使用道具 举报

17

主题

896

回帖

3793

积分

大学生

ee

Rank: 5Rank: 5

金币
479
好评
6
信誉
123

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

发表于 2025-12-26 17:06:59 来自手机  | 显示全部楼层  来自 陕西
大佬好厉害呀
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:09:45 | 显示全部楼层  来自 重庆

感谢佬的热情回复!!!
回复

使用道具 举报

15

主题

1975

回帖

6208

积分

硕士生

Rank: 6Rank: 6

金币
2194
好评
10
信誉
104
发表于 2025-12-26 17:10:39 来自手机  | 显示全部楼层  来自 中国
可以的,下次可以试试隐藏,评论的人会多一点,虽然可能都是看看隐藏
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:11:17 | 显示全部楼层  来自 重庆
nhhhh666 发表于 2025-12-26 17:10
可以的,下次可以试试隐藏,评论的人会多一点,虽然可能都是看看隐藏

不懂这个怎么玩 没有找到那个
回复

使用道具 举报

6

主题

823

回帖

1921

积分

禁止发言

金币
379
好评
0
信誉
100

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

发表于 2025-12-26 17:13:34 来自手机  | 显示全部楼层  来自 湖南
感谢分享
回复

使用道具 举报

17

主题

896

回帖

3793

积分

大学生

ee

Rank: 5Rank: 5

金币
479
好评
6
信誉
123

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

发表于 2025-12-26 17:15:18 来自手机  | 显示全部楼层  来自 陕西
[hid我去e]隐藏内容[/hid厉害e]删掉我去 厉害就是了
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:22:17 | 显示全部楼层  来自 重庆
萌 发表于 2025-12-26 17:15
[hid我去e]隐藏内容[/hid厉害e]删掉我去 厉害就是了

ok 感谢佬
回复

使用道具 举报

20

主题

2499

回帖

8220

积分

硕士生

Rank: 6Rank: 6

金币
1289
好评
2
信誉
100

MT论坛最佳新人MT论坛新人

发表于 2025-12-26 17:22:31 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:22:46 | 显示全部楼层  来自 重庆
萌 发表于 2025-12-26 17:18
https://wwi.lanzouo.com/b0d1pmq7a
可以用这个MT论坛APP

手机发帖我不习惯哈哈 我是电脑发的贴子 感谢佬
回复

使用道具 举报

17

主题

896

回帖

3793

积分

大学生

ee

Rank: 5Rank: 5

金币
479
好评
6
信誉
123

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

发表于 2025-12-26 17:26:52 来自手机  | 显示全部楼层  来自 陕西
Juntianzi 发表于 2025-12-26 17:22
手机发帖我不习惯哈哈 我是电脑发的贴子 感谢佬

https://bbs.binmt.cc/forum.php?mod=viewthread&tid=79809
可以看这个帖
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-26 17:30:14 | 显示全部楼层  来自 重庆
萌 发表于 2025-12-26 17:26
https://bbs.binmt.cc/forum.php?mod=viewthread&tid=79809
可以看这个帖

感谢佬
回复

使用道具 举报

发表回复

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

本版积分规则

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