Android 手游加固介绍—Laya

2024.09.20 14:14:05

    工具下载

    功能介绍

    引擎so保护

    易盾laya加固方案默认保护引擎so(liblayaair.so),使用 IDA 可以看到导出函数消失。

    laya脚本加密

    提供对于laya引擎中的lua源码、luac、luajit、js、jsc等加密,对于关键代码和核心逻辑保护,对抗luadec、luajit-decomp等逆行分析工具。

    laya资源加密

    提供对于laya引擎中所有资源类型的加密,比如,.png、skel、.plist、.jpg、.ttf、.manifest、json等等格式的资源文件,防止私服扒取资源等场景。

    dex保护

    提供对于在java层面的核心逻辑的保护,比如支付以及一些关键接口的保护。防止IDA、JEB、JADX、APKTool等分析工具。

    使用说明

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

    使用方式

    命令行模式(注意,第一次使用需要配置config.ini文件)

    1. 命令行模式参数
    java -jar NHPProtect.jar -yunconfig -zipalign -apksign -input E:\\yiduntest\\test.apk
    
    1. 参数说明如下:
    参数 说明
    -yunconfig 必填项,表示自动从易盾后台获取加固参数,加固配置已经在后台部署,可以根据实际情况调整 。
    -apksign 对加固后的 APK 包签名,需要配置config文件内的签名文件配置[apksign]字段。
    -zipalign 对加固后的 APK 包对齐,未对齐的包体可能存在安装失败的情况,建议对加固后的包都需要进行对齐。
    -dex 对包体进行dex加密,使用dex加密后如果您的应用需要上架Google play市场,请确保Google play自动完整性保护选项是关闭的(默认是关闭的),避免与APP加固的功能冲突。具体操作如下:在自动完整性保护页面(版本 > 设置 > 应用完整性 > 自动完整性保护)中关闭保护功能。
    -antirepack 搭配dex保护使用,会对加固时候输入的原包签名和加固后运行的包体签名进行校验,运行时候的包签名和加固时输入的原包签名不一致,则会退出应用处理。建议原包签名带上v1+v2。
    -input 必填项,参数后面跟待加固的APK/AAB文件绝对路径
    -output 默认加固后的文件输出在原文件同路径,-output参数可以指定加固后文件的输出路径和文件名,示例:java -jar NHPProtect.jar -yunconfig -zipalign -apksign -output E:\enc\test_enc.apk -input E:\yiduntest\test.apk

    config.ini文件配置说明

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

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

    config的功能主要有以下:

    设置appkey

    用户需要将appkey填写在该配置文件中,格式如下所示。appkey请在官网登录账号后加固服务-服务管理获取。

    [appkey]

    key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    配置签名相关信息

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

    [apksign]

    keystore=D:\xxx\xx.keystore

    alias=xxx

    pswd=xxx

    aliaspswd=xxx

    signver=v1+v2

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

    alias: 签名别名

    pswd: 对应签名信息的密码

    aliaspswd: 对应签名别名的密码

    signver:指定签名的版本,用+相连

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

    AAB包签名请加上-aabUseApksig参数

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

    cocos 资源加密(可选)

    laya引擎资源加密,需要在dun.163.com登录后, 安全加固 -加固设置内勾选资源加密参数,config 内增加以下配置指定资源文件类型后缀:

    [layaAsset]

    a1=.png

    a2=

    热更资源加密

    Java -jar %path%\NHPProtect.jar -SinglelayaEn -input E:\NHPtest\raw.zip

    注意事项

    加固会强校验包名,如有新包名需要加固,请提前向易盾运营报备。

    加固后的包,需要进行对齐和重签才可以正常安装,注意加固后的签名和对齐状态。

    母包加固后分包或者先分包后加固渠道包都可以,若母包加固后渠道包需要反编译包体,则母包加固时候不建议加上-dex,会导致分包反编译失败。

    安全和使用体验

    建议对线上历史未加固包体的代码和资源进行修改后再加固,以防历史包体被用于分析业务逻辑。

    更新和支持

    Jar工具会定期进行新版本检测,客户端网络正常的情况下触发更新时会自动升级到最新版本。也可手动通过更新命令进行升级。示例:

    Java -jar NHPProtect.jar -update
    

    也可以通过config 内的增加如下配置来设置加固工具是否更新,以及更新检测频率。

    [update]
    
    u=1 // u=1 更新 u=0 不触发自动更新
    
    t=1 //更新检测频率,单位 day,表示每 1天执行时候都会进行最新版本更新检测
    

    加固脚本由易盾在服务器部署,为保证线上包体方案的稳定性,非功能优化和问题修复不会改变后台的加固版本。建议有大版本更新迭代时候可以考虑升级到易盾新版本,建议根据版本排期提前测试。

    Online Chat Tel:95163223 Free trial