1234下一页
返回列表 发新帖

讯飞过签教程(不能输入中文)

  [复制链接]

155

主题

990

回帖

4493

积分

大学生

Rank: 5Rank: 5

金币
1366
好评
3
信誉
97
QQ
发表于 2026-5-9 23:21:09 来自手机  | 显示全部楼层 | 阅读模式  来自 湖南
本帖最后由 Mtawei 于 2026-5-10 01:16 编辑

Mt去签黑屏,np去签部分功能失效,输入法键盘无法调出,本人小白-技术有限。
随便签名看崩溃日志,这也去脱修必看的。
一、问题分析
  1. 1778328230.144 12690  7147  7147 I Process : Quit itself,  Pid:7147  StackTrace:java.lang.reflect.Method.invoke:-2 app.flz.g:62 app.flz.e:3 app.epo.a:54 com.iflytek.inputmethod.FlyApp.<init>:14
  2. java.lang.Class.newInstance:-2 android.app.AppComponentFactory.instantiateApplication:76 androidx.core.app.CoreComponentFactory.instantiateApplication:0 android.app.Instrumentation.newApplication:1367 android.app.LoadedApk.makeApplicationInner:1566异常日志
复制代码

问题:签名不匹配 → 触发自杀机制
二、第一层防护:签名校验自杀(app/flz + app/epo)2.1 分析 app/flz(反射自杀器)
  1. # app/flz.smali

  2. # 各种场景调用入口
  3. .method public static e(Ljava/lang/String;)V
  4.     const-string v0, "Signature"
  5.     invoke-static {v0, p0}, Lapp/flz;->g(Ljava/lang/String;Ljava/lang/String;)V
  6. .end method

  7. # 核心自杀逻辑
  8. .method private static g(Ljava/lang/String;Ljava/lang/String;)V
  9.     :try_start_0
  10.     # 字符串反转还原:
  11.     # "ssecorP.so.diordna" → "android.os.Process"
  12.     # "ssecorPllik" → "killProcess"
  13.     # "diPym" → "myPid"
  14.    
  15.     invoke-static {p0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
  16.     invoke-virtual {p0, p1, v1}, Ljava/lang/Class;->getDeclaredMethod(...)Ljava/lang/reflect/Method;
  17.     invoke-virtual {p0, v2, v1}, Ljava/lang/reflect/Method;->invoke(...)Ljava/lang/Object;
  18.     :try_end_40
  19.     .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_40} :catch_40
  20.    
  21.     :catch_40
  22.     return-void
  23. .end method
复制代码

原理:通过反射调用  android.os.Process.killProcess(android.os.Process.myPid())  自杀
2.2 分析 app/epo(签名校验类)
  1. # app/epo.smali

  2. .method public static a()V
  3.     :try_start_0
  4.     invoke-static {}, Lapp/epo;->b()Landroid/content/pm/PackageInfo;
  5.     move-result-object v0
  6.    
  7.     if-nez v0, :cond_b
  8.     # 获取签名失败,标记异常
  9.     sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
  10.     sput-object v0, Lapp/jxi;->e:Ljava/lang/Boolean;
  11.     return-void
  12.    
  13.     :cond_b
  14.     # 获取签名并计算 SHA1
  15.     iget-object v0, v0, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;
  16.     aget-object v0, v0, v1
  17.     invoke-virtual {v0}, Landroid/content/pm/Signature;->toByteArray()[B
  18.     invoke-static {v0}, Lcom/iflytek/common/util/security/HashUtils;->sha1([B)Ljava/lang/String;
  19.     move-result-object v0
  20.    
  21.     # 与硬编码哈希比较
  22.     const-string v1, "454c01daeadca0eefa742dcb1171b7ac07e22b84"
  23.     invoke-static {v1}, Lcom/iflytek/common/util/data/StringUtils;->reverse(Ljava/lang/String;)Ljava/lang/String;
  24.     move-result-object v1
  25.     invoke-static {v0, v1}, Landroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
  26.     move-result v1
  27.    
  28.     # 写入校验结果到 jxi.e
  29.     invoke-static {v1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
  30.     move-result-object v2
  31.     sput-object v2, Lapp/jxi;->e:Ljava/lang/Boolean;
  32.    
  33.     # 关键判断:签名不匹配时调用 flz.e() 自杀
  34.     if-eqz v1, :cond_3d        # 如果 v1 == false (不匹配),跳转到 :cond_3d
  35.     invoke-static {v0}, Lapp/flz;->e(Ljava/lang/String;)V  # ← 签名匹配时反而调用?不对...
  36.     :try_end_38
  37.     .catchall {:try_start_0 .. :try_end_38} :catchall_39
复制代码

注意:这里的  if-eqz  逻辑需要确认方向
2.3 修改方案:绕过签名校验
方案A:修改 epo.a() 强制通过
# 方法1:直接返回,不执行任何校验
.method public static a()V
    # 强制设置 jxi.e = true
    sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->e:Ljava/lang/Boolean;
    return-void
.end method
方案B:修改比较逻辑
# 第52行,改成无条件跳转
goto :cond_3d    # 跳过 flz.e() 调用
方案C:修改硬编码哈希为自己的签名
1. 获取自己签名的 SHA1:
Mt获取,np获取
2.
计算反转字符串:
String original = "你的SHA1";
String reversed = new StringBuilder(original).reverse().toString();
3. 替换 epo.a() 中的硬编码值
三、第二层防护:综合安全检测(app/jxi)
3.1 分析 app/jxi(6项检测中心)
  1. # app/jxi.smali

  2. # 6个检测标志位
  3. .field static a:Ljava/lang/Boolean;
  4. .field static b:Ljava/lang/Boolean;
  5. .field static c:Ljava/lang/Boolean;
  6. .field static d:Ljava/lang/Boolean;
  7. .field static e:Ljava/lang/Boolean;    # ← epo 设置(签名校验)
  8. .field static f:Ljava/lang/Boolean;

  9. # 自杀执行方法
  10. .method public static a()V
  11.     invoke-static {}, Lapp/jxi;->b()Z
  12.     move-result v0
  13.     if-nez v0, :cond_46        # b() 返回 false 时执行自杀
  14.    
  15.     # 反射自杀代码(同 flz.g)
  16.     ...
  17. .end method

  18. # 综合校验方法
  19. .method private static b()Z
  20.     # 检查 6 个标志位,全部为 true 才返回 true
  21.     sget-object v0, Lapp/jxi;->a:Ljava/lang/Boolean;
  22.     if-eqz v0, :cond_49
  23.     sget-object v2, Lapp/jxi;->b:Ljava/lang/Boolean;
  24.     if-eqz v2, :cond_49
  25.     # ... 检查 c/d/e/f
  26.    
  27.     # 逐个判断值
  28.     invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
  29.     move-result v0
  30.     if-eqz v0, :cond_49        # a == false → 返回 false
  31.    
  32.     # 检查 b
  33.     sget-object v0, Lapp/jxi;->b:Ljava/lang/Boolean;
  34.     invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
  35.     if-eqz v0, :cond_49        # b == false → 返回 false
  36.    
  37.     # ... 检查 c/d/e/f
  38.     # 全部通过
  39.     const/4 v1, 0x1
  40.     return v1
  41.    
  42.     :cond_49
  43.     :goto_49
  44.     return v1    # v1 初始为 0,返回 false
  45. .end method
复制代码

3.2 修改方案:强制通过所有检测
.method private static b()Z
    .registers 1

    # 强制所有标志位为 true
    sget-object v0, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->a:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->b:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->c:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->d:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->e:Ljava/lang/Boolean;
    sput-object v0, Lapp/jxi;->f:Ljava/lang/Boolean;

    const/4 v0, 0x1
    return v0
.end method
四、第三层防护:插件降级机制(app/o91 + app/oc6)
4.1 分析插件降级
五、第四层防护:LLM 拼音功能限制
5.1 分析 LLMPinyinHelper  省略不贴……
5.2 修改方案
修改1:强制环境检查通过 省略代码不贴……
修改2:强制拼音可用(中文不可以)
  1. .method public final setPinyinAvailable(Z)V
  2.     .registers 3
  3.     const-string v0, "c_llm_py_available"
  4.     const/4 v1, 0x1          # 强制 true
  5.     invoke-static {v0, v1}, Lcom/iflytek/inputmethod/depend/config/settings/RunConfigBase;->setBoolean(Ljava/lang/String;Z)V
  6. .end method
复制代码
  1. 文件        方法        修改内容       
  2. `app/epo.smali`        `a()V`        强制 `jxi.e = true`,跳过 `flz.e()`       
  3. `app/jxi.smali`        `b()Z`        强制 6 个标志位全部为 true       
  4. `app/o91.smali`        `i(Lapp/n91;Ljava/util/Set;)Z`        直接返回 false       
  5. `app/oc6.smali`        `forceDegrade(...)Z`        直接返回 false       
  6. `LLMPinyinHelper.smali`        `checkInstallEnvAvail(...)I`        直接返回 0       
  7. `LLMPinyinHelper.smali`        `setPinyinAvailable(Z)V`        强制写入 true       
  8. `LLMPinyinHelper.smali`        `getPinyinAvailable()Z`        直接返回 true       
复制代码

录了GIF的,提示文件过大。不能上传就不上传了。软件以可以正常进入,上面省略的都是修改后无效的。
论坛:大佬(帅比宝宝)以过签无中文限制包:
https://pan.baidu.com/s/1yDh2luypadfm_KnRPiAO7g?pwd=zu03#/home/%2F/%2F
怎么过中文限制的好奇。
15.0.12过签 过英文 7天有效链接:https://share.feijipan.com/s/ctaAuMgJ

本帖子中包含更多资源

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

x
回复

使用道具 举报

28

主题

7503

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6268
好评
19
信誉
82

考神MT论坛最佳新人MT论坛帅哥MT论坛活跃会员

发表于 2026-5-9 23:38:38 来自手机  | 显示全部楼层  来自 广东
看看教程
回复

使用道具 举报

31

主题

2300

回帖

5928

积分

硕士生

Rank: 6Rank: 6

金币
577
好评
1
信誉
105

MT论坛新人MT论坛帅哥

发表于 2026-5-9 23:42:33 来自手机  | 显示全部楼层  来自 陕西
看看隐藏
回复

使用道具 举报

18

主题

2777

回帖

7701

积分

硕士生

Rank: 6Rank: 6

金币
958
好评
1
信誉
102
发表于 2026-5-9 23:56:25 来自手机  | 显示全部楼层  来自 河南
学习一下
回复

使用道具 举报

8

主题

1481

回帖

2903

积分

大学生

Rank: 5Rank: 5

金币
556
好评
1
信誉
100
发表于 2026-5-9 23:57:30 来自手机  | 显示全部楼层  来自 河南
学习一下
回复

使用道具 举报

14

主题

3247

回帖

1万

积分

博士生

我不懂浪漫

Rank: 7Rank: 7Rank: 7

金币
3149
好评
8
信誉
100

MT论坛新人考神MT论坛最佳新人MT论坛帅哥挂机大佬

QQ
发表于 2026-5-9 23:57:30 来自手机  | 显示全部楼层  来自 贵州
看看大佬分享
回复

使用道具 举报

0

主题

3207

回帖

8266

积分

硕士生

Rank: 6Rank: 6

金币
6962
好评
0
信誉
100
发表于 2026-5-9 23:57:47 来自手机  | 显示全部楼层  来自 陕西
学习一下。
回复

使用道具 举报

20

主题

4551

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7615
好评
3
信誉
100

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

发表于 2026-5-10 00:04:54 来自手机  | 显示全部楼层  来自 广东
看看内容学习
回复

使用道具 举报

12

主题

5249

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1596
好评
16
信誉
578

考神MT论坛帅哥MT论坛新人MT论坛最佳新人MT论坛活跃会员

发表于 2026-5-10 00:21:21 来自手机  | 显示全部楼层  来自 广东
看看隐藏
回复

使用道具 举报

18

主题

4878

回帖

1万

积分

博士生

MW

Rank: 7Rank: 7Rank: 7

金币
2518
好评
2
信誉
100

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

发表于 2026-5-10 00:23:33 来自手机  | 显示全部楼层  来自 新疆
感谢分享,看看隐藏
回复

使用道具 举报

69

主题

3011

回帖

8580

积分

硕士生

logking

Rank: 6Rank: 6

金币
2895
好评
10
信誉
117

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

发表于 2026-5-10 00:35:09 来自手机  | 显示全部楼层  来自 广东
看看
回复

使用道具 举报

27

主题

1094

回帖

3770

积分

大学生

Rank: 5Rank: 5

金币
1822
好评
7
信誉
122
发表于 2026-5-10 00:56:18 来自手机  | 显示全部楼层  来自 新疆
看看隐藏
回复

使用道具 举报

19

主题

952

回帖

4037

积分

大学生

Rank: 5Rank: 5

金币
1371
好评
0
信誉
99
QQ
发表于 2026-5-10 00:57:32 来自手机  | 显示全部楼层  来自 广东
感谢
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3412
好评
164
信誉
119

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

发表于 2026-5-10 01:04:34 来自手机  | 显示全部楼层  来自 广东
看看隐藏
回复

使用道具 举报

3

主题

1536

回帖

4738

积分

大学生

Rank: 5Rank: 5

金币
2044
好评
0
信誉
100

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

发表于 2026-5-10 02:13:21 来自手机  | 显示全部楼层  来自 江西
看看
回复

使用道具 举报

发表回复

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

本版积分规则

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