Skip to content

APK 保护器规则 ​

protectormanipulator20 条

apkid/rules/apk/protectors.yara — 20 条规则。protector 类别检测 RASP(运行时应用自保护)SDK——不重打包 dex,而是注入 SDK 做反调试、反 Hook、环境检测、设备指纹等运行时保护。另有 1 条 manipulator 规则(资源混淆)。

🎯 protector vs packer ​

  • packer:把 dex 加密打包,运行时解密还原,结构变了。
  • protector:不重打包,注入 SDK 在运行时做保护,结构没变。

保护器 SDK 也会留 so 库和资产文件足迹,所以 APK 层能识别。详见 protector 类别。

📋 规则清单 ​

🔐 商业保护 SDK ​

规则tag说明
verimatrixprotectorInsideSecure Verimatrix — libmfjava.so
virbox_apkprotectorVirbox — libsandhook.so + libv++.so
vkey_apkprotectorVkey (V-OS App Protection) — libvosWrapperEx.so + assets/kernel.bin
free_rasp_oldprotectorFreeRASP(旧版)— libsecurity.so + libpolarssl.so
free_rasp_newprotectorFreeRASP(新版)— 旧版特征 + assets/talsec
ahnlab_v3_engineprotectorAhnlab V3 engine — libEngineManager.so + assets/ahnlab/engine/
ahope_appshieldprotectorAhope AppShield — libahope*.so
vguardprotectorVGuard — libedex.so + assets/dexsky.*
appdefenceprotectorExTrus AppDefence — assets/appdefence_xml
dpt_shellprotectorDPT Shell — libdpt.so + assets/app_name
build38protectorBuild38 — libtak.so + license.tak
shield_sdkprotectorShield SDK — libcashshieldabc-native-lib.so
bugsmirrorprotectorBugsMirror — libdefender.so + bugsmirror_authenticator.xml
bshieldprotectorBShield — assets/bshield.dat
denuvo_apkprotectorDenuvo — assets/tid + libvmpc.so
alibaba_secprotectorAlibaba Security SDK — `lib(alisecuritysdk
bureauprotectorBureau — libbureau-*.so
haiyunprotectorHaiyun'an Security — libitsec.so + assets/itse
oppo_protectprotectorOPPO Protect SDK — libOPPOProtect(2019)?.so

🎨 资源混淆(manipulator) ​

规则tag说明
andresmanipulatorResources Confusion — res/*.xml 条目数 > 10(AndResGuard 资源混淆)

注意 andres 的 tag 是 manipulator 不是 protector——它做的是资源路径混淆(缩短/打乱 res/ 下的文件名以减小体积并干扰分析),不是运行时保护。详见 manipulator 类别。

🔍 规则源码示例 ​

vkey_apk — 多 lib + 多资产交叉确认 ​

yara
rule vkey_apk : protector {
  strings:
    $lib1 = /lib\/(...\)\/libvosWrapperEx\.so/
    $lib2 = /lib\/(...\)\/libvtap\.so/
    $lib3 = /lib\/(...\)\/libloadTA\.so/
    $lib4 = /lib\/(...\)\/libchecks\.so/
    $asseta1 = "assets/firmware"
    $asseta2 = "assets/kernel.bin"
    $asseta3 = "assets/signature"
    $assetb1 = "assets/vkeylicensepack"
    $assetb2 = "assets/vkwbc_ta.bin"
    $assetb3 = "assets/voscodesign.vky"
  condition:
    is_apk and 2 of ($lib*) and 1 of ($asseta*) and 1 of ($assetb*)
}

Vkey 要求 2 个 lib + 1 个 firmware 资产 + 1 个 license 资产——多维度交叉,误报概率极低。

andres — 计数式匹配 ​

yara
rule andres : manipulator {
  strings:
    $res = /res\/[^\/]+\.xml/
  condition:
    is_apk and #res > 10
}

#res > 10 是 YARA 的字符串出现计数——AndResGuard 会把大量 res/ 下的 xml 重命名成短路径,超过 10 个就判定。这是"行为特征"而非"文件名特征"。

📊 finding 示例 ​

json
{
  "tag": "protector::vkey_apk",
  "category": "protector",
  "source": "app.apk!lib/arm64-v8a/libvosWrapperEx.so",
  "identifier": "vkey_apk",
  "confidence": "low"
}

🧠 同名 SDK 在 DEX 层也有规则 ​

许多保护 SDK 同时在 dex/protectors.yara 有 dex 层规则(如 build38、shield_sdk、bshield、bureau、bugsmirror、alibaba_sec、vguard、appdefence、ahope_appshield、dpt_shell、ahnlab_v3_engine)——APK 层看 so 库路径,DEX 层看注入的 stub 类名。两者互补。

📍 相关 ​

基于 GPL & Commercial 双重许可发布