Skip to content

APK 加固规则 ​

packer75 条

apkid/rules/apk/packers.yara — 75 条规则,按厂商分组。这些规则匹配 APK 内 lib/*/ 原生库文件名和 assets/ 资产文件名,识别各路加固方案。这是 APKiD 检测量最大的单文件。

🎯 检测原理 ​

加固方案的壳代码以 so 库形式存在,运行时由 System.loadLibrary 加载并解密真实 dex。这些 so 库和配套资产有固定命名约定,扫一遍 ZIP 条目名即可判定。所有规则形如 is_apk and <lib/asset 字符串>。

📋 规则清单(按厂商分组) ​

🛡️ 360 加固(Qihoo 360) ​

规则tag说明
jiagu_360_v4packerQihoo 360 Jiagu v4 — libjiagu(_art)?\.so
jiagu_360_v5packerQihoo 360 Jiagu v5 — libjiagu(_so)?_64\.so(arm64)
jiagu_360_v6packerQihoo 360 Jiagu v6 (enhanced) — libjiagu_v6.so + .dat 资产
jiagupackerJiagu — libjiagu.so / libjiagu_art.so(含 youAreFooled 戏弄函数)
jiagu_apackerJiagu (ApkToolPlus) — assets/jiagu_data.bin + libapktoolplus_jiagu.so
qihoo360packerQihoo 360 — libprotectClass.so(排除 kiro)

🛡️ 腾讯(Tencent) ​

规则tag说明
tencentpackerMobile Tencent Protect — libshell.so / libmobisecy.so / /mix.dex
tencent_apackerMobile Tencent Protect — `libshell(a
tencent_bpackerTencent Security Enterprise Edition — libshell-superv.*.\d{4}.so + dexMethod*.dat
tencent_legupackerTencent's Legu — assets/0OO00l111l1l + tosversion 等混淆名资产
tencent_legu_VMPpackerTencent's Legu (VMP) — libwsDataEncryption_AZAPP*.so + WSSEC[A-D].jar
tencent_legu_2024packerTencent Legu (2024+ version) — tpatch_*.dat 资产

🛡️ 梆梆(Bangcle) ​

规则tag说明
bangclepackerBangcle — libsecexe.so / libsecmain.so / container.dex
bangcle_secshellpackerBangcle (SecShell) — assets/secData0.jar + libSecShell.so
bangcle_secshell_vmppackerBangcle SecShell (VMP edition) — libSecShellEx.so
bangcle_standardpackerBangcle (standard edition) — 标准版 libsecexe.so

🛡️ 爱加密(Ijiami) ​

规则tag说明
ijiamipackerIjiami — assets/ijiami.dat / ijiami3.ajm / IJMDal.Data
ijiami_propackerIjiami Pro (enterprise edition) — libijmDataEncryption.so + IJMDal.Data

🛡️ 百度 / 阿里 ​

规则tag说明
baidupackerBaidu — libbaiduprotect.so / baiduprotect1.jar
alibabapackerAlibaba — libmobisec.so
alibaba_jiagu_v2packerAlibaba Jiagu v2 (mobisecenhance) — libmobisecy.so 动态加载

🛡️ AppGuard(NHN/NProtect) ​

规则tag说明
appguardpackerAppGuard — assets/appguard/ + assets/classes.sox
appguard_apackerAppGuard — AppGuard0.jar / libAppGuard.so
appguard_bpackerAppGuard — assets/appguard/(排除主规则)
appguard_cpackerAppGuard (TOAST-NHNent) — classes.jet / libloader.so / agconfig
appguard_dpackerAppGuard — libcompatible.so

🛡️ DexProtector ​

规则tag说明
dexprotectorpackerDexProtector v6.x.x — dp.*.so.dat + classes.dex.dat
dexprotector_apackerDexProtector(旧版)— dp.arm-v7.art.kk.so 等 ART/DVM 变体
dexprotector_bpackerDexProtector(新版)— <pkg>.<arch>.so.dat 正则
dexprotector_cpackerDexProtector — dp.<arch>.so.<rand>.mp3
dexprotector_dpackerDexProtector — <rand>.mp3 + libdexprotector.so / libalice.so
dexpro_aide_apackerDexProtector for AIDE — dp-lib/dp.kotlin-v1.lua.mph
dexpro_aide_bpackerDexProtector for AIDE — dexpro-build.properties

🛡️ 其它加固 ​

规则tag说明
dxshieldpackerDxShield — libdxbase.so / assets/DXINFO.XML
secneo_apackerSecNeo.A — libDexHelper.so / assets/classes0.jar(兜底)
secneo_bpackerSecNeo.B — libdexjni.so
secneo_cpackerSecNeo.C — libdatajar.so
apkprotectpackerAPKProtect — apkprotect.com/key.dat / libAPKProtect.so
apkprotect_apackerAPKProtect 6.x — libapkprotect.so + apkprotect-build.properties
apkprotect_bpackerAPKProtect 9.x — assets/ap.res/ 资源目录
kiropackerKiro — libkiroro.so + assets/sbox
qdbh_packerpackerqdbh packer — assets/qdbh
unicom_loaderpackerUnicom SDK Loader — libdecrypt.jar + libunicomsdk.jar
liapppackerLIAPP — /LIAPPEgg / LIAPPClient.sc / assets/LIAPP.ini
app_fortifypackerApp Fortify — libNSaferOnly.so
nqshieldpackerNQ Shield — libnqshield.so / nqshell
nagapackerNaga — `lib(e
medusahpackerMedusah — libmd.so
medusah_appsolidpackerMedusah (AppSolid) — assets/high_resolution.png(伪装图片)
pangxiepackerPangXie — libnsecure.so
konypackerKony — libkonyjsvm.so + assets/js/startup.js
approovpackerApproov — libapproov.so + assets/cbconfig.JSON
yidunpackeryidun — libnesec.so + Lcom/netease/nis/wrapper/Entry
apkpackerpackerApkPacker — assets/ApkPacker/apkPackerConfiguration
chornclickerspackerChornClickers — libhdus.so + libwjus.so
appsuit_packerpackerAppSuit — assets/appsuit/momo + libAppSuit.so
appsealingpackerAppSealing — libcovault.so + assets/appsealing.dex
appsealing_apackerAppSealing — assets/AppSealing/*(>3 个条目)
secenhpackerSecenh — assets/libsecenh.so + respatcher.jar
apkencryptorpackerApkEncryptor — src/<hash> 目录
epicvmpackerEpic VM — libEpic_Vm.so
appironpackerSecucen AppIron — libAppIron-jni_v*.so + assets/appiron/
eversafepackerEversafe — libeversafe.so + assets/eversafe/eversafe_*.data
appcamopackerAppCamo — libalib.so + assets/<md5>/<md5>.png
aegispackerAegis - Android Republic Mods — assets/aegis/aegis.mf 等
kangapackpackerKangaPack — libapksadfsalkwes.so(原生解密壳)
tongfu_shieldpackerTongfu shield — libegis.so + assets/mode/virtual
zimperium_zshield_apkpackerZimperium (zShield) — lib<name>.so + assets/*/*.szip/0.odex
nesun_apkpackerNesun — libzprotect.so
gpresto_apkpackerG-Presto (anti-cheat) — libATG_L.so + assets/ATG_E*.sec
kiwisec_apkpackerKiwiSec — libkiwicrash.so / libkadp.so 等
dingxiang_apkpackerDingXiang — libsys_misc.so + assets/__param.data
manxi_secpackerManxi Security — libmanxi.so / assets/mxsafe.*
dexprotectxpackerDexProtect X (DexShellx) — libVMDexShellx.so / assets/DexShell.mp3
venustechpackerVenustech — `libven(Sec

私有规则 secneo_base(internal)是 SecNeo 三条规则的共用积木,匹配 libDexHelper.so / assets/classes0.jar,不单独输出。

🔍 规则源码示例 ​

jiagu_360_v5 — 经典的版本化 so 路径 ​

yara
rule jiagu_360_v5 : packer {
  meta:
    description = "Qihoo 360 Jiagu v5"
    url         = "http://jiagu.360.cn/"
    author      = "APKiDSkills"

  strings:
    // v5 uses libjiagu_64.so and libjiagu_so_64.so for arm64
    $lib64 = /lib\/(arm64.*)\/libjiagu(_so)?_64\.so/
    $lib32 = /lib\/(armeabi.*)\/libjiagu(_so)?\.so/

  condition:
    is_apk and $lib64 and ($lib32 or $lib64) and not jiagu_a
}

要点:not jiagu_a 排除 ApkToolPlus 变体;同时要求 arm64 库存在,避免误报。

tencent_legu — 混淆文件名资产 ​

yara
rule tencent_legu : packer {
  strings:
    $a = "assets/tosversion"
    $b = "assets/0OO00l111l1l"      // O/0/l 混淆命名
    $c = "assets/0OO00oo01l1l"
    $d = "assets/o0oooOO0ooOo.dat"
  condition:
    is_apk and $b and ($a or $c or $d)
    and not tencent and not tencent_a and not tencent_b
}

乐固用 0OO00l111l1l 这种 O/0/l 难辨的文件名做资产——人眼难读,但作为字符串特征反而独一无二。

📊 finding 示例 ​

json
{
  "tag": "packer::jiagu_360_v5",
  "category": "packer",
  "source": "app.apk!assets/libjiagu.so",
  "identifier": "jiagu_360_v5",
  "confidence": "low"
}

APK 层路径匹配 → 置信度 low。若同时在 classes.dex 命中 jiagu_360_dex,置信度升 high。

🧠 版本变体规则 ​

jiagu_360_v4/v5/v6、tencent_legu_2024、bangcle_secshell_vmp/bangcle_standard、ijiami_pro、alibaba_jiagu_v2 这些是 APKiDSkills 扩展的版本区分规则,在原通用规则(jiagu/tencent_legu/bangcle/ijiami/alibaba)基础上,用更细的 lib 命名约定区分版本/edition。它们都带 and not <原规则> 避免双命中。

📍 相关 ​

基于 GPL & Commercial 双重许可发布