吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7264|回复: 27
收起左侧

[Android 原创] 使用APK编辑器替换APK字体

  [复制链接]
zixijian 发表于 2019-11-12 10:38
本帖最后由 zixijian 于 2019-11-12 10:40 编辑

最近一直在手机上玩MUDs文字游戏,
主要是使用两款终端,juicessh跟termux。

其实大部分的国外app及软件作者都没有考虑过中文,
其一,标准互不兼容、混乱;
其二,他们看不懂,没有办法review。

所以中文各种叠字,显示异常。

本文就是使用了最简单的方法来偷天换日,
达到欺骗app的目的。

我首先使用APK编辑器查看了Juicessh的目录结构,
我敏锐的发现
目录:assets/fonts/DroidSansMono.ttf
存放了字体,
于是我大胆的实验直接找一个别的字体改个名,
用APK编辑器的简单编辑功能替换来试一试,
果然可行。

经过几十种字体的替换,
推荐字体有iosevka、hack、文泉驿等宽微米黑。

我又发现了几个问题点,
大部分中文字体显示都十分异常,
经过一番查证,发现了一些字体相关的点。

举个例子说明一下。
比如有一个符号,是个横杠。-
这个横杠,在有些国家和地区,它的宽度是一个 ASCII 字符宽度(我们只讨论等款字体的渲染效果),但是在有些国家和地区,它的宽度是两个 ASCII 字符宽度。
这里面有很多原因,因为大家都知道,语言、文字,是一个国家主权的体现。所以每个国家(或地区)对自己国家的语言文字都有相应的规范。你们找本小学生新华字典翻翻附录就知道我们汉字的规范了。
但是这些字符的含义却是一致的。
所以在编码处理的时候,就有两种处理方式:
1,把它们当成两个字符
2,把它们当成一个字符
如果当成两个字符,那么你想要一个字符宽度的时候,你就用一个字符宽度的那个版本,你想用两个字符宽度的时候,你就用两个字符宽度的版本。
大家肯定猜到了,这就是「全角」和「半角」说法的来历。
这个方案的好处是,字符本身就明确了宽度,你想用全角,就用全角,想用半角,就用半角。
但是缺点也很明显:
1,浪费编码空间
2,带来不必要的全半角转换工作
比方说,引号有两个版本,一个全角,一个半角,那你替换的时候就得把两种都处理一遍,不然会有遗漏。而且很多人还经常用错,用混,都很麻烦。
所以就有了另一个方案:单字符宽度和双字符宽度,都用同一个编码,但是在显示渲染的时候,再决定如何渲染。
那么显示的时候到底该怎么渲染呢?有几种方案:
1,始终渲染为双字符宽度
2,始终渲染为单字符宽度
3,渲染为单字符宽度,但是后面加一个空格,这样占位仍然是两个字符宽度,不会引起纵向的错位
4,根据上下文自动渲染

使用同样字体进行比对,
发现juicessh采用了方案2,termux采用了方案1。

使用apk编辑器查看smali,
也能找到该字体的一些相关,
由于我不熟悉,就采用了最简单的替换方案。

实际上也并不完美,只是算得上能用。

针对字符宽度控制的疑问,
我已发帖到求助区,这或许涉及到了我不了解的维度。

免费评分

参与人数 4吾爱币 +5 热心值 +4 收起 理由
小白想学技术 + 1 + 1 谢谢@Thanks!
花好s月圆 + 1 + 1 优秀。
春天的萌动 + 2 + 1 干货 干货,谢谢楼主了。很有用
dreamlivemeng + 1 + 1 热心回复!

查看全部评分

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

 楼主| zixijian 发表于 2019-11-12 17:23
本帖最后由 zixijian 于 2019-11-12 17:25 编辑
温柔 发表于 2019-11-12 17:19
现在玩的游戏用的不是直接的字体文件,而是fnt的,我试过自己生成的替换进去,修改后的文字还是空白框子

具体问题具体分析了,这个模式适用还是很广的。
字体定义这一块还有不少挖掘的价值。
 楼主| zixijian 发表于 2019-11-12 19:06
花好s月圆 发表于 2019-11-12 18:42
能不能改掉别的东西,去广告什么的。

使用方法上没有什么特别之处,主要还是逆向的思路
sym945 发表于 2019-11-12 10:46
春天的萌动 发表于 2019-11-12 10:59
干货 干货,谢谢楼主了。很有用
china08 发表于 2019-11-12 11:02
我修改有,软件都提示停止或者闪退
lr957 发表于 2019-11-12 11:14
学习了,感谢分享!!!!?
gweillxp 发表于 2019-11-12 11:26
学习中,谢谢楼主。
wesley1224 发表于 2019-11-12 11:26
学习了!多谢 正在学习修改安卓
墨琴音 发表于 2019-11-12 12:01
学习中,谢谢楼主
sazn1314 发表于 2019-11-12 12:51
感谢,很棒,不用全局字体了
画殇啦 发表于 2019-11-12 12:57
学到了学到了,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-3-29 13:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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