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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Anti-debug bypass ve obfuscation çözme — ptrace, UPX, PRNG, packer tespiti
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Bu skill bir binary GDB'de düzgün çalışmıyorsa, ptrace ile korunuyorsa, packer kullanıyorsa veya custom PRNG/obfuscation içeriyorsa devreye girer.
Anti-debug'ın en yaygın yöntemi: binary kendi üzerine ptrace çağırır. Bir işlem zaten trace ediliyorsa ikinci ptrace başarısız olur → program çıkar.
# Tespit: binary GDB altında farklı davranıyor mu?
strace ./binary 2>&1 | grep ptrace
# "ptrace(PTRACE_TRACEME, ...)" görürsen → anti-debug var
# Yöntem 1: LD_PRELOAD ile ptrace'i sahte yap
cat > /tmp/noptrace.c << 'EOF'
#include <sys/ptrace.h>
long ptrace(enum __ptrace_request req, ...) {
return 0; // her zaman başarılı döndür
}
EOF
gcc -shared -fPIC -o /tmp/noptrace.so /tmp/noptrace.c
LD_PRELOAD=/tmp/noptrace.so ./binary
# Yöntem 2: GDB içinde ptrace syscall'ı geç
# GDB'de:
catch syscall ptrace
run
# ptrace çağrısında dur → return değerini sıfırla
set $rax = 0
continue
# Yöntem 3: ptrace çağrısını NOP ile patch'le
# objdump ile ptrace çağrısının adresini bul
objdump -d ./binary | grep -A 2 'ptrace\|PTRACE'
# Binary'yi hex editor'da aç, call ptrace → NOP (0x90) ile doldur
python3 -c "
data = bytearray(open('./binary','rb').read())
# offset'i objdump'tan al (örn: 0x1234)
offset = 0x1234
data[offset:offset+5] = b'\x90\x90\x90\x90\x90' # 5-byte NOP
open('./patched','wb').write(bytes(data))
"
chmod +x ./patched
# /proc/self/status kontrolü → TracerPid satırına bakar
strace ./binary 2>&1 | grep "open.*proc"
# → Binary /proc/self/status okuyor mu?
# Yöntem: Sahte /proc/self/status oluştur
mkdir -p /tmp/fakeproc/self
echo "TracerPid: 0" > /tmp/fakeproc/self/status
# LD_PRELOAD + readlink override veya chroot trick
# RDTSC tabanlı timing kontrolü
# Binary çok hızlı mı çalışıyor? → zamanlama anti-debug var
# GDB'de:
set scheduler-locking on # threading sorunlarını önler
# IsDebuggerPresent (Windows/Wine binary)
strings ./binary | grep -i "IsDebuggerPresent\|CheckRemoteDebugger"
# Entropy ile packer tespiti
python3 << 'EOF'
import math
data = open('./binary', 'rb').read()
# 256-byte bloklarda entropy hesapla
block_size = 256
for i in range(0, min(len(data), 4096), block_size):
block = data[i:i+block_size]
if not block: break
freq = {}
for b in block:
freq[b] = freq.get(b, 0) + 1
e = -sum((c/len(block))*math.log2(c/len(block)) for c in freq.values())
print(f"Blok {i:04x}: entropy={e:.2f} {'<<< PACKER?' if e > 7.2 else ''}")
EOF
# UPX standart çözme
upx -d ./binary -o ./unpacked
# UPX magic header bozuksa (CTF trick: magic değiştirilmiş)
python3 << 'EOF'
data = bytearray(open('./binary', 'rb').read())
# UPX magic: 0x55 0x58 0x21 0x00 veya "UPX!"
# CTF'lerde genelde ilk byte'lar değiştirilir
# Orijinal UPX header imzası: "UPX!" at offset 0, 8, ...
for i in range(len(data)-4):
if data[i:i+3] == b'UPX' and data[i+3] != ord('!'):
print(f"Bozuk UPX magic @ offset {i:#x}: {bytes(data[i:i+8]).hex()}")
data[i+3] = ord('!')
break
open('./fixed.bin', 'wb').write(bytes(data))
print("Düzeltildi → fixed.bin")
EOF
upx -d ./fixed.bin
Challenge Özeti: Binary F2 (GF(2)) üzerinde 512-bit PRNG kullanıyordu. Her adımda state = M * state (mod 2), M 512×512 ikili matris. Birkaç output veriliyordu, state'i geri hesaplamak gerekiyordu.
# SageMath ile F2 üzerinde 512x512 lineer sistem çözme
from sage.all import *
# F2 tanımla
F2 = GF(2)
# Matris M'yi binary'den çıkar (objdump/Ghidra ile bul)
# Örnek: M = Matrix(F2, 512, 512, [bit_listesi])
# Gözlemlenen output'ları topla (binary'yi çalıştır, output yakala)
# outputs = [o1, o2, o3, ...] — her biri 512-bit vektör
def crack_linear_prng(M, outputs):
"""
state_n = M^n * state_0
output_i = C * state_i (C = çıktı maskeleme matrisi)
"""
# Output vektörlerini stack'le → büyük lineer sistem
rows = []
for i, out in enumerate(outputs):
Mi = M ** i
rows.extend(Mi.rows())
A = Matrix(F2, rows)
b = vector(F2, sum([list(o) for o in outputs], []))
# Çöz
try:
state0 = A.solve_right(b)
return state0
except ValueError:
print("Çözüm yok — daha fazla output gerekli")
return None
# Sonucu doğrula
# state0 bulununca flag'i hesapla (binary'nin flag üretim mantığına göre)
Pratik adımlar:
# 1. Binary'den PRNG matrisini çıkar
# Ghidra'da PRNG init fonksiyonunu bul
# Matris .data section'da sabit olabilir
# 2. Binary'yi birkaç kez çalıştır, output topla
for i in $(seq 1 20); do ./binary 2>&1 | tee -a /tmp/outputs.txt; done
# 3. SageMath script'ini çalıştır
sage ifuckup_solve.sage
# 4. state0'dan flag'i derive et
# Genel PRNG analiz şablonu
# Adım 1: PRNG gözlemle
outputs = []
for _ in range(50):
outputs.append(binary_output()) # binary'yi çalıştır
# Adım 2: Lineer mi? (Z modülü veya F2)
# Lineer: a[n] = c1*a[n-1] + c2*a[n-2] + ... (mod p)
# LCG: X_{n+1} = (a*X_n + c) mod m
# LCG tespiti
def detect_lcg(outputs, mod=None):
if mod is None:
# mod'u tahmin et (genelde 2^32 veya 2^64)
mod = 2**64
# a ve c'yi bul
# a = (o2 - o1) * modular_inverse(o1 - o0) mod m
diffs = [outputs[i+1] - outputs[i] for i in range(len(outputs)-1)]
# Eğer diffs sabit orana sahipse → LCG var
pass
# Mersenne Twister tespiti (Python random)
# 624 output yeterli → tüm state recover edilir
from randcrack import RandCrack
rc = RandCrack()
for o in outputs[:624]:
rc.submit(o)
predicted = rc.predict_getrandbits(32)
# PIE binary'de gerçek adresi bul
gdb ./binary
# GDB içinde:
info proc map # memory layout
# Base adres: 0x555555554000 (typical)
# offset + base = gerçek adres
# ASLR'ı devre dışı bırak (debugging için)
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# veya GDB'de:
set disable-randomization on
# Breakpoint: fonksiyon adı (stripped değilse)
break main
break *0x401234 # manuel adres
# Self-modifying code: .text section'ı izle
watch -l *(char *)0x401000@4096 # .text başlangıcını izle
# Değişince dur → hangi kod kendini modifiye ediyor?
# Anti-debug bypass sonrası devam
catch syscall ptrace
run
# ptrace'de dur
set $rax = 0
continue
# Core dump analizi (binary crash'lerse)
ulimit -c unlimited
./binary
gdb ./binary core
bt # backtrace
# Statik olarak tespit et
objdump -d ./binary | grep -E 'mprotect|mmap.*PROT_EXEC'
readelf -d ./binary | grep TEXTREL
# Dinamik olarak izle
strace -e mprotect,mmap ./binary 2>&1 | grep PROT_EXEC
# Hangi bölge değişiyor?
gdb ./binary
# Process map'e bak
info proc map
# Sonra watchpoint koy ilgili adresi
awatch *0x<adres>
strace kendisi de bir tracer → anti-debug tetiklenebilir, LD_PRELOAD daha güvenli아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.