Skip to content
Agentmart
Submit a tool

ctf-android

CTF Android challenge analysis.

Skill by Yoraexe

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/yoraexe-ctf-android

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

CTF Android challenge analysis. APK static analysis with Jadx and APKTool, smali disassembly for flag validation logic, native library JNI reverse engineering with Radare2, ADB dynamic analysis with exported activity launch and content provider query, Frida dynamic instrumentation for method hooking and return value patching, smali patching to bypass flag checks, React Native JS bundle extraction, root detection bypass, SharedPreferences and SQLite flag recovery. Triggers: 'android ctf', 'apk reverse engineering', 'jadx decompile', 'apktool smali', 'frida android', 'adb ctf', 'android frida hook', 'apk flag', 'smali patch', 'android native jni', 'react native apk'.

Use cases: frontend, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/ctf-android

What's inside

Skill name
ctf-android
Description
CTF Android challenge analysis. APK static analysis with Jadx and APKTool, smali disassembly for flag validation logic, native library JNI reverse engineering with Radare2, ADB dynamic analysis with exported activity launch and content provider query, Frida dynamic instrumentation for method hooking and return value patching, smali patching to bypass flag checks, React Native JS bundle extraction, root detection bypass, SharedPreferences and SQLite flag recovery. Triggers: 'android ctf', 'apk reverse engineering', 'jadx decompile', 'apktool smali', 'frida android', 'adb ctf', 'android frida hook', 'apk flag', 'smali patch', 'android native jni', 'react native apk'.
License
MIT
Instructions
302 lines in SKILL.md · view on GitHub

Before installing

  • Instructions call the network

Files (1)

  • SKILL.md

SKILL.md (first lines)

# CTF Android — APK Reverse Engineering

Jadx, APKTool, ADB, Frida. Full static+dynamic workflow.

## Install

```bash
# Jadx (latest):
wget https://github.com/skylot/jadx/releases/latest/download/jadx-1.5.0.zip
unzip jadx-1.5.0.zip -d jadx && echo "export PATH=$PATH:$PWD/jadx/bin" >> ~/.bashrc

# APKTool:
wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
wget https://github.com/iBotPeaches/Apktool/releases/latest/download/apktool_2.9.3.jar
chmod +x apktool && sudo mv apktool /usr/local/bin/ && sudo mv apktool_2.9.3.jar /usr/local/bin/apktool.jar

# ADB:
sudo apt-get install adb

# Frida:
pip install frida-tools --break-system-packages
# Push frida-server to emulator:
# adb push frida-server /data/local/tmp/ && adb shell chmod 755 /data/local/tmp/frida-server
```

---

## Phase 1: Reconnaissance

```bash
# Unzip APK (it's a ZIP):
unzip challenge.apk -d apk_contents/
ls apk_contents/  # AndroidManifest.xml, classes.dex, lib/, assets/, res/

# Check manifest for exported components:
apktool d challenge.apk -o apk_decoded/
cat apk_decoded/AndroidManifest.xml | grep -E "exported|Activity|Provider|Receiver"

# Find interesting strings:
strings apk_contents/classes.dex | grep -i "flag\|secret\|pass\|key\|encrypt"

# Check assets for plaintext:
find apk_contents/assets/ -type f | xargs strings | grep -i "flag\|CTF"
cat apk_decoded/res/values/strings.xml | grep -i "flag\|secret"
```

---

## Phase 2: Static Analysis with Jadx

```bash
# Decompile to Java:
jadx -d jadx_out/ challenge.apk

# Search for flag logic:
grep -r "flag\|Flag\|FLAG" jadx_out/sources/ --include="*.java"
grep -r "checkFlag\|verify\|validate\|password" jadx_out/sources/ --include="*.java"

# Find crypto usage:
grep -r "AES\|DES\|Base64\|SecretKeySpec\|Cipher" jadx_out/sources/ --include="*.java"

# Find hardcoded keys/values:
grep -r "BuildConfig\|const String" jadx_out/sources/ --include="*.java"
grep -r "SharedPreferences\|openDatabase\|SQLite" jadx_out/sources/ --include="*.java"

# Native calls:
grep -r "native \|System.loadLibrary\|loadLibrary" jadx_out/sources/ --include="*.java"
```

---

## Phase 3: Smali Analysis

```bash
# Disassemble to Dalvik bytecode:
apktool d challenge.apk -o smali_out/

# Find main activity:
grep -r "onCreate\|onStart" smali_out/smali/ | head -10

# Read flag check class:
cat smali_out/smali/com/ctf/challenge/FlagChecker.smali

# Key smali instructions:
# const-string v0, "expected_value"   → hardcoded strings
# invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
# if-eqz v0, :cond_fail              → conditional jumps

# Search for comparisons:
grep -n "if-eqz\|if-nez\|equals\|const-string" smali_out/smali/com/ctf/challenge/*.smali
```

---

## Phase 4: Native Library Analysis

```bash
LIB="apk_contents/lib/x86_64/libchallenge.so"  # or armeabi-v7a, arm64-v8a

# Basic analysis:
strings "$LIB" | grep -i "flag\|secret\|CTF"
nm -D "$LIB" | grep "Java_"  # JNI function exports

# Radare2 analysis:
r2 "$LIB" -A
# Commands:
# afl        — list functions
# pdf @sym.Java_com_ctf_FlagChecker_checkNative  — disassemble
# iz         — list all strings
# iE         — list exports

# JNI function naming convention:
# Java_<package_dots_to_underscores>_<ClassName>_<methodName>
# Java_com_ctf_challenge_FlagActivity_checkFlag

# Check for embedded key in .rodata:
objdump -s -j .rodata "$LIB" | head -50
```

From Yoraexe/ceobe, MIT.

Signals

Stars
1
Forks
1
Open issues
0
Last commit (this folder)
Jul 17, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Yoraexe

Cite this page

ctf-android skill. Agent Mart. https://agentmart.dev/skills/yoraexe-ctf-android (last updated 2026-10-24)