Android 应用是不是几乎没有办法防破解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ysy950803
V2EX    Android

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

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

    感觉联网验证,把一部分功能跑在服务器上,这样破解的难度就很高了
    iOCZS
        4
    iOCZS  
       2024-03-14 19:33:49 +08:00
    理论上是,但是现实中这样的人又有多少呢?只要增加复杂性,总能拦住绝大多数人。这样就够了
    DCodeLauncher
        5
    DCodeLauncher  
       2024-03-14 19:36:58 +08:00   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  
       2024-03-14 19:41:03 +08:00
    会员验证肯定要联网啊。现在还有不联网的游戏么。

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

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

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

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

    关键服务上云,其他不重要的服务放在本地就好。
    leloext
        17
    leloext  
       2024-03-14 22:48:39 +08:00
    逻辑放云端,另外要有安全运营,防破解并不是一锤子买卖。
    ysy950803
        18
    ysy950803  
    OP
       2024-03-14 23:37:58 +08:00
    @Cooky 感觉纯本地应用就比较难受了。
    ysy950803
        19
    ysy950803  
    OP
       2024-03-14 23:39:15 +08:00
    @mxT52CRuqR6o5 感觉也没啥门槛呢,IDA 可以直接转换成 C 代码,逻辑很容易就看出来了,就是要改代码需要懂汇编。
    ysy950803
        20
    ysy950803  
    OP
       2024-03-14 23:40:41 +08:00
    @seers 混淆 so 确实很需要。
    ysy950803
        21
    ysy950803  
    OP
       2024-03-14 23:41:51 +08:00
    @WngShhng 感谢分享!
    ysy950803
        22
    ysy950803  
    OP
       2024-03-14 23:45:11 +08:00
    @mmdsun 算是 Google 官方比较好的方案了。
    mscsky
        23
    mscsky  
       2024-03-15 09:33:47 +08:00
    主要看你 app 贵不贵,并实不实用
    mscsky
        24
    mscsky  
       2024-03-15 09:34:24 +08:00
    放服务端其实可以破解免登陆 vip 的
    nmap
        25
    nmap  
       2024-03-15 10:25:24 +08:00
    啥都是一句话容易,你自己去破解几个商业 app 试试容不容易呗
    unco020511
        26
    unco020511  
       2024-03-15 10:41:24 +08:00
    核心功能和核心验证放服务端,只能这样,别无他法
    mxT52CRuqR6o5
        27
    mxT52CRuqR6o5  
       2024-03-15 10:50:09 +08:00
    @ysy950803 #19 dex 手机有现成工具可以看和改,这门槛比要用 pc 的 ida 要低吧,而且因为要支持反射,函数名还是保留的,像 so 一般就没有函数名,有个函数名对反编译帮助很大的
    HitouchiMi
        28
    HitouchiMi  
       2024-03-15 12:13:26 +08:00 via Android
    客户端软件不存在完全防破解的方法,默认客户端就是随便被人改的。现阶段可信执行就两条路径,云端执行跟可信加密硬件。当然硬件也不是完全不能破解。所以只需要让你的软件破解代价大于收益即可。例如一个版本一密
    TenProX
        29
    TenProX  
       2024-03-15 13:50:16 +08:00 via iPhone
    你关键服务放到云端,然后客户端万一遇到网络一不好,下一次续费直接 cancel ,损失一个大客户。
    dododada
        30
    dododada  
       2024-03-15 15:07:00 +08:00
    我们以前是用魔改加密算法+vmp 加固+行为日志分析,没上之前盗版满天飞,上了之后基本能防住
    Panameragt
        31
    Panameragt  
       2024-03-15 17:02:13 +08:00
    你必须做成“网络游戏”
    baihaoyang
        32
    baihaoyang  
       2024-03-15 17:40:20 +08:00
    用 Flutter 打包后的 APK 是不是没有这个烦恼。
    ysy950803
        33
    ysy950803  
    OP
       2024-03-16 11:59:18 +08:00 via Android
    @nmap 我们这种小应用代码量有限肯定容易啊,因为有路径可以摸,商业应用代码量太大,破解肯定就不容易了,但是也是时间问题,不然哪来那些什么微 xQx 神器呢?
    ysy950803
        34
    ysy950803  
    OP
       2024-03-16 12:00:47 +08:00 via Android
    @HitouchiMi 确实,多处签名验证和每个版本更换算法是比较好的方式。
    ysy950803
        35
    ysy950803  
    OP
       2024-03-16 12:02:45 +08:00 via Android
    @baihaoyang 确实会好很多,flutter 打包完了基本都是 so ,原生代码很少。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2311 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 15:44 PVG 23:44 LAX 07:44 JFK 10:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86