Back to skill

Security audit

Apk Decompiler

Security checks across malware telemetry and agentic risk

Overview

This skill is a disclosed APK reverse-engineering toolkit, but it should be used cautiously because it downloads and runs third-party tools on APK files.

Install only if you need APK reverse-engineering functionality and are authorized to analyze or modify the apps involved. Run setup on a trusted network, verify downloaded tools when possible, keep TOOLS_DIR under your control, and process unknown APKs in a sandbox, VM, emulator, or disposable device.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
os.makedirs(extracted_dir, exist_ok=True)
    
    # 使用 unzip 解压
    result = subprocess.run(
        ['unzip', '-o', apk_path, '-d', extracted_dir],
        capture_output=True, text=True
    )
Confidence
93% confidence
Finding
result = subprocess.run( ['unzip', '-o', apk_path, '-d', extracted_dir], capture_output=True, text=True )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
"""使用 apktool 解码资源"""
    print("📄 解码资源文件...")
    
    result = subprocess.run(
        ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'),
         'd', apk_path, '-o', os.path.join(output_dir, 'apktool-out'),
         '-f', '-s'],  # -f 强制覆盖, -s 不反编译源码
Confidence
83% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'), 'd', apk_path, '-o', os.path.join(output_dir, 'apktool-out'), '-f', '-s'], # -f 强制覆盖, -

subprocess module call

Medium
Category
Dangerous Code Execution
Content
jar_output = os.path.join(output_dir, f'{Path(apk_path).stem}-dex2jar.jar')
    
    result = subprocess.run(
        [d2j_cmd, apk_path, '-o', jar_output, '--force'],
        capture_output=True, text=True
    )
Confidence
88% confidence
Finding
result = subprocess.run( [d2j_cmd, apk_path, '-o', jar_output, '--force'], capture_output=True, text=True )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
print(f"  处理: {dex_file.name}")
        
        result = subprocess.run(
            ['java', '-jar', os.path.join(TOOLS_DIR, 'baksmali.jar'),
             'd', str(dex_file), '-o', out_dir],
            capture_output=True, text=True
Confidence
83% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'baksmali.jar'), 'd', str(dex_file), '-o', out_dir], capture_output=True, text=True

Tainted flow: 'TOOLS_DIR' from os.environ.get (line 19, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
"""使用 apktool 解码资源"""
    print("📄 解码资源文件...")
    
    result = subprocess.run(
        ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'),
         'd', apk_path, '-o', os.path.join(output_dir, 'apktool-out'),
         '-f', '-s'],  # -f 强制覆盖, -s 不反编译源码
Confidence
95% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'), 'd', apk_path, '-o', os.path.join(output_dir, 'apktool-out'), '-f', '-s'], # -f 强制覆盖, -

Tainted flow: 'd2j_cmd' from os.environ.get (line 114, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
jar_output = os.path.join(output_dir, f'{Path(apk_path).stem}-dex2jar.jar')
    
    result = subprocess.run(
        [d2j_cmd, apk_path, '-o', jar_output, '--force'],
        capture_output=True, text=True
    )
Confidence
97% confidence
Finding
result = subprocess.run( [d2j_cmd, apk_path, '-o', jar_output, '--force'], capture_output=True, text=True )

Tainted flow: 'TOOLS_DIR' from os.environ.get (line 19, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
print(f"  处理: {dex_file.name}")
        
        result = subprocess.run(
            ['java', '-jar', os.path.join(TOOLS_DIR, 'baksmali.jar'),
             'd', str(dex_file), '-o', out_dir],
            capture_output=True, text=True
Confidence
95% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'baksmali.jar'), 'd', str(dex_file), '-o', out_dir], capture_output=True, text=True

Tainted flow: 'TOOLS_DIR' from os.environ.get (line 19, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
print(f"❌ Smali 目录不存在: {smali_dir}")
        return False
    
    result = subprocess.run(
        ['java', '-jar', os.path.join(TOOLS_DIR, 'smali.jar'),
         'a', smali_dir, '-o', output_dex],
        capture_output=True, text=True
Confidence
92% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'smali.jar'), 'a', smali_dir, '-o', output_dex], capture_output=True, text=True )

Tainted flow: 'TOOLS_DIR' from os.environ.get (line 19, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
"""使用 apktool 重新打包"""
    print("📦 重新打包 APK...")
    
    result = subprocess.run(
        ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'),
         'b', project_dir, '-o', output_apk],
        capture_output=True, text=True
Confidence
92% confidence
Finding
result = subprocess.run( ['java', '-jar', os.path.join(TOOLS_DIR, 'apktool.jar'), 'b', project_dir, '-o', output_apk], capture_output=True, text=True )

Tainted flow: 'signer' from os.environ.get (line 69, credential/environment) → subprocess.run (code execution)

Medium
Category
Data Flow
Content
capture_output=True, text=True
        )
    else:
        result = subprocess.run(
            ['java', '-jar', signer, '--apks', apk_path,
             '--out', os.path.dirname(signed_apk) or '.'],
            capture_output=True, text=True
Confidence
93% confidence
Finding
result = subprocess.run( ['java', '-jar', signer, '--apks', apk_path, '--out', os.path.dirname(signed_apk) or '.'], capture_output=True, text=True

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The guide explicitly shows setting `android:usesCleartextTraffic="true"` but provides no warning that this allows unencrypted HTTP traffic, which can expose sensitive data to interception or tampering on hostile networks. In an APK reverse-engineering/modification skill, this is more dangerous because users are being taught to alter app security settings and may apply the change to production or third-party apps without understanding the consequences.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The guide shows enabling `android:allowBackup="true"` and `android:fullBackupContent` without noting that backups can increase exposure of app data, secrets, tokens, or personal information through local or cloud backup mechanisms. In the context of APK modification, users may unintentionally enable backup on apps that were not designed for it, expanding the attack surface and privacy risk.

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.