请教几个 Android 应用方面的问题

2022-10-11 10:28:50 +08:00
 acbot
  1. Android 的 APP 能不能实现在启动安装的时候必须要输入 APP 的授权码验证后才能继续安装这样的需求呢,类似哪些需要收费的 Windows 软件,在安装的时候需要输入 KEY 验证之后才能继续安装和使用,本地正版验证的这种。
  2. 现在厂家 Android 系统自带的导入证书的功能好像都只是用于 WIFI 认证使用,在非 root 的情况下有没有通用的方法可以将第三方的证书添加到信任 root CA 列表中
  3. 在非 root 的情况下有没有通用的方法可以直接修改 hosts 和 3G/4G/5G 也就是数据流量自带的 DNS ,现在实现这种功能的 APP 好像都是通过 VPN 这种间接的模式来处理的感觉太曲折和太别扭。
9783 次点击
所在节点    Android
22 条回复
kop1989smurf
2022-10-11 10:32:42 +08:00
1 、安装不行,执行可以。(你看到的任何软件的 CD-KEY ,也都是执行阶段验证的)
3 ,你这是 DNS 劫持,是木马行为。

2 楼主没有描述使用场景,不评价。
yfugibr
2022-10-11 10:38:09 +08:00
1. win 软件也是装完才运行要 key 的啊,我也没见哪个不买不能安装的
2. 可以添加 root ca ,不知道是不是国产砍了
3. 不能

三项加一起你是打算做个付费软件做 Mitm 劫持用户流量吗😅
newmlp
2022-10-11 10:42:03 +08:00
Windows 的安装程序可以自己做,当然能做到没 key 不能装
Android 安装包都是统一格式,不能自己做,所以你想自定义一些安装逻辑是不行的
Eiden
2022-10-11 10:46:12 +08:00
inno setup 打包的 windows 应用可以做到安装阶段需要输入密码, 而且安装包里面的资源也是加密的
kop1989smurf
2022-10-11 10:48:50 +08:00
@Eiden #4 这也是执行阶段,所谓的安装也是程序业务的 setup 。
windows 、Android 并没有系统级的 CD-KEY 。
acbot
2022-10-11 11:46:20 +08:00
@yfugibr “...劫持用户流量.." 不是,主要是我混到一起问了所以容易让人有错误的联想! 现在我已经把需求和原因附注了
acbot
2022-10-11 11:51:46 +08:00
@yfugibr ”可以添加 root ca ,不知道是不是国产砍了“ 我这边一个老 android 8 的设备 直接没有导入 root ca 只能用来做 wifi 认证, 另外一个 android 版本比较新的设备 倒是有导入 root ca 但是在导入的时候,在自定义证书存放目录选择证书文件的时候根本看不到 ca 证书,我试过几种证书格式都不行
acbot
2022-10-11 11:53:10 +08:00
@kop1989smurf 需求和原因我已经附注了
yfugibr
2022-10-11 12:07:27 +08:00
@acbot 你可以下个 adguard ,试试它的证书能不能用,我也不清楚具体支持啥格式
有些软件不接受用户添加的 ca 证书,还有些连系统的都不认,只认自己内置的(比如 firefox ),不如用 acme.sh 签一个,可以自动续期,倒也不麻烦

改 hosts 必须得 root ,效果一般,国内规则大多误杀严重可以试试 adguard 或者 firefox + ublock origin ,各自都有些缺点
acbot
2022-10-11 12:23:20 +08:00
@yfugibr "...改 hosts 必须得 root..." 这个方法行不通,那改 4G/5G 数据上网的默认 dns 的方法呢,哪怕是做一个小 app 通过 android API 的方式修改
yfugibr
2022-10-11 12:30:47 +08:00
@acbot Android 9 开始支持 private dns ,可以设置 dot 地址,比如 dns.pub (国产好像也有些阉割了)
Kasumi20
2022-10-11 12:37:49 +08:00
没有用过面具吗,看一下人家能产生一个随机包名的 apk 替换自身
acbot
2022-10-11 12:42:14 +08:00
@yfugibr “...Android 9 开始支持 private dns...” 那这个 private dns 会覆盖数据方式获取的运营商 DNS 吗,也就算对数据上网也生效吗?
yfugibr
2022-10-11 12:47:48 +08:00
@acbot 对 wifi 和流量都生效
acbot
2022-10-11 13:23:06 +08:00
@yfugibr 谢谢指教!
unco020511
2022-10-11 14:17:00 +08:00
1:要运行后自己做相关逻辑
2:可以,引导用户安装即可
3:有很多系统可以改 dns,例如小米的私人 DNS 功能
CharmingCheung
2022-10-11 14:29:42 +08:00
想做本地鉴权,apk 安装阶段应该实现不了
真想实现呢,做一个中间过渡的 App (称作 A )做鉴权,和实际的 App (称作 B )。
A 鉴权成功之后给你把鉴权信息包括机器码之类的识别内容加密成 license 写进 B 的 Apk 然后重新签名,然后交给系统安装器安装 B ,B 启动的时候拿 license 本地解密后和你的机器信息校验。
CharmingCheung
2022-10-11 14:34:03 +08:00
@CharmingCheung #17 因为跟 Windows 不一样,Windows 里软件安装器也是一个 exe ,装好了的软件也是 exe 。真要实现类似的概念,就只能通过一个 App 去安装另一个 App
xuelu520
2022-10-11 14:41:51 +08:00
第一个一般是执行阶段来验证吧。就算不联网,有个死办法,打包的时候,验证码激活码什么的都写进去。
besto
2022-10-11 15:23:20 +08:00
@Kasumi20 小伙子,说出你的故事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/885992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX