Divyansh GoyalOpen to Android internships & security research

// hello, world

Divyansh Goyal

Android Developer&&Reverse Engineer

I build native Android apps in Kotlin — and take APKs apart to understand exactly how they work.

jadx-gui — Developerkotlin → dex → smali
package dev.phoenix
class Developer(val name: String) {
val focus = listOf("Android", "Reverse Engineering")
// the one check worth patching
fun isHireable(): Boolean = true
}
$ kotlinc Developer.kt✓ 0 errors
logcatpackage:dev.phoenix · level:info
09-19 12:00:00.337IGDGrole=android_lead chapter="GDG JSS"
09-19 12:00:01.337IHackathonevent="AI Mobile Hackathon 2026" result=finalist rank=9/20 team=solo
09-19 12:00:02.337IOpenSourcemerged_upstream=5 [AnkiDroid, detekt, LibreTube, SimpMusic, Dokploy]
09-19 12:00:03.337DREpractice="OWASP MASTG" labs=[UnCrackable L1] tools=[jadx, frida]

Third-year B.Tech student focused on the Android platform: app architecture, on-device ML, developer tooling and Android security. I contribute fixes to open-source Android projects and lead the Android track at GDG JSS.

.section 0x01 projects

Things I've built

Android apps, an SDK and on-device ML, each designed and built end to end.

AuraPulse home screen with burnout index orb
AuraPulse chat with the AI companion
AuraPulse burnout risk and mood trends

0x01· Voice-first AI wellness companion

AuraPulseFinalist · ranked 9th

Detects early burnout from a two-minute daily voice check-in. Built solo for the AI Mobile Hackathon 2026.

  • Voice pipeline on Agora ConvoAI + Cartesia STT/TTS; Gemini turns each conversation into structured mood, energy and stress signals
  • On-device burnout engine over a 14-day weighted window — no account, data never leaves the phone
  • Model fallback chain keeps the app working through LLM quota or deprecation errors
  • Kotlin
  • XML Views
  • MVVM
  • Hilt
  • Room
  • StateFlow
  • WorkManager
FaceFrame · processing pipelineon-device
  1. FrameExtractor1 frame / 200 ms · 4 workers
  2. FaceAnalyzerML Kit · pose, eyes, blur filter
  3. FaceEmbedderMobileFaceNet → float[192]
  4. FaceTrackerdetections → tracklets
  5. FaceClustereragglomerative · cosine
  6. CollageRenderer1080×1920 poster

0x02· On-device face clustering from video

FaceFrame

Processes a portrait video fully offline, finds every distinct person, counts their appearances and renders a shareable collage.

  • ML Kit detection + MobileFaceNet (TFLite) producing 192-d embeddings per face
  • Links detections into tracklets across frames, then clusters them by cosine similarity
  • Parallel frame extraction; zero network calls, no storage permission on Android 10+
  • Kotlin
  • ML Kit
  • TensorFlow Lite
  • Coroutines
  • MediaStore
CrashTrace · reportadb logcat -s CrashTrace
12:04:11.201 D session 26aca110
12:04:11.388 D screen_open LoginActivity
12:04:14.020 D ui_click loginButton
12:04:14.912 D screen_open HomeActivity
12:04:17.455 D ui_click profileCard
12:04:19.730 D ui_click editProfileButton
E AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at ProfileEditFragment.bind(ProfileEditFragment.kt:42)
✓ timeline attached · 6 events · report queued

0x03· Crash analytics SDK

CrashTrace

An Android library that ships the timeline of user actions leading up to a crash — so you can reproduce it instead of guessing.

  • One-line init; sessions, screens and taps are captured automatically through lifecycle callbacks
  • Hooks the uncaught-exception handler and attaches the event timeline to the stack trace
  • Published on JitPack
  • Kotlin
  • Android SDK
  • Library design
  • JitPack
RookNomics home screen
RookNomics strategy builder
RookNomics equity curve and trade log

0x04· Trading strategy backtester

RookNomics

Replays 20+ years of market data candle by candle to test RSI and moving-average strategies against the S&P 500.

  • Configurable strategy builder, equity curves, drawdowns and a full trade log
  • Kotlin
  • MVVM
  • Custom charts
Quorum · signTypedData_v4EIP-712
{
  "primaryType": "Vote",
  "domain": { "name": "snapshot", "version": "0.1.4" },
  "types": { "Vote": [
    { "name": "from",     "type": "address" },
    { "name": "space",    "type": "string"  },
    { "name": "proposal", "type": "bytes32" },
    { "name": "choice",   "type": "uint32"  }
  ] },
  "message": { "space": "ens.eth", "choice": 1, … }
}
// → signature 0x5f3a…c91b  ·  gasless ✓

0x05· DAO governance on Android

Quorum

A native client for browsing and voting on Snapshot proposals from Uniswap, Aave and ENS.

  • Gasless votes signed as EIP-712 typed data over WalletConnect/Reown; pending votes survive process death
  • Proposal feed, DAO discovery, vote history and deadline notifications
  • Kotlin
  • Jetpack Compose
  • Retrofit
  • WalletConnect
CrewOrCrook · socket.iows://game
→room:join{ code: "X7K2" }
←game:started{ role: "crewmate" }
→player:move{ x: 412, y: 198 }
←body:reported{ by: "p3" }
←meeting:started{ timer: 60 }
→task:complete{ id: 4 }
←game:ended{ winner: "crew" }

0x06· Real-time multiplayer game

CrewOrCrook

An Among Us-style Android game — live movement, kills, body reports, meetings and tasks, synchronised over Socket.IO.

  • Event-driven game state shared across clients through a Node.js backend
  • Kotlin
  • Socket.IO
  • ViewBinding
  • Retrofit

.section 0x02 reversing

Android reverse engineering

I learn how Android apps really work by taking them apart — decompiling, reading and patching Dalvik bytecode, and hooking code at runtime. My practice follows the OWASP MASTG crackmes.

~/AndroidRE-LabOWASP MASTG · UnCrackable L1
re@lab~/uc1$apktool d UnCrackable-Level1.apk -o uc1
→ unpack to smali
re@lab~/uc1$jadx UnCrackable-Level1.apk -d out
→ decompile to Java
re@lab~/uc1$grep -r "verify" out/sources
→ trace the check
re@lab~/uc1$apktool b uc1 -o uc1.rebuilt.apk
→ rebuild
re@lab~/uc1$apksigner sign --ks re.keystore uc1.rebuilt.apk
→ re-sign & install
✓ lab complete — recovered the secret via static analysis
01

Static analysis

Decompile with JADX, trace the verify path and recover the AES/ECB-encrypted secret from the key and ciphertext.

02

Smali & bytecode

Read Dalvik bytecode at the register level, follow control flow, and understand how root and integrity checks are implemented.

03

Dynamic analysis

Inspect behaviour at runtime with Frida and ADB, and do basic inspection of native .so libraries.

  • JADX
  • apktool
  • Smali
  • Frida
  • ADB
  • apksigner
  • OWASP MASTG
write-ups in AndroidRE-Lab

.section 0x04 stack

The stack

What I reach for, written the way I'd declare it.

build.gradle.ktsmodule :app
dependencies {
    // language
    implementation("Kotlin")
    implementation("Coroutines")
    implementation("Flow")
    implementation("Java")

    // ui
    implementation("XML Views")
    implementation("ViewBinding")
    implementation("Jetpack Compose")
    implementation("Material")
    implementation("RecyclerView")
    implementation("Navigation")

    // architecture
    implementation("MVVM")
    implementation("Clean Architecture")
    implementation("Repository")
    implementation("Hilt")
    implementation("StateFlow")
    implementation("LiveData")

    // data
    implementation("Room")
    implementation("DataStore")
    implementation("Retrofit")
    implementation("Socket.IO")
    implementation("Firebase")
    implementation("WorkManager")

    // onDeviceMl
    implementation("ML Kit")
    implementation("TensorFlow Lite")
    implementation("Gemini API")

    // reverseEngineering
    implementation("JADX")
    implementation("apktool")
    implementation("Smali")
    implementation("Frida")
    implementation("ADB")
    implementation("apksigner")

    // build
    implementation("Gradle")
    implementation("Version Catalogs")
    implementation("AGP")
    implementation("JitPack")

    // also
    implementation("C++")
    implementation("Python")
    implementation("JavaScript")
    implementation("Node.js")
}
present

Android Lead

GDG JSS

Lead the Android track at the campus Google Developer Group chapter.

Divyansh speaking at a GDG JSS session
2026

Finalist · ranked 9th of top 20

AI Mobile Hackathon 2026

Designed and built AuraPulse solo — voice AI, on-device burnout prediction, Hilt/MVVM architecture.

2025 → now

Open-source contributor

Android & developer tooling

Merged fixes in AnkiDroid, detekt, LibreTube, SimpMusic and Dokploy — threading, lint rules and UI state bugs.

~ whoamineofetch
Divyansh Goyal portrait

divyansh@dev

────────────────

os:Android · Arch Linux

editor:Android Studio · nvim

langs:Kotlin · C++ · Python

edu:3rd-year B.Tech

focus:apps · reversing · oss

now:AuraPulse · MASTG labs

coffee:████████░░ 90%

.section 0x05 contact

Let's build something.

Open to Android internships, open-source collaboration and security research. Email is the fastest way to reach me.

divyansh@dev:~$ ./say_hi.sh