$ show cwuom/ono
ONO is an Android Xposed module that modifies and enhances the QQ messaging application (Tencent). It provides a broad set of features including custom sticker panels, message encryption, anti-revoke, developer tools (packet inspection, cookie retrieval), UI tweaks (bubble redirect, profile card menu), and entertainment hooks (fake group owner, sport step spoofing). The module supports both legacy Xposed (API 51–99) and modern LSPosed (libxposed API 100) frameworks, with a dual-entry architecture that unifies startup through a shared `UnifiedEntryPoint` and `StartupRoutine`. Internally, it uses a sophisticated hook item framework based on annotations and a KSP annotation processor to automatically register hook classes. The codebase is heavily reliant on reflection and reverse-engineering of QQ's internal classes, making it tightly coupled to specific QQ versions, but the core utilities (reflection helpers, configuration management, protocol building) are well-crafted and potentially reusable in other Android hooking projects. The project is actively maintained with frequent commits, responsive issue triage, and a comprehensive build system using Gradle convention plugins.
The LLM identified 4 files worth highlighting for reuse:
A self-contained Java reflection utility that provides generic access to constructors, fields, methods, and class metadata with filtering by modifiers (static, final, etc.). It uses only standard Java library classes (java.lang.reflect.*) and no internal imports, making it directly extractable into any Java/Android project. The `NSF` (Neither Static nor Final) and similar modifier-based search patterns demonstrate non-obvious skill in reflective programming.
A Kotlin Symbol Processing (KSP) annotation processor that scans for `@HookItem` annotated classes and generates a factory class (`HookItemFactory`) that can instantiate all hook items. This pattern isolates hook registration from implementation, enabling dynamic discovery without runtime reflection. The processor is self-contained and can be reused in any Android project that needs annotation-driven plugin or module registration.
A reusable Kotlin utility that provides extension functions (`hookBefore`, `hookAfter`, `hookReplace`) wrapping Xposed's `XC_MethodHook` with cleaner, functional syntax. It is independent of the rest of the codebase and can be extracted as a standalone helper for any Xposed module. The use of reified type parameters and inline functions demonstrates good Kotlin craftsmanship.
A custom Android ViewGroup implementing a draggable grid with smooth scrolling, item swap animations, and child snapping. It uses a `ScrollRunner` for inertia scrolling and `OnceRunnable` for queued move operations. The implementation is self-contained (no internal project imports) and can be extracted into any Android app needing a drag-sort grid. The event handling and coordinate math demonstrate advanced Android UI engineering.