mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
41 lines
3.9 KiB
Markdown
41 lines
3.9 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Manuel **De-obfuscation Teknikleri**
|
||
|
||
**Yazılım güvenliği** alanında, gizli kodu anlaşılır hale getirme süreci olan **de-obfuscation**, kritik öneme sahiptir. Bu kılavuz, statik analiz tekniklerine odaklanarak de-obfuscation için çeşitli stratejileri incelemektedir ve obfuscation desenlerini tanımayı amaçlamaktadır. Ayrıca, pratik uygulama için bir alıştırma sunmakta ve daha ileri konuları keşfetmek isteyenler için ek kaynaklar önermektedir.
|
||
|
||
### **Statik De-obfuscation için Stratejiler**
|
||
|
||
**Obfuscated code** ile başa çıkarken, obfuscation'ın doğasına bağlı olarak birkaç strateji uygulanabilir:
|
||
|
||
- **DEX bytecode (Java)**: Etkili bir yaklaşım, uygulamanın de-obfuscation yöntemlerini tanımlamak ve ardından bu yöntemleri bir Java dosyasında çoğaltmaktır. Bu dosya, hedeflenen unsurlar üzerindeki obfuscation'ı tersine çevirmek için çalıştırılır.
|
||
- **Java ve Native Code**: Diğer bir yöntem, de-obfuscation algoritmasını Python gibi bir betik diline çevirmektir. Bu strateji, temel amacın algoritmayı tamamen anlamak değil, etkili bir şekilde çalıştırmak olduğunu vurgular.
|
||
|
||
### **Obfuscation'ı Tanımlama**
|
||
|
||
Obfuscated code'u tanımak, de-obfuscation sürecindeki ilk adımdır. Anahtar göstergeler şunlardır:
|
||
|
||
- Java ve Android'deki **string'lerin yokluğu veya karıştırılması**, string obfuscation'ı önerebilir.
|
||
- **Assets dizininde ikili dosyaların varlığı** veya `DexClassLoader` çağrıları, kodun açılması ve dinamik yüklenmesi hakkında ipuçları verebilir.
|
||
- **Tanımlanamayan JNI fonksiyonlarıyla birlikte native kütüphanelerin kullanımı**, native yöntemlerin potansiyel obfuscation'ını gösterir.
|
||
|
||
## **De-obfuscation'da Dinamik Analiz**
|
||
|
||
Kodun kontrollü bir ortamda çalıştırılması, dinamik analiz **obfuscated code'un gerçek zamanlı olarak nasıl davrandığını gözlemlemeyi sağlar**. Bu yöntem, kodun gerçek amacını gizlemek için tasarlanmış karmaşık obfuscation desenlerinin iç işleyişini ortaya çıkarmada özellikle etkilidir.
|
||
|
||
### **Dinamik Analizin Uygulamaları**
|
||
|
||
- **Çalışma Zamanı Şifre Çözme**: Birçok obfuscation tekniği, yalnızca çalışma zamanında şifresi çözülen string'ler veya kod segmentleri içerir. Dinamik analiz sayesinde, bu şifreli unsurlar şifre çözme anında yakalanarak gerçek halleri ortaya çıkarılabilir.
|
||
- **Obfuscation Tekniklerini Tanımlama**: Uygulamanın davranışını izleyerek, dinamik analiz belirli obfuscation tekniklerini tanımlamaya yardımcı olabilir; örneğin, kod sanallaştırma, packer'lar veya dinamik kod üretimi.
|
||
- **Gizli Fonksiyonelliği Ortaya Çıkarma**: Obfuscated code, yalnızca statik analizle belirgin olmayan gizli işlevsellikler içerebilir. Dinamik analiz, koşullu olarak çalıştırılanlar da dahil olmak üzere tüm kod yollarını gözlemleyerek bu tür gizli işlevsellikleri ortaya çıkarmayı sağlar.
|
||
|
||
## Referanslar ve Daha Fazla Okuma
|
||
|
||
- [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
|
||
- BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
|
||
- Bu konuşma, bir Android uygulaması tarafından kullanılan en karmaşık anti-analiz native kütüphanelerinden birinin ters mühendisliğini ele alıyor. Çoğunlukla native kodda obfuscation tekniklerini kapsıyor.
|
||
- REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
|
||
- Bu konuşma, bir Android botnetinin davranışını gizlemek için kullandığı yalnızca Java kodunda bir dizi obfuscation tekniğini tartışıyor.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|