Bir Windows .exe dosyasını "kaynak koda dönüştürmek" mümkün müdür? Ya da en azından Meclise bakalım mı?


237

Bir arkadaşım Facebook'tan bazı kötü amaçlı yazılımlar indirdi ve kendime bulaşmadan ne yaptığını merak ediyorum. Gerçekten bir .exe koda olamaz biliyorum, ama en azından Meclis görüntüleyebilir veya bir hata ayıklayıcı ekleyebilir miyim?

.NET yürütülebilir, CLI üstbilgisi olmadığını söylemek için düzenleyin.


3
facebook kötü amaçlı yazılım ?? bunu açıklayabilir misiniz
Aditya Mukherji

Süper geç cevap için özür dilerim ... ama sanırım böyle oldu: bir noktada kötü amaçlı yazılım çalıştırdı, bir noktada FB (ben) üzerindeki tüm kişilerini spam isteyen bir "video" bağlantısıyla spam olarak gönderdi "yeni codec bileşeni" indir. Bu anlamda bir solucan gibi davrandığını varsayıyorum.
21'de swilliams

Yanıtlar:


448

Bir hata ayıklayıcı ile program derlemesinde etkileşimli olarak adım atabilirsiniz.
Bir sökücü ile program montajını daha ayrıntılı olarak görüntüleyebilirsiniz.
Bir decompiler ile , ne yazıldığını bildiğinizi varsayarak bir programı kısmi kaynak koduna dönüştürebilirsiniz ( PEiD gibi ücretsiz araçlarla öğrenebilirsiniz - program paketliyse , önce paketini açmanız gerekir. YA Algılama-it-Kolay PEiD hiçbir yerinde bulamazsa. DİE üzerinde güçlü geliştirici topluluğuna sahiptir github şu anda).

debugger'lar:

  • OllyDbg , ücretsiz, daha kullanışlı hale getirmek için çok sayıda kullanıcı tarafından üretilen eklenti ve komut dosyası bulabileceğiniz 32 bitlik ince bir hata ayıklayıcı.
  • WinDbg , ücretsiz, Microsoft tarafından oldukça yetenekli bir hata ayıklayıcı. WinDbg, Windows içlerine bakmak için özellikle kullanışlıdır, çünkü veri yapıları hakkında diğer hata ayıklayıcılardan daha fazlasını bilir.
  • SoftICE , SICE arkadaşlara. Ticari ve geliştirme 2006'da durdu. SoftICE, işletim sisteminin altında çalışan (ve çağrıldığında tüm sistemi durduran) hardcore bir araçtır. SoftICE hala birçok profesyonel tarafından kullanılmaktadır, ancak elde edilmesi zor olabilir ve bazı donanımlarda (veya yazılımlarda çalışmayabilir - yani Vista veya NVIDIA gfx kartlarında çalışmaz).

Disassemblers:

  • IDA Pro (ticari) - satır sökücü / hata ayıklayıcı. Kötü amaçlı yazılım analistleri vb.Gibi çoğu profesyonel tarafından kullanılır. Ancak birkaç dolar maliyeti var ( ücretsiz sürüm var , ancak oldukça sınırlı)
  • W32Dasm (ücretsiz) - biraz tarihli ama işi bitirir . W32Dasm'ın bugünlerde terk edilebilir olduğuna inanıyorum ve bazı çok kullanışlı işlevler eklemek için çok sayıda kullanıcı tarafından oluşturulmuş kesmek var. En iyi sürümü bulmak için etrafa bakmanız gerekecek.

decompilers:

  • Visual Basic: VB Decompiler , ticari, biraz tanımlanabilir bayt kodu üretir.
  • Delphi: DeDe , ücretsiz, kaliteli kaynak kodu üretir.
  • C: HexRays , ticari, aynı şirket tarafından IDA Pro için bir eklenti. Harika sonuçlar üretir, ancak büyük bir paraya mal olur ve sadece kimseye satılmaz (ya da duydum).
  • .NET (C #): dotPeek , ücretsiz, .NET 1.0-4.5 derlemelerini C # için açar. .Dll, .exe, .zip, .vsix, .nupkg ve .winmd dosyaları için destek.

Yaptığınız her şeyde kullanışlı olabilecek bazı ilgili araçlar, ResourceHacker (ücretsiz) gibi kaynak editörleri ve Hex Workshop (ticari) gibi iyi bir hex editörüdür .

Ayrıca, kötü amaçlı yazılım analizi yapıyorsanız (veya SICE kullanıyorsanız) , her şeyi sanal bir makinede, yani VMware Workstation'da çalıştırmanızı yürekten öneririm . SICE durumunda, gerçek sisteminizi BSOD'lerden koruyacak ve kötü amaçlı yazılım durumunda, gerçek sisteminizi hedef programdan koruyacaktır. VMware ile kötü amaçlı yazılım analizi hakkında buradan bilgi edinebilirsiniz .

Şahsen, Olly, WinDbg & W32Dasm ve daha küçük yardımcı araçlar ile yuvarlanıyorum.

Ayrıca, diğer insanların yazılımlarını sökmenin veya hata ayıklamanın genellikle en azından EULA'ya karşı olduğunu unutmayın :)


16
Genelindeki son paragrafı takdir ediyorum, iyi tavsiye, ama soru bağlamında eğlenceli: Bir virüsün bir EULA ile geldiğinden şüpheliyim! ;-)
PhiLho

4
Aslında, bazı kötü amaçlı yazılımlar ve hatta geç trojanların içinde EULA'lar vardı (oh, bu ruslar ..) Tabii ki, araştırmalar tarafından göz ardı edilebilir (ve yok edilebilir), çünkü kimsenin onları dava etmeye gelmeyeceği varsayılabilir. .. Ayrıca, genellikle mahkemede bir şey ifade etmek için çok kötü yazılmışlardır.
anon6439

2
IDA Pro'nun önceki sürümünün ticari olmayan kullanım için ücretsiz olduğunu unutmayın.
Simon Buchan

6
Bugünlerde çoğu kötü amaçlı yazılımın (en azından derlenmiş kötü amaçlı yazılım) VMWare, Sanal PC, WINE, VirtualBox, vb.'de çalışıp çalışmadığını kolayca tespit edebileceğini unutmayın.
Mick

Sanal makinede koşuyorsanız Mavi Hap saldırısına dikkat edin.
Siqi Lin

44

psoul'un mükemmel yayını sorunuza cevap veriyor, bu yüzden onun iyi çalışmasını çoğaltmayacağım, ama bunun neden bir kerede mükemmel geçerli ama aynı zamanda çok aptalca bir soru olduğunu açıklamaya yardımcı olacağını hissediyorum. Sonuçta, burası öğrenilecek bir yer, değil mi?

Modern bilgisayar programları, insan tarafından okunabilen bir metin talimatları gövdesinin ("kaynak kodu" olarak adlandırılır) girilmesiyle başlayıp, bilgisayar tarafından okunabilir bir talimat gövdesi (alternatif olarak "ikili" veya "makine olarak adlandırılır) ile biten bir dizi dönüşüm yoluyla üretilir. kod ").

Bir bilgisayarın bir dizi makine kodu talimatını çalıştırma şekli nihayetinde çok basittir. Bir işlemcinin gerçekleştirebileceği her işlem (örn. Bellekten okuma, iki değer ekleme) sayısal bir kodla gösterilir. Eğer 1 numarasının çığlık anlamına geldiğini ve 2 numarasının kıkırdamak anlamına geldiğini söyledim ve sonra 1 veya 2'lik kartlar tutturarak sizden buna göre çığlık atmanızı veya kıkırdamanızı bekleseydim, aslında bir bilgisayarın kullandığı sistemin aynısını kullanırdım işletmek.

İkili dosya, bu kodlardan (genellikle "op kodları" olarak adlandırılır) ve op kodlarının üzerinde çalıştığı bilgilerden ("bağımsız değişkenler") oluşur.

Şimdi, montaj dili, dildeki her komut sözcüğünün işlemci üzerinde tam olarak bir op-kodu temsil ettiği bir bilgisayar dilidir. Bir montaj dili komutu ile işlemci op kodu arasında doğrudan 1: 1 çeviri vardır. Bu nedenle bir x386 işlemci için kodlama düzeneği, bir ARM işlemci için kodlama düzeneğinden farklıdır.

Sökme basitçe budur: bir program ikili (makine kodu) aracılığıyla okur, op kodlarını eşdeğer montaj dili komutlarıyla değiştirir ve sonucu bir metin dosyası olarak çıkarır. Bunu anlamak önemlidir; bilgisayarınız ikiliyi okuyabiliyorsa, ikiliyi de elinizdeki bir op-kod tablosuyla manuel olarak (ick) veya bir sökücü aracılığıyla okuyabilirsiniz.

Sökücülerin bazı yeni hileleri ve hepsinin var, ancak bir sökücünün nihayetinde bir arama ve değiştirme mekanizması olduğunu anlamak önemlidir. Bu yüzden onu yasaklayan herhangi bir EULA nihayetinde sıcak hava üfler. Bilgisayarın program verilerini okumasına bir kerede izin veremez ve bilgisayarın program verilerini okumasına izin veremezsiniz.

(Beni yanlış anlamayın, bunu yapmaya çalıştılar. Şarkı dosyalarında DRM'nin yanı sıra çalışıyorlar.)

Ancak, sökme yaklaşımına ilişkin uyarılar vardır. Değişken isimleri mevcut değildir; CPU'nuzda böyle bir şey yok. Kütüphane çağrıları cehennem gibi kafa karıştırıcıdır ve çoğu zaman diğer ikili dosyaların sökülmesini gerektirir. Ve montaj en iyi koşullarda okumak cehennem kadar zordur.

Çoğu profesyonel programcı, baş ağrısı olmadan montaj dilini oturamaz ve okuyamaz. Bir amatör için bu olmayacak.

Her neyse, bu biraz parlak bir açıklama, ama umarım yardımcı olur. Herkes benim tarafımdaki yanlışlıkları düzeltmekte özgür olabilir; Bir süre oldu. ;)


1
Bu parçalara ayırma hakkında ayrıntılı bilgi verir, ancak ayrıştırma hakkında ayrıntılı bilgi almak isterim. Meyvesiz olması muhtemel mi? Uyarılar nelerdir?
Prometheus

@has: Yerel kodun ayrıştırılması oldukça zor bir iştir, çoğu zaman sağdan imkansızdır. Optimize ediciler aşırı derecede agresiftir, sıklıkla kaynak kodunu hiçbir şeye çevirmezler. Hiçbir şeyi kodamazsınız.
Tahmin edilemez


11

İyi bir hata ayıklayıcı bunu yapabilir. OllyDbg'yi deneyin . (edit: WinAPI çağrılarına parametreleri bile çözen harika bir sökücü var!)




6

Sadece bir kötü amaçlı yazılımın ne yaptığını anlamaya çalışıyorsanız, ücretsiz araç İşlem Monitörü gibi bir şey altında çalıştırmak çok daha kolay olabilir , dosya sistemine, kayıt defterine, bağlantı noktalarına vb. rapor verecek ...

Ayrıca, ücretsiz VMWare sunucusu gibi bir sanal makine kullanmak bu tür işler için çok yararlıdır. "Temiz" bir görüntü oluşturabilir ve kötü amaçlı yazılımı her çalıştırdığınızda buna geri dönebilirsiniz.


4

Bazı bilgileri derlemede görüntüleyebilirsiniz, ancak yapılacak en kolay şeyin sanal bir makineyi ateşlemek ve ne yaptığını görmek olduğunu düşünüyorum. Açık paylaşımların veya bunun gibi bir şeyin olmadığından emin olun;)


Evet, bunu düşündüm, ama sadece onu öldürmek için bir VM kurma zahmetinden geçmek istemem :)
swilliams

1
Doğru, bu bir durum için bir güçlük, ama her zaman yeni yazılımları veya bunun gibi şeyleri test etmek için bir sanal makineyi tutmanın yararlı olduğunu düşünüyorum. Sonra ne istersem onu ​​yapabilirim ve sadece sonunda durumu kaydetmemeyi ve bir sonraki çalışma için temiz VM'ye geri dönmeyi seçebilirim.
Rob Prouse

4

Boomerang da kontrol etmeye değer olabilir.


Pek sayılmaz. en önemsiz yürütülebilir dosyalardan daha karmaşık bir şey için çöküyor ve yanıyor.
shoosh


3

Henüz hiç kimsenin Immunity Debugger hakkında hiçbir şey söylemediğine inanamıyorum .

Immunity Debugger istismarları yazmak, kötü amaçlı yazılımları analiz etmek ve ikili dosyaları tersine çevirmek için güçlü bir araçtır. Başlangıçta Ollydbg 1.0 kaynak koduna dayanıyordu, ancak isimleri giderme hatası düzeltildi. Kolay genişletilebilirlik için iyi desteklenen bir Python API'sine sahiptir , böylece analizde size yardımcı olması için python komut dosyalarınızı yazabilirsiniz.

Ayrıca, Corelan ekibinden Peter'ın mona.py , mükemmel araç btw adında yazdığı iyi bir tane var .


2

Programı bilgisayarınıza bulaşmadan ne yaptığını görmek için çalıştırmak istiyorsanız, VMWare veya Microsoft VPC gibi bir sanal makine veya programı SandboxIE gibi korumalı hale getirebilecek bir programla kullanın




2

2019'da söyleyebilirim ki, Ghidra ( https://ghidra-sre.org/ ) kontrol etmeye değer. Açık kaynak (ve ücretsiz) ve oldukça okunabilir C koduna kadar geri dönüş yapma yeteneği de dahil olmak üzere olağanüstü kod analiz yeteneklerine sahiptir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.