Android手游加固工具

2024.03.14 20:19:08

    简介

    该加固工具为jar包文件,适用于Windows、Linux以及Mac系统,以下均以Windows环境下描述,其他系统环境使用方法类似。

    下载地址

    点击下载

    使用说明

    • 使用方式:命令行模式(注意,第一次使用需要配置config.ini文件)
    • 命令行模式参数:
        java -jar NHPProtect.jar -yunconfig [options] -input  %inputapk%
    
    • 参数说明如下:
    参数 说明
    -yunconfig 必填项,表示自动从易盾后台获取加固参数
    -apksign 对加固后的 APK 包签名
    -zipalign 对加固后的 APK 包对齐
    -dex 对包体进行dex加密,使用dex加密后如果您的应用需要上架Google play市场,请确保Google play自动完整性保护选项是关闭的(默认是关闭的),避免与APP加固的功能冲突。具体操作如下:在自动完整性保护页面(版本 > 设置 > 应用完整性 > 自动完整性保护)中关闭保护功能。
    -input 必填项,参数后面跟待加固的APK文件路径

    config.ini文件配置说明

    默认config.ini必须要跟NHPProtect.jar在同一目录下,如果需要指定config文件,可以执行-config命令参数来处理:

        java -jar NHPProtect.jar -yunconfig -config E:\Desktop\test\config.ini  -apksign -zipalign -input  %inputapk%
    

    config的功能主要有以下三点:

    设置appkey

    用户需要将appkey填写在该配置文件中,格式如下所示。若无appkey,请联系客服。

        [appkey]
        key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

    配置签名相关信息

    若需要进行自动签名操作,除了在命令行中加入"-apksign"参数外,还需要在config.ini文件中设置签名相关信息,格式和含义如下所示。

        [apksign]
        keystore=D:\xxx\xx.keystore
        alias=xxx
        pswd=xxx
        aliaspswd=xxx
    

    keystore: 存储签名信息的文件,使用绝对路径表示

    alias: 签名别名

    pswd: 对应签名信息的密码

    aliaspswd: 对应签名别名的密码

    signmod 说明
    0 表示同时使用v1 v2和v3签名
    1 表示只使用v1签名
    2 表示只使用v2签名

    若signmod输入为其他字符,则默认值为0,同时使用v1 v2和v3签名

    若config.ini里不包含signmod,则默认为1,只进行v1签名。

    注:只使用v2签名,仅支持Android 7.0以上系统,请谨慎使用

    以上5个信息,任意一项有误的话,签名均会失败。

    为了兼容更多的签名版本需求,新增配置signver。优先级:signver>signmod。 signmod逻辑未做修改,现有逻辑不受影响,需要自由配置签名版本时可在config文件加上signver信息。

    [apksign]

    keystore=

    alias=

    pswd=

    aliaspswd=

    signmod=0

    signver=v1+v2+v3

    Google play上架问题

    如果使用-apksign签名aab文件(用jarsigner签的)无法上架应用商店,可以使用本参数-aabUseApksig, 使用apksigner对aab进行签名。

    示例:java -jar NHPProtect.jar -yunconfig -zipalign -apksign -aabUseApksig -input xxx.aab

    ps.当前谷歌官网上提示不可使用apksiner签名aab,实际上可行。 如果默认签名方式对aab签名后,出现提交google play失败的情况,可以优先使用-aabUseApksig。


    unity3d和通常的cocos引擎使用上面的配置即可,下面的配置针对不太常见的情况

    设置需要保护cocos2d lua脚本的后缀名

    目前cocos2d的lua脚本保护,默认支持后缀名为lua或者luac的脚本文件。若脚本的后缀名称为其他类型,可以在config.ini配置文件中设置,格式如下所示。

       [lua]
       
       lua_suffix1=luac
    

    目前只支持对一种脚本类型加密。采用默认的方式时,若同时存在有lua和luac脚本,程序会选择上传数量较多的脚本文件。

    配置符号表路径

    使用新版资源加密时(仅支持U3D游戏),在config.ini配置文件配置Symbols全路径 点击查看详细

    Il2cpp配置

       [SymbolPath]  
       path=D:\...unitypath...\AndroidPlayer\Variations\il2cpp\Release\Symbols
    

    Mono配置

       [SymbolPath]
       path=D:\...unitypath...\AndroidPlayer\Variations\mono\Release\Symbols
    

    对指定ab资源进行加密

    在输入参数 -u3dastenc的情况下
    1- 如果不指定ab资源,则对所有ab资源加密
    2- 如果指定ab资源则仅对指定的ab资源加密

    在config.ini配置文件中配置u3dabPath全路径,格式如下所示,注意大小写: Path可指定为单个文件或者单个目录,如下path1和path3为单个文件,path2为目录

        [u3dabPath]
        path1=assets/balling.ab
        path2=assets/GameAbs
        path3=assets/StreamAssets
    

    非unity3d、cocos2d、neox游戏引擎名称设置

    除了Unity3d、Cocos2d和Neox,本工具还支持其他游戏引擎的保护功能,只需要在config.ini配置文件中设置该引擎的so名称即可,格式如下所示。

    [engineSo]
    engineSo=libUE4.so
    

    注意事项

    • 注意,appkey为私密信息,请勿泄露!若appkey错误,会返回错误信息:
        [I] check appkey failed!
    

    解决方法:若已有appkey,检查在config.ini中是否输入有误;若无appkey,请至官网申请。

    • 若加固失败,会返回提示信息:
        [I] apk protect failed!For more details,please check log file
    

    其中,日志文件位于jar包客户端同一目录下的Log目录内,可根据日志文件来获取出错原因。

    解决方法:重新执行jar包客户端或至官网联系售后客服。

    • 若加固成功但由于其他原因(如中途网络断开等)导致下载加固后的APK失败:将会尝试3次重复下载,若3次后仍旧失败,会将具体的错误信息输出到log文件中。

    解决方法:根据错误信息检测网络等问题,重新加固。

    在线咨询 电话咨询:95163223 免费试用