吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 17142|回复: 53
上一主题 下一主题
收起左侧

[Android 原创] 〖简单教程〗讯飞输入法 v9.1.9466 谷歌版 突破剪贴板保存上限

  [复制链接]
跳转到指定楼层
楼主
芽衣 发表于 2021-2-9 22:06 回帖奖励
本帖最后由 芽衣 于 2021-2-9 23:02 编辑

前几天正己发了个能保存999条剪贴板记录的讯飞输入法,https://www.52pojie.cn/thread-1367700-1-1.html,不过他没说怎么改的,自己独食。现在以我的角度来分析一下这个输入法是怎么修改上限的,思路可能有些不一样,但目的是一致的(废话

准备工具:
1、ddms
2、反编译工具,移动pc端均可




软件有签名校验,直接用一键即可,不再具体分析。整体比较简单,不设权限了。



首先清空所有剪贴板的内容,直接用ddms抓他的文字id,那么可以得到clipboard_menu_first_prompt。为什么我要清空他呢?如果保存有内容,那么就不会显示了,所以肯定存在着字符串长度判断,isEmpty()方法。既然有判断有无内容,那么我首先猜测他应该也会有储存上限的判断,按照开发思路不应该调来调去,而是在一个类。

反编译后代码搜索这个id,只有1个sget,点进去,代码位于app/ccf。然后转换成Java。





关键点this.g,如果为空则显示,上面有个判断条件,当然这不是重点。右键查找用例。





查看红框部分,来到这里。


public void c() {
        if (this.o.size() == 0) {
            this.h.setText("");
            this.g.setVisibility(0);
        } else {
            int i2 = (!RunConfig.isUserLogin() || TextUtils.isEmpty(AssistSettings.getUserId()) || RunConfig.getInt("account_level", 0) < 5) ? 100 : 500;
            this.h.setText("(" + this.o.size() + "/" + i2 + ")");
            if (this.o.size() == i2) {
                this.h.setTextColor(getResources().getColor(edp.clipboard_menu_list_count_max_tv));
            } else {
                this.h.setTextColor(getResources().getColor(edp.clipboard_menu_list_count_tv));
            }
            if (this.i) {
                this.i = false;
            } else {
                this.g.setVisibility(8);
            }
        }
        this.j.notifyDataSetChanged();
    }




this.o.size()就是剪贴板储存的内容数目了。代码开头就进行了数目判断,如果this.o.size()==0,==符号的意思是两边是否相等,左边等于右边,所以要2个=,单独1个是赋值,如果结果为真就执行大括号{ }里面的代码,新手的话你就这么记。所以剪贴板没有内容的时候就会显示那串文字了。




好接着继续看,如上图,this.h.setText是不是很熟悉,里面的内容就是"(" + this.o.size() + "/" + i2 + ")"




显示的内容id是clipboard_menu_list_count_tv。对应上面的代码,这下就清晰了。代码逻辑为:i2为储存上限,this.o.size()为当前储存的数量。如果储存的数量==储存上限,那么显示红色文字。如果账户等级(account_level)<5,那么i2上限为100,否则500。
知道了代码逻辑后,直接改掉赋值即可。100的16进制为0x64,500是0x1f4。






如上图,可以知道v0寄存器储存着上限,那么直接在地址:goto_36下方任意对v0赋值即可。比如赋值8888条上限,效果如图:




但是还有一个问题,实际操作后发现上限虽然提高了,但是当前储存的数量并没有大于100,说明还是有其他的判断,因为他要移除超出的部分,那么直接找this.o.size()的来源即可。同理位于cbl这个类。







如上图,v0寄存器就是i,超过就移除最后一个内容,所以地址:goto_84下方v0赋值改到8888即可。

const/16 v0, 0x22b8

move v1, v0



免费评分

参与人数 12威望 +1 吾爱币 +29 热心值 +11 收起 理由
库克船长什么样 + 1 + 1 热心回复!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
鎏丿情何以堪 + 1 我很赞同!
ducd + 1 + 1 感谢您对吾爱破解论坛的支持, 吾爱破解论坛有你更精彩!
凉意人 + 1 + 1 用心讨论,共获提升!
北极狼Clifton + 1 + 1 用心讨论,共获提升!
爱星爷爱拉芳 + 1 + 1 用心讨论,共获提升!
万里晴空 + 1 留下了没技术的眼泪
soulcaoyue + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lkl2425572 + 1 + 1 仰慕,虽然我没有技术,但我有分呀,评给你
aylitat + 1 原来你就是破解大神
shiina0831 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
正己 发表于 2021-2-9 22:59
芽衣 发表于 2021-2-9 22:52
没说啊,哪有人问……

证明一下,俺没恰独食,只不过说得比较简略
推荐
 楼主| 芽衣 发表于 2021-2-10 17:43 |楼主
lncyq 发表于 2021-2-10 11:47
刚才安装了,反馈一下,运行不了。在切换输入法时,讯飞输入法就闪退

谷歌版长时间不更新,可能对一些新设备不稳定。
沙发
1901323679 发表于 2021-2-9 22:11
3#
不明所以 发表于 2021-2-9 22:19
g感谢分享
4#
Rolanju 发表于 2021-2-9 22:21
支持楼主分享
5#
白天起不来 发表于 2021-2-9 22:26
讯飞输入法还是挺不错的
6#
um.haha 发表于 2021-2-9 22:41
,我是真的用不到8888,不过技术是狠ok,靴靴
7#
arq2020 发表于 2021-2-9 22:41
谢谢楼主
8#
正己 发表于 2021-2-9 22:47
我说了,在帖子的回复中,有一个人给我问了思路,又给你水了一贴,草率了
9#
 楼主| 芽衣 发表于 2021-2-9 22:52 |楼主
正己 发表于 2021-2-9 22:47
我说了,在帖子的回复中,有一个人给我问了思路,又给你水了一贴,草率了

没说啊,哪有人问……
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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