Soru:
Kaynak düzenleyicilerinin kullanımı nasıl engellenir
Mellowcandle
2013-03-30 13:03:52 UTC
view on stackexchange narkive permalink

Windows çalıştırılabilirlerinin kaynaklarını düzenlemeye izin veren çeşitli araçlar vardır. Bu araçlar, programların görünümünü ve hissini değiştirmek için çok kolay bir arayüz sağlar. Simgelerin, metinlerin, menülerin değiştirilmesi, tersine çevirme konusunda herhangi bir bilgi olmadan kolayca yapılabilir.

Sorum şu, kaynakların bu kadar kolay düzenlenmesini önlemek için hangi seçeneğim var?

üç yanıtlar:
#1
+15
Remko
2013-03-31 02:25:26 UTC
view on stackexchange narkive permalink

Şık ve basit bir çözüm, başlangıçta çalıştırılabilir dosyanızı imzalamak ve imzayı doğrulamaktır (herhangi bir değişiklik imzayı geçersiz kılacaktır). Biri sizin imza kontrolünüze yama uygulasa bile, imza yine de geçersiz olacak ve bu da exe'nin sizin teslim ettiğinizle aynı olmadığını açıkça ortaya koyacaktır.

Diğer düşüncelerim bir exe packer kullanmak veya bir sağlama toplamı almak olacaktır. kaynaklarda (her ikisi de @angealbertine yanıtında zaten önerilmişti).

#2
+11
waliedassar
2013-04-03 17:56:05 UTC
view on stackexchange narkive permalink

Ayrıca, kaynaklarımıza müdahale edilmesini önlemek için editörlerdeki hatalardan faydalanabiliriz. Buradaki ilginç kısım, çoğu Kaynak Düzenleyicisinin tipik olmayan (pek tipik olmayan) PE dosyalarını nasıl ayrıştıracağı hakkında hiçbir fikri olmamasıdır. Örneğin, Bazı editörler kaynak bölümü adının her zaman .rsrc olması gerektiğini varsayarlar. Örnekler:

  1. Kaynak Hacker

    • Resource Hacker'ın sonsuzluğa gitmesine neden olacak özel bir kaynak eklemek döngü. Demo burada: http://code.google.com/p/ollytlscatch/downloads/detail?name=antiResHacker.exe

    • Özel bir RT_STRING kaynağının Resource Hacker'ın çökmesine neden olması.

    • IMAGE_OPTIONAL_HEADER yapısının boyutunun sizeof (IMAGE_OPTIONAL_HEADER) , şu anda hex olarak 0xE0 , hatta daha da büyük olabilir. Boyutun daha büyük bir değere sahip olması, Resource Hacker'ın tüm PE dosyasını atmasına neden olur.

  2. Restoratör

    • 1c ile aynı.
    • Kolayca 0xFFFFFFFF olacak şekilde taklit edilebilen NumberOfRvaAndSizes alanını kullanır. Bu, Restorator'ın tüm PE dosyasını atmasına neden olur.
    • Kaynak bölüm adının .rsrc olması gerektiğini varsayar. Başka bir şey değiştirin. Bu, Restoratör'ün tüm PE'yi atmasına neden olur.
    • Özellikler alanı, diğer özelliklerin yanı sıra IMAGE_SCN_CNT_UNINITIALIZED_DATA olarak ayarlanmış herhangi bir kaynak Bölümü, Restoratör tarafından atılacaktır.

    Demolar burada: http://pastebin.com/ezsDCaud

Zekice! Yine de soru: Önerilerinizden bazıları, reiurce tanımları için şartların dışında görünüyor. Bu, yükleyicinin çalışmamasına veya kaynak işlevlerinin (örneğin yük dizgisi) mevcut veya gelecekteki Windows sürümlerinde başarısız olmasına neden olabilir mi?
Microsoft'un PE yüklemesinin ve geçiş kodunun temel davranışını değiştirmesi olası değildir. Bunu yaptıklarını hiç görmedim. Davranışlardaki tek değişiklik, win9x çekirdeği kullanımdayken geri gelmişti ve NT çekirdeğinden farklıydı. Microsoft, her türden bağlayıcıların PE dosya biçiminin o kadar farklı yorumlamalarını ürettiğinin farkındadır ki hiçbir şeye dokunmamalarını bildiklerinden eminim. Aslında, PE dosya formatı o kadar şaşırtıcı bir şekilde çeşitlidir ki, sabit olan tek şey Window koduyla uyumluluktur. Tabii ki, bunun gibi modları yaptıktan sonra iyi test edin.
AntiResHacker.exe bağlantısı kesildi
#3
+10
Ange
2013-03-30 13:33:47 UTC
view on stackexchange narkive permalink

Kaynaklar, sabitleri tanımlanmış standart bir yapıdır, ancak sonuçta, ne içerdiğine bakılmaksızın bir arabelleğe yönelik özyinelemeli bir yapıdır ( burada standart düzen vardır). >

Teorik olarak her şeyi içerebilir - herhangi bir derinlik, döngüler, geçersiz türler, vb ... ancak bu durumda standart API'ler onlarla çalışmayacaktır.

Bu nedenle, eğer kaynakları şifreleyin veya sıkıştırın, bu API'lardan herhangi biri kullanılmadan önce geri yüklenmeleri gerekir (hem kaynak dizin yapısı hem de içerikleri), bu açık olmayabilir.

Özellikle, bazı kaynaklar kullanılacak İlk simgeler, bildirim ve sürüm bilgileri gibi dosya çalıştırılmadan önce işletim sistemi tarafından - bu nedenle muhtemelen bunları sağlam tutmak isteyeceksiniz.

Önemsiz kaynak düzenlemesini önlemenin basit bir yolu, bir akışı çalıştırmak olabilir seçili kaynaklarda, son ikili dosyada (bağlayıcı bunları yerine koyup DataDirectory'de kaynak girişini oluşturduktan sonra) ve bu kaynakları dem üzerinde geri yüklemek için ve veya program başlatıldığında.

Hazır bir çözüm arıyorsanız, PECompact gibi pek çok iyi paketleyici kaynak sıkıştırmayı destekler ve böylece harici kaynak düzenlemesini engeller.

Yine de merak ediyorum, burada bir tür yükleme zamanı paket açma / şifre çözme işe yarayabilir mi? Kaynak editörleri muhtemelen bellekteki değil diskteki verilerle çalışır.
haklısın, cevabımı düzenledim.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...