〖简单教程〗讯飞输入法 v9.1.9466 谷歌版 突破剪贴板保存上限
本帖最后由 芽衣 于 2021-2-9 23:02 编辑前几天正己发了个能保存999条剪贴板记录的讯飞输入法,https://www.52pojie.cn/thread-1367700-1-1.html,不过他没说怎么改的,自己独食。现在以我的角度来分析一下这个输入法是怎么修改上限的,思路可能有些不一样,但目的是一致的(废话
准备工具:
1、ddms
2、反编译工具,移动pc端均可
软件有签名校验,直接用一键即可,不再具体分析。整体比较简单,不设权限了。
https://static.52pojie.cn/static/image/hrline/5.gif
首先清空所有剪贴板的内容,直接用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
```
芽衣 发表于 2021-2-9 22:52
没说啊,哪有人问……
证明一下,俺没恰独食,只不过说得比较简略{:17_1072:}
lncyq 发表于 2021-2-10 11:47
刚才安装了,反馈一下,运行不了。在切换输入法时,讯飞输入法就闪退
谷歌版长时间不更新,可能对一些新设备不稳定。 谢谢分享 g感谢分享 支持楼主分享 讯飞输入法还是挺不错的 ,我是真的用不到8888,不过技术是狠ok,靴靴 谢谢楼主 我说了,在帖子的回复中,有一个人给我问了思路,又给你水了一贴,草率了{:17_1072:} 正己 发表于 2021-2-9 22:47
我说了,在帖子的回复中,有一个人给我问了思路,又给你水了一贴,草率了
没说啊,哪有人问……