92Developer
V2EX  ›  Android

我的 app 被人干了,颠覆了我的认知!

  •  
  •   92Developer · Dec 22, 2025 · 18566 views
    This topic created in 154 days ago, the information mentioned may be changed or developed.

    上周我 app 用户群来了一位不速之客,发了一张图片

    image

    我一看,我艹,这不被破解了嘛。 随即我踢了他,然后当天下午加了他 wx ,他同意了。 整个聊天过程没有急眼,他还表明破解的这个包没有流传出去。 因为那个人只愿出几十块钱,他肯定不会成交的,纯试试水,就破了。

    从聊天记录我总结出以下几点:

    1:他不懂安卓代码,纯靠几个工具 [其中有 MT 管理器[狗东西,开发者天敌]] 就能快速重签打包,我在 Java 和 cpp 中有几个签名验证的埋点,他依然能打包,并正常运行。

    2:我的 app 核心功能要用到安装包中的本地带密 zip ,解压密码由后台配置信息接口返回,每个版本的安装包中的 zip 解压密码都不一致,所以我故意改了后台配置信息接口中的密码,他破解的老包功能依然正常使用,我轻描淡写问了他,他说就一个工具就能搞定。

    3:他还能破包后加卡密弹窗,说这是基操。视频链接: https://m.okjike.com/originalPosts/69493b881cc9bc8e54a2608d?s=eyJ1IjoiNjM1Nzg4ZjM0N2RkNjRhN2Y3Y2RiMTk0In0%3D

    经过几天的 v 站查帖和看 B 站视频,我知道业务逻辑在本地是无法完全防破解的,只是有几点疑问。

    1:加卡密弹窗的云注入平台为爱发电?就没人投诉吗?

    2:他破解的包为什么不受后端动态解压密码控制?如果绕过校检本地如何解压成功呢?

    132 replies    2026-01-20 18:00:41 +08:00
    1  2  
    v1
        101
    v1  
       Dec 23, 2025
    南山必胜客:只有律师函是靠谱的
    treblex
        102
    treblex  
       Dec 23, 2025 via iPhone
    找他合作一下,一边卖破解版,一边更新,隔段时间继续破解🌚破解当做营销手段就好了
    v1
        103
    v1  
       Dec 23, 2025
    @treblex 两头吃啊
    zengxs
        104
    zengxs  
       Dec 23, 2025
    @gam2046 #5
    TEE 验证在国产设备上问题很大(特别为某为设备,他们基本上不用 Google 的根证书,这部分设备占比会在 30+% 以上)
    另外这种方式也解决不了楼上说过的 hook 手段
    ntdll
        105
    ntdll  
       Dec 23, 2025
    @zengxs 唔,我们现在已经不考虑华为的设备了,老鸿蒙官方也基本不维护了,新鸿蒙本身也和 Android 脱钩了。

    至于 hook ,可以明示下,可以怎么欺骗过服务端校验呢,本身设备上是拿不到签发证书的,而解锁状态也是由 TEE 写入的,设备上 hook 出来的证书链,也会载明设备已经解除 bootloader 锁,本质上就是依靠 TEE 签出的包名、应用签名、证书链来校验的。对于设备已经解锁的用户,我这里是直接拒绝使用,本身这部分用户占比就很低。
    People11
        106
    People11  
       Dec 23, 2025 via Android
    现在的一键过签都很强力的,hook PM ,IO 重定向强制读原包信息都是基本操作了,你要对抗就得上一些非常规手段,例如校验内存中的 dex ,多维度校验 application 入口,热更一个 vm 从外部校验,然后把签名校验逻辑藏在某些组件的逻辑中,例如签名校验不通过就打断 mmkv 的解密而不是直接闪退弹窗什么的,让破解者诊断成本直线上升。当然你想图省事直接上数字加固,这玩意虽然能一键脱但没法一键修,并且工具也不好找,总之让破解者的成本上升。
    zengxs
        107
    zengxs  
       Dec 23, 2025
    @gam2046 #105 直接 hook 把你整个验证函数替换掉就行了,根本走不到服务端校验那一步
    zengxs
        108
    zengxs  
       Dec 23, 2025
    @gam2046 #105 另外这个 30% 比例是按安卓兼容的设备算得(老鸿蒙和荣耀设备,不包括纯血鸿蒙),其他主流设备走 TEE 逻辑都没啥问题,可能还会有 5% 左右设备有问题。如果能舍弃掉这部分设备的话,TEE 的逻辑问题不大。

    但是安全性用技术手段是解决不了,只要涉及到逆向的对抗,本地技术手段基本都没啥用。还是要考虑用别的手段来防止破解,比如核心逻辑放到服务端,或者调整产品策略让灰产无利可图,具体要视产品情况而定。
    jeesk
        109
    jeesk  
       Dec 23, 2025
    1. 联网校验,双向 ssl 通信
    2. apk,classloader 教研
    3. root 校验

    校验到有问题,不要说出来,你只需要做一做手脚,对方毫不知情的情况下,玩一些黑魔法,对方心态就会崩溃。


    埋下陷阱, 比如直接把 key 光明正大的写到,当对方真的用这个 key 去操作的时候,说明对方真的在搞你, 然后你就可以标记为非法用户,慢慢玩对方就行了。 比如任务进行到一半卡住了,前几个识别都没问题,随机出问题。
    stinkytofux
        110
    stinkytofux  
       Dec 23, 2025
    @gam2046 #105 你拒绝解除 bootloader 锁的设备使用 app 这个操作就有很多规避方法了. 你的判断函数是不可信的, 包括判断 root 之类的, 函数的返回值都可以伪造. 用重打包技术也无需解锁 root 手机, 注入代码跟你的 app 同进程了. 跟彻底的还可以自己编译安卓系统, 那真的是随便改源码随便注入了, APP 端的检测形同虚设.
    jeesk
        111
    jeesk  
       Dec 23, 2025
    总的来说就是,对方破解,让你心态崩了, 其实你完全可以对等回击, 让对方心态崩就行了。 不要让对方觉得无法破解,而是一层套一层,让对方以为破解了, 然后后面出现更多的坑, 让对方猜, 到底破解了没。
    liyafe1997
        112
    liyafe1997  
       Dec 24, 2025
    @gam2046 你服务器校验啥?国产安卓设备又没有一个统一的可信根,相当一部分设备(尤其低端/山寨机)不搭载 GMS 不用 Google 根证书。
    mrzx
        113
    mrzx  
       Dec 24, 2025
    笑死了,zip 加密是最好破解的。。。你们作为程序员竟然不知道。。。

    ZIP 底层有个算法漏洞,不管你设多强力的密码,我也能破解掉。。

    换个 7z 的压缩格式。并且加密采用 AES-256 密码里包含数字,特殊符号,大小写,密码长度在 24 位以上。你让它破解试试看?
    mrzx
        114
    mrzx  
       Dec 24, 2025
    果然是隔行如隔山,计算机里细分起来,其实分很多行业。

    而自然很多程序员会以为在计算机领域自己啥都懂。是站在计算机顶尖的存在。。。。其实,他们了解的还是太少了。。
    realpg
        115
    realpg  
    PRO
       Dec 24, 2025
    @pipixiarwksb #97
    核心逻辑放远程, 联网调逻辑
    aino
        116
    aino  
       Dec 24, 2025
    @Gilfoyle26 #42 错了,行内人告诉你,一般安卓逆不过去的,都是直接去逆 ios ,ios 的防护少的很多
    pursuer
        117
    pursuer  
       Dec 24, 2025
    @mrzx zip 也支持 AES256 的,只是早期默认使用的 ZipCrypto 容易受到明文攻击
    Lujango
        118
    Lujango  
       Dec 24, 2025
    做成在线版呢,就是数据交互都会在云端。
    workshop
        119
    workshop  
       Dec 24, 2025
    apk 没加固么
    lizy0329
        120
    lizy0329  
       Dec 24, 2025
    @aino 破解了 ios 版,能上架?能获得收入?
    aino
        121
    aino  
       Dec 24, 2025
    @lizy0329 #120 破解方式很多种,不一定是重新签名打包,也能逆向 api 之类的,逆向工具类的是最简单,逆向 api 的价值大
    991547436
        122
    991547436  
       Dec 24, 2025
    @mrzx 不懂就问 zip 是什么漏洞可以破?
    991547436
        123
    991547436  
       Dec 24, 2025
    建议换个加固再加上代码混淆



    92Developer
        124
    92Developer  
    OP
       Dec 25, 2025
    @991547436 我去,爱加密这么不堪一击吗?
    wangwlianl
        125
    wangwlianl  
       Dec 26, 2025
    建议使用 Flutter 重写,自带 vmp ,很难被反编译,另外也不太好抓包,加三代壳,虽然可以 FART 脱壳只是时间问题,但可以增加逆向成本,他会花很多时间去逆,逆到一半估计就心态爆炸
    Vercetti
        126
    Vercetti  
       Dec 26, 2025
    逆向真是一个做小饿不死,做大也饿不死的工种
    nyxsonsleep
        127
    nyxsonsleep  
       Dec 26, 2025
    部分逻辑放远程就行。
    比如 y=f1(x)f2(x),只要 f2(x)在远程就行。
    你 yolo 识别完了,肯定要计算左用户和右用户现存牌量吧。这个逻辑放远程就行。
    而破解者要猜测这个被放到远程的内容是什么,这就是复杂度。破解就是在对抗这部分复杂度,复杂度越大成本越高,只要成本高到一定程度就能筛选掉一部分破解者。

    典型的如私服游戏,如果源码没有泄露,原理就是客户端视作开源,将服务端的黑盒补全。
    在本地的所有内容都应该视作安全泄露,而云端为什么安全?因为云端不在破解者手里。
    Aliceeeeee
        128
    Aliceeeeee  
       Dec 27, 2025 via iPhone
    呵呵,你不开源自然有人帮你开源
    kero991
        129
    kero991  
       Dec 27, 2025 via Android
    @dynastysea Steam 没有破解? Steam 几乎等于没有加密,各种入库工具,各种一个 dll 通杀所有 Steam 单机的多的是,gog 倒是真的连验证都没有。

    破解最无脑的就是暴力破解,找到你输入授权码的函数无脑返回 Ture ,或者判断是不是会员的函数无脑返回 Ture 。然后找找暗桩继续返回 Ture 。
    过了爆破这一关,能挡住 80%的破解作者吧,倒也不是真这么多人只会爆破,而是真进去搞加密算法比较费时间,你不一定值得人家这么搞而已。
    单机游戏女角色穿什么都不一定了,你还指望挡得住一个运行
    92Developer
        130
    92Developer  
    OP
       Dec 29, 2025
    @Aliceeeeee 开源你大爷开源,你对开源俩字怕是有什么误解吧?
    Kaisar
        131
    Kaisar  
       Dec 29, 2025
    1. 不要使用 SDK 接口去校验应用签名,通过/proc/{pid}/maps 获取到自身 apk 路径然后直接调用 syscall 打开文件,使用自定义函数解析函数去解析 apk 签名
    2. 你的本地 zip 是加密的但是每个版本的密码都是固定的跟你后端改什么密码无关亡羊可补不了牢了
    Untu
        132
    Untu  
       Jan 20
    直接报警不要犹豫,你最好是个公司主体,报警更有效果。业务逻辑在本地研究防破解没有用的
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5803 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 133ms · UTC 02:35 · PVG 10:35 · LAX 19:35 · JFK 22:35
    ♥ Do have faith in what you're doing.