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

Android 应用是不是几乎没有办法防破解?

  •  
  •   ysy950803 · 44 天前 via iPhone · 4084 次点击
    这是一个创建于 44 天前的主题,其中的信息可能已经有所发展或是发生改变。
    无论是运行时签名校验也好,还是把核心逻辑写到 native 代码也好,感觉都能轻松反编译,得益于 jadx ,IDA 这些工具,so 库也能给你搞出 C 伪代码来,各种命名,逻辑一览无余。代码混淆也只是缓兵之计,加固算比较高级的,但一样可以脱壳,可能付费的那种会安全一点?他们又是怎么做防护的呢?
    如果一个 App 有会员功能,在各种逆向工具和熟手面前,是不是几乎没有办法防护?
    35 条回复    2024-03-16 12:02:45 +08:00
    Cooky
        1
    Cooky  
       44 天前   ❤️ 2
    会员功能放到服务端
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       44 天前
    ida 反编译 so 文件还是有些门槛的吧,倒是编译到 dex 的代码,不做保护真的很容易破解
    dhb233
        3
    dhb233  
       44 天前
    这 Android 没关系吧,window 上的程序也是一样。加壳会增加破解难度,但是并不能防止破解。如果破解成本比收益低的情况下,就没有破解的必要了。

    感觉联网验证,把一部分功能跑在服务器上,这样破解的难度就很高了
    iOCZS
        4
    iOCZS  
       44 天前
    理论上是,但是现实中这样的人又有多少呢?只要增加复杂性,总能拦住绝大多数人。这样就够了
    DCodeLauncher
        5
    DCodeLauncher  
       44 天前   ❤️ 4
    逆向:花里胡哨。
    会员共享:我在听,你继续说。
    QX:该我上场了。

    开发者:up up up up up up up up up up up up up up up up up up up up up up bugs. win.还是我厉害。

    一看数据,付费用户 10 人,破解用户 1 人,白嫖用户 0 ,项目黄了。
    kyrieIvring
        6
    kyrieIvring  
       44 天前
    会员验证肯定要联网啊。现在还有不联网的游戏么。

    付费、订单类的都交给服务器
    seers
        7
    seers  
       44 天前
    现在一些加固做的还是挺牛逼的,自定义 linker ,混淆 so ,魔改 aes 算法,至少阻挡 98%的脚本小子
    Sosocould
        8
    Sosocould  
       44 天前 via Android
    会找盗版的人本来就不是你的用户。
    Levox
        9
    Levox  
       44 天前
    看看 TX ,敢 PJ 直接封号,管你是不是 VIP
    WngShhng
        10
    WngShhng  
       44 天前   ❤️ 3
    我做过一点这方面的东西,

    https://juejin.cn/post/7079794266045677575
    https://juejin.cn/post/7314558811111866418

    主要是因为业务本身不依赖后端,所以客户端做安全处理是不可避免的。
    虽然没法完全杜绝,但是应该可以提升一些门槛。
    mXw
        11
    mXw  
       44 天前
    这是一个博弈,让破解成本>收益 就可接受了
    liuxyon
        12
    liuxyon  
       44 天前
    联网的已经能破解了,直接拦截到本地破.
    tanranran
        13
    tanranran  
       44 天前   ❤️ 1
    用 flutter 写
    ajaxgoldfish
        14
    ajaxgoldfish  
       44 天前 via Android
    @WngShhng 分析的挺好的,但是大部分开发者都选择裸奔
    mmdsun
        15
    mmdsun  
       44 天前
    Play Integrity API ,可认为基本不可破解:
    https://developer.android.google.cn/google/play/integrity/overview?hl=zh-cn
    laminux29
        16
    laminux29  
       44 天前
    以前国际上最猛的 USB 硬件加密狗,甚至自建虚拟指令的加密方式,都能被破掉,安卓上这些渣渣加密,就不用提了。

    想保密,老老实实用自建云服务。

    关键服务上云,其他不重要的服务放在本地就好。
    leloext
        17
    leloext  
       44 天前
    逻辑放云端,另外要有安全运营,防破解并不是一锤子买卖。
    ysy950803
        18
    ysy950803  
    OP
       44 天前
    @Cooky 感觉纯本地应用就比较难受了。
    ysy950803
        19
    ysy950803  
    OP
       44 天前
    @mxT52CRuqR6o5 感觉也没啥门槛呢,IDA 可以直接转换成 C 代码,逻辑很容易就看出来了,就是要改代码需要懂汇编。
    ysy950803
        20
    ysy950803  
    OP
       44 天前
    @seers 混淆 so 确实很需要。
    ysy950803
        21
    ysy950803  
    OP
       44 天前
    @WngShhng 感谢分享!
    ysy950803
        22
    ysy950803  
    OP
       44 天前
    @mmdsun 算是 Google 官方比较好的方案了。
    mscsky
        23
    mscsky  
       43 天前
    主要看你 app 贵不贵,并实不实用
    mscsky
        24
    mscsky  
       43 天前
    放服务端其实可以破解免登陆 vip 的
    nmap
        25
    nmap  
       43 天前
    啥都是一句话容易,你自己去破解几个商业 app 试试容不容易呗
    unco020511
        26
    unco020511  
       43 天前
    核心功能和核心验证放服务端,只能这样,别无他法
    mxT52CRuqR6o5
        27
    mxT52CRuqR6o5  
       43 天前
    @ysy950803 #19 dex 手机有现成工具可以看和改,这门槛比要用 pc 的 ida 要低吧,而且因为要支持反射,函数名还是保留的,像 so 一般就没有函数名,有个函数名对反编译帮助很大的
    HitouchiMi
        28
    HitouchiMi  
       43 天前 via Android
    客户端软件不存在完全防破解的方法,默认客户端就是随便被人改的。现阶段可信执行就两条路径,云端执行跟可信加密硬件。当然硬件也不是完全不能破解。所以只需要让你的软件破解代价大于收益即可。例如一个版本一密
    TenProX
        29
    TenProX  
       43 天前 via iPhone
    你关键服务放到云端,然后客户端万一遇到网络一不好,下一次续费直接 cancel ,损失一个大客户。
    dododada
        30
    dododada  
       43 天前
    我们以前是用魔改加密算法+vmp 加固+行为日志分析,没上之前盗版满天飞,上了之后基本能防住
    Panameragt
        31
    Panameragt  
       43 天前
    你必须做成“网络游戏”
    baihaoyang
        32
    baihaoyang  
       43 天前
    用 Flutter 打包后的 APK 是不是没有这个烦恼。
    ysy950803
        33
    ysy950803  
    OP
       42 天前 via Android
    @nmap 我们这种小应用代码量有限肯定容易啊,因为有路径可以摸,商业应用代码量太大,破解肯定就不容易了,但是也是时间问题,不然哪来那些什么微 xQx 神器呢?
    ysy950803
        34
    ysy950803  
    OP
       42 天前 via Android
    @HitouchiMi 确实,多处签名验证和每个版本更换算法是比较好的方式。
    ysy950803
        35
    ysy950803  
    OP
       42 天前 via Android
    @baihaoyang 确实会好很多,flutter 打包完了基本都是 so ,原生代码很少。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1043 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:04 · PVG 07:04 · LAX 16:04 · JFK 19:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.