V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acbot
V2EX  ›  Android

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

  •  1
     
  •   acbot · 2022-10-11 10:28:50 +08:00 · 5368 次点击
    这是一个创建于 572 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. Android 的 APP 能不能实现在启动安装的时候必须要输入 APP 的授权码验证后才能继续安装这样的需求呢,类似哪些需要收费的 Windows 软件,在安装的时候需要输入 KEY 验证之后才能继续安装和使用,本地正版验证的这种。
    2. 现在厂家 Android 系统自带的导入证书的功能好像都只是用于 WIFI 认证使用,在非 root 的情况下有没有通用的方法可以将第三方的证书添加到信任 root CA 列表中
    3. 在非 root 的情况下有没有通用的方法可以直接修改 hosts 和 3G/4G/5G 也就是数据流量自带的 DNS ,现在实现这种功能的 APP 好像都是通过 VPN 这种间接的模式来处理的感觉太曲折和太别扭。
    第 1 条附言  ·  2022-10-11 11:45:44 +08:00
    问题 1. 需求源自 由于 APP 是行业专用的 Android 单机软件(不需要联网使用,类似专用 PDA 上的软件), 但是想实现按设备收费功能所以自然的就想到了 Windows 之前的正版 KEY 方式。

    问题 2. 需求源自现在证书费用和的问题(当然有免费的证书,它们的问题就是时间短并且免费证书的类型有限,另外,独立的 APP 也可以用自己的证书验证,但是有的时候需要调用浏览器或者是第三方 APP 这个时候自签证书也就有问题了)所以想自己签发证书

    问题 3. 主要是现在有的 APP 广告太多,运营商 DNS 稳定性和隐私性等问题,想有没有办法在不安装第三方软件的情况下去掉广告或者是修改 dns 而已, 也不打算做个啥产品。
    22 条回复    2022-10-11 21:43:30 +08:00
    kop1989smurf
        1
    kop1989smurf  
       2022-10-11 10:32:42 +08:00
    1 、安装不行,执行可以。(你看到的任何软件的 CD-KEY ,也都是执行阶段验证的)
    3 ,你这是 DNS 劫持,是木马行为。

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

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

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

    可以自己配置 DoT 服务器
    acbot
        22
    acbot  
    OP
       2022-10-11 21:43:30 +08:00
    @yanqiyu 这种应该是新版本的系统才有的功能吧!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   742 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:41 · PVG 05:41 · LAX 14:41 · JFK 17:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.