• Exe dosyasının kaynak kodu nasıl görüntülenir? Bunun için güvenliği sağlamaya çalıştılarsa (özellikle markalı bir ürünse) kaynak kodunun açıklanması imkansızdır. Visual Basic ile oluşturulan dosyalar


    Bazen, CODE.EXE ve diğer EXE sistem hataları, Windows kayıt defterindeki sorunlarla ilişkili olabilir. CODE.EXE dosyasını birçok program kullanabilir, ancak bu programlar kaldırıldığında veya değiştirildiğinde, bazen "artık" (geçersiz) EXE kayıt defteri girdileri geride kalabilir.

    Temel olarak bu, dosyanın gerçek yolu değiştirilmiş olsa da, hatalı eski konumunun hala Windows kayıt defterinde kayıtlı olduğu anlamına gelir. Windows bu hatalı dosya referanslarını (bilgisayarınızdaki dosya konumları) aramaya çalıştığında, CODE.EXE hataları oluşabilir. Ayrıca kötü amaçlı yazılım bulaşması, Game Cracker ile ilgili kayıt defteri girdilerini bozmuş olabilir. Bu nedenle, sorunun asıl nedenini çözümlemek için, bu geçersiz EXE kayıt defteri girdilerinin onarılması gerekir.

    Geçersiz CODE.EXE anahtarlarını kaldırmak için Windows kayıt defterini manuel olarak düzenlemek, PC servis uzmanı olmadığınız sürece önerilmez. Kayıt defterini düzenlerken yapacağınız hatalar, bilgisayarınızı kullanılamaz hale getirebilir ve işletim sisteminizde onarılamaz hasarlara neden olabilir. Aslında yanlış yere konan tek bir virgül bile bilgisayarınızın açılmasını engelleyebilir!

    Bu risk nedeniyle, CODE.EXE ile ilgili kayıt defteri sorunlarını taramak ve onarmak için %%product%% (Microsoft Gold Sertifikalı İş Ortağı tarafından geliştirilmiştir) gibi güvenilir bir kayıt defteri temizleyici kullanmanızı önemle tavsiye ederiz. Kayıt defteri temizleyicisi kullanmak, geçersiz kayıt defteri girdilerini, eksik dosya referanslarını (CODE.EXE hatanıza neden olan gibi) ve kayıt defterindeki bozuk bağlantıları bulma işlemini otomatikleştirir. Her taramadan önce otomatik olarak bir yedek kopya oluşturularak, tüm değişiklikleri tek bir tıklamayla geri almanıza olanak tanır ve sizi bilgisayarınıza gelebilecek olası zararlardan korur. En iyi yanı, kayıt defteri hatalarını düzeltmenin sistem hızını ve performansını büyük ölçüde artırabilmesidir.


    Uyarı:İleri düzey bir PC kullanıcısı olmadığınız sürece, Windows Kayıt Defterini manuel olarak düzenlemenizi önermiyoruz. Kayıt Defteri Düzenleyicisi'nin yanlış kullanımı ciddi sorunlara yol açabilir ve Windows'u yeniden yüklemenizi gerektirebilir. Kayıt Defteri Düzenleyicisi'nin yanlış kullanımından kaynaklanan sorunların çözülebileceğini garanti etmiyoruz. Kayıt Defteri Düzenleyicisi'ni kullanmanın riski size aittir.

    Windows kayıt defterinizi manuel olarak onarmak için, öncelikle kayıt defterinin CODE.EXE ile ilgili bir kısmını (örn. Game Cracker) dışa aktararak bir yedek oluşturmanız gerekir:

    1. Düğmeye tıklayın Başlamak.
    2. Girmek " emretmek" V arama çubuğu... HENÜZ BASMAYIN GİRMEK!
    3. Anahtarları tutmak CTRL-Shift klavyede tuşuna basın GİRMEK.
    4. Bir erişim iletişim kutusu görüntülenecektir.
    5. Tıklamak Evet.
    6. Kara kutu yanıp sönen bir imleçle açılır.
    7. Girmek " regedit" ve bas GİRMEK.
    8. Kayıt Defteri Düzenleyicisinde, yedeklemek istediğiniz CODE.EXE ile ilişkili anahtarı seçin (örn. Game Cracker).
    9. Menüde Dosya seçme İhracat.
    10. Listelenmiş Şuraya kaydet Game Cracker anahtar yedeğini kaydetmek istediğiniz klasörü seçin.
    11. Tarlada Dosya adı Yedekleme dosyası için "Game Cracker Backup" gibi bir ad girin.
    12. Alanın olduğundan emin olun İhracat Aralığı değer seçildi Seçilen şube.
    13. Tıklamak Kaydetmek.
    14. Dosya kaydedilecek .reg uzantılı.
    15. Artık CODE.EXE ile ilgili kayıt defteri girdinizin bir yedeğine sahipsiniz.

    Kayıt defterini manuel olarak düzenlemeye yönelik sonraki adımlar, sisteminize zarar verme olasılığı yüksek olduğundan bu makalede ele alınmayacaktır. Kayıt defterini manuel olarak düzenleme hakkında daha fazla bilgi edinmek isterseniz lütfen aşağıdaki bağlantılara bakın.

    Yardımla Kaynak Ayarlayıcı.EXE, .DLL, .OCX, ekran koruyucular (.SCR) ve çok daha fazlası gibi yürütülebilir dosyaları açabilirsiniz. Bir dosyayı açarak, dosyanın kaynaklarına erişim elde edersiniz ve çeşitli formatlardaki simgeleri, imleçleri ve grafikleri değiştirebilir, menülerdeki, iletişim kutularındaki ve diğer kullanıcı arayüzü öğelerindeki satırları değiştirebilirsiniz.

    Ancak çalıştırılabilir dosyadaki kaynakların program kodundan ayrıldığını ve program arayüzünü değiştirerek program koduna erişemeyeceğinizi unutmayın. Kaynak düzenleyiciyi kullanarak program kontrollerini değiştirebilirsiniz. Program kodu kaynak düzenleyici kullanılarak değiştirilemez.

    Daha ciddi değişiklikler için (ancak Windows için programlama uygulamaları konusunda yeterli deneyim olmadan iyi bir şeye yol açmayacak), PE Explorer (PE dosya yapısı düzenleyicisi) veya FlexHex (ikili dosyalar için hex düzenleyicisi) kullanmanızı öneririz.

    Kaynak Ayarlayıcı'da bir EXE veya DLL dosyasını açma

    Dosyaları açmanın birden fazla yolunu destekler. Bir dosyayı görüntülemek ve düzenlemek üzere açmak için düğmeye tıklayın. açık dosya araç çubuğunda veya komutu seçin dosya > açık menüden. Araç çubuğundaki düğmenin yanındaki açılır menü, yakın zamanda açılan dosyaların listesine hızlı erişim sağlar. Aynı liste komutuyla da elde edilebilir. dosya > Son Dosyalar program menüsünden. Listedeki dosya sayısı iletişim kutusunda yapılandırılır Özelleştirmek.


    Ayrıca Resource Tuner'ı kullanarak bir dosyayı doğrudan Windows Gezgini'nden, dosyayı sağ tıklayıp seçerek de açabilirsiniz. Kaynak Ayarlayıcıyla Aç bağlam menüsünden.

    Veya dosya simgesini Windows Gezgini'nden masaüstündeki Kaynak Ayarlayıcı simgesine veya çalışan bir Kaynak Ayarlayıcının penceresine sürükleyip bırakabilirsiniz.

    Dosyayı komut satırından da açabilirsiniz.
    Örneğin: restuner.exe dosya adı.exe

    Bir dosya açıldığında Kaynak Ayarlayıcı birkaç otomatik işlem gerçekleştirir: UPX ile paketlenmiş olduğu tespit edilirse dosyanın paketini açar, ardından dosyanın yapısını ve kaynaklarını olası hatalara karşı kontrol eder ve son olarak hasarlı kaynakları yürütülebilir dosyaya göre yeniden oluşturur. dosya formatı spesifikasyonu.

    Bir dosyayı açarken hatalar

    Bir dosyayı açarken bir hata oluşursa, bunun büyük olasılıkla üç nedeni vardır: dosya korumalıdır, dosya 16 bittir veya yürütülebilir bir dosya değildir.

    1. Hata: Dosya zarar görmüş, paketleyici tarafından sıkıştırılmış veya koruyucu tarafından korunuyor.

    Dosyanın boyutunu küçültmek için sıkıştırılma olasılığı çok yüksektir. Yürütülebilir dosyalar için bir düzineden fazla paketleyici ve koruyucu vardır ve her zaman yenileri ortaya çıkar. Resource Tuner yalnızca bir tanesinin, ancak en yaygın paketleyici olan UPX'in açılmasını destekler. Diğer paketleyiciler desteklenmez ve dosyayı görüntülemek veya düzenlemek üzere açmadan önce dosyayı kendiniz açmanız gerekir.

    Bu durum program hatası olarak değerlendirilmez. Diğer yazılım yazarlarının eserlerini bilgisayar korsanlığından korumaya yönelik girişimleriyle mücadele etmeyeceğiz veya aralarında hem ticari ürünler hem de ev yapımı ürünlerin de bulunduğu birkaç düzine farklı paketleyicinin paketlerinin açılmasını desteklemeyeceğiz.

    2. Hata: Dosya 16 bit NE Yürütülebilir olarak tanımlandı. Bu biçim desteklenmiyor!

    Programlarımız yalnızca 32 bit ve 64 bit PE dosyalarıyla çalışır. NE formatı ("Yeni Yürütülebilir Dosya"nın kısaltması), Windows 3.xx'in eski sürümlerinden devralınan 16 bitlik bir uygulama formatıdır. Windows 95'in gelişiyle birlikte, bu format eski sayılıyor ve kullanılmıyor, ancak Microsoft'un modern platformlarında çalıştırılabiliyor. 16 bitlik dosyaları desteklemiyoruz ve desteklemeyi de düşünmüyoruz.

    3. Hata: Dosya bir EXE veya DLL dosyası değil. Kesinlikle!

    Kaynak Ayarlayıcısı uzantısı olmayan bir dosya algılıyor. Yürütülebilir bir dosyanın uzantısını yeniden adlandırırsanız, örneğin .EXE'yi .TXT olarak düzeltirseniz veya uzantıyı tamamen kaldırırsanız, Resource Tuner buna aldanamaz: bir dosyayı açarken program, dosyanın içindeki dosya başlığını analiz eder, ancak uzantıya hiç bakmıyor.

    Bu nedenle, Kaynak Ayarlayıcı size dosyanın yürütülebilir olmadığını söylerse durum budur. Herhangi bir nedenle birisi oyunda .DLL uzantılı bir metin dosyası sağladıysa, bu, dosyanın metin olmasını engellemez ve dinamik bir kitaplık haline gelmez. Dosya uzantısına aldanmayın.

    Kaynak düzenleyicide hangi dosyaların açılması mantıklı değil

    Kaynak Ayarlayıcının herhangi bir 32/64 bit yürütülebilir dosyayı açmak ve düzenlemek için tasarlanmış olmasına rağmen, kaynakların neredeyse hiç bulunmadığı bazı EXE dosyası türleri vardır.

    1. Visual Basic ile oluşturulan dosyalar.

    Bu tür dosyalarda kaynaklar bölümünde simge ve sürüm bilgisi dışında hiçbir şey yoktur. Visual Basic programlarındaki satırlar ve diyaloglar kendi özel formatlarında saklanır ve standart kaynak bölümünü kullanmaz.

    2. Gigabayt veya daha büyük .EXE dosyaları.

    Resource Tuner 32 bitlik bir program olduğundan, açılan dosyanın görüntüsünün ilk gigabayt içinde sanal belleğe yerleştirilmesinde doğal kısıtlamalar vardır. Gigabayt veya daha büyük bir dosya oraya sığmaz.

    3. EXE dosyaları biçiminde kendi kendine açılan arşivler.

    Bu tür dosyalarda kaynaklarda simge ve sürüm bilgisi dışında hiçbir şey yoktur veya olmayabilir. Aslında bu, paketten çıkarma rutiniyle donatılmış arşivlenmiş verilerdir.

    4. Diğer programların yükleyicileri.

    Bu tür dosyalarda, simgeler ve sürüm bilgileri dışında kaynaklarda hiçbir şey yoktur. 3. maddeye çok benzer. Yükleyici dosyası, başka bir sıkıştırılmış .EXE dosyasını ve onu ayıklamak için bir rutini içeren bir kapsayıcı olarak düşünülebilir. Ek olarak, yükleyici oluşturmaya yönelik programlar, arşivlenmiş verileri içeride depolamak için farklı algoritmalar kullanır.

    Ücretsiz deneme sürümünü indirin!


    Kaynak Ayarlayıcı üzerinde çalışıyor Windows'un tüm sürümleri
    2000 ve XP'den 8 ve 10'a.

    Minimum sistem gereksinimleri:
    İşlemci Intel Pentium® veya AMD K5 166 MHz
    16 MB RAM

    *** TAMAMI YAZILI OLARAK EĞİTİM AMAÇLI KULLANILIR! ***

    -Aletler-
    OLLYDBG
    Kodumuzu ekleyeceğimiz uygulama.
    Olacak NOTEPAD.EXE.
    Dosyanın bir kopyasını almanız tavsiye edilir.
    Hepsi bu

    -Başlangıç-
    Amacımız kodumuzu Notepad.EXE içerisine yapıştırmaktır.
    Basit bir yapıştıracağız Mesaj Kutusuçalıştırmak not defteri.
    Hadi koşalım Not defteri ve normal şekilde başladığından emin olun.

    Orijinal olduğundan eminseniz not defteri.exe, şunu aç Ollie.
    Bir sonraki pencere görünecektir:

    Kodumuzu ekleyebilmemiz için program kodunda bunun için bir yere ihtiyacımız var.
    Exe dosyalarında çok sayıda var. Kod Mağaraları. Bunlar baytlardır ( D.B.00).
    Programın kodunu başlangıcın biraz altına kaydırmanız yeterli; göreceksiniz kod mağarası:


    Kırmızı dikdörtgen parçayı işaretler kod mağarası"Ah?
    Buraya herhangi bir kodu yapıştırabilirsiniz; programınız çökmez.
    Çağrılacak API işlevini biliyorsanız Mesaj Kutusu sadece bu satırları atla.

    ***** WIN32 PROGRAMCI KILAVUZUNDAN TEKLİF ALMAYA BAŞLAYIN

    Mesaj Kutusu işlevi bir mesaj kutusu oluşturur, görüntüler ve çalıştırır.
    Mesaj kutusu uygulama tanımlı bir mesaj ve başlık içerir.
    artı önceden tanımlanmış simgelerin ve basmalı düğmelerin herhangi bir kombinasyonu.

    Int Mesaj Kutusu(
    HWND hWnd, // sahip penceresinin tanıtıcısı
    LPCTSTR lpText, // mesaj kutusundaki metnin adresi
    LPCTSTR lpCaption, // mesaj kutusunun başlığının adresi
    UINT uType // mesaj kutusunun stili
    );

    ***** WIN32 PROGRAMCI KILAVUZUNDAN SON ALINTI

    Ortaya çıkarmak için tıklayın...

    Bilmeniz gereken tek şey bu Mesaj Kutusu.
    Hadi bir şeyler yapalım Kod Mağaraları.
    Kullanmak için Mesaj Kutusuçıktısını alacağımız metni oluşturmamız gerekiyor
    Mesaj Kutusu. Bir sonraki resimde birkaç satırı vurguladım. Kod Mağaraları Ve
    menüyü gösterdi İkiliDüzenle senin için (buna ihtiyacımız olacak).


    Eğer bastıysan İkili=>Düzenle veya (CTRL+E) tuşuna bastığınızda aşağıdaki pencereyi göreceksiniz.
    Üstteki alanı benim yaptığım gibi doldurun.
    Tamam'ı tıkladığınızda değiştirilen kodu göreceksiniz (kırmızıyla vurgulanmıştır):
    Şimdi kodu yeniden analiz etmek için CTRL+A tuşlarına basın.
    TAMAM! Şimdi mesajın başlığını değiştirmek istiyorsanız bu satırı kopyalayın
    (bir prosedür çağrısının ikinci parametresi gibidir).

    -Biraz montajcı-

    zamanı geldi ASM A
    İşte iyi bir örnek!

    0'a BAS; DÜĞMELER=<ТОЛЬКО КНОПКА OK>
    1008751'e BASIN; BAŞLIK = ADRESİMİZ "ENJEKTE NOTTA"
    1008751'e BASIN; MESAJ = AYNI.
    0'a BAS; SİMGE=<БЕЗ ИКОНКИ>
    Mesaj KutusuA'yı ARAYIN; Belirtilen parametrelerleMessageBoxA'nın çağrılması.

    Ortaya çıkarmak için tıklayın...

    Girilen bu satırlar Ollieşöyle görünecek:

    Oku görüyor musun? BU ÇOK ÖNEMLİ!
    Sonuçta, programı çalıştırırsak hiçbir şey olmaz. Neden?
    Çünkü küçük prosedürümüz henüz hiçbir yere çağrılmadı!
    Başlangıcının adresini yazmak gerekir, yani. adres " 0'a BAS"çünkü bir sıçrama yapmamız gerekiyor
    prosedürümüze gidin ve geri dönün
    Harika. Şimdi programın başına dönün ( C düğmesi araç çubuğunda Ollie veya gösterildiği gibi).

    Şimdi idam edilecek ilk satırdayız.
    Amacımızın kendi kodunuzu eklemek olduğunu hâlâ hatırlıyor musunuz?
    O zaman devam edeceğiz!
    Baştan birkaç satır seçin ve bunları panoya kopyalayın.


    Bunları herhangi bir metin düzenleyiciye yapıştırın; yine de bizim için yararlı olacaklar.
    Tekrar programın başına dönün.
    (Yukarıdaki resim 70'e bas).
    Bu satıra çift tıkladığınızda aşağıdaki pencere görüntülenecektir.
    girmeniz gerekiyor" JMP<адрес PUSH 0, который мы записывали ранее> "
    Birleştir düğmesine bastığınızda program kodu tekrar değişecektir, yani. değişiklikler kırmızı renkle vurgulanır.

    Kırmızı dikdörtgene bakın! Kodumuzun sonunda bu adrese atlamamız gerekiyor.
    Ancak enjeksiyondan sonra buraya atlarsak program sanki onsuzmuş gibi çalışacaktır.
    Yani yapılacak bir şey daha var!
    Programın yeni başlangıcını metin düzenleyiciye kopyaladığımız eski başlangıçla karşılaştırın.
    İki satırın yeniden yazıldığını göreceksiniz! Ama normal çalışma için onlara ihtiyacımız var
    hatasız programlar. Üzerine yazılan satırları bulun.
    Benim durumumda aşağıdaki koddu:

    70'e bas
    NOTEPAD'E BASIN.01001898

    Ortaya çıkarmak için tıklayın...

    Kodun ilk satırına tıklayın (bizim JMP) ve bas GİRMEK.
    Girilen Mesaj Kutusu çağrı koduna yönlendirileceksiniz!
    Sonrasında Mesaj KutusuA'yı arayın bu iki satırı eklememiz VE geri atlamamız gerekecek!


    BU KADAR!
    (Atlamanın doğru çalışıp çalışmadığını kontrol etmek kolaydır - Üzerine tıklayın GİRMEK!)
    "Değiştirilmiş" Not Defterimizi kaydetmek için resimdeki adımları izleyin:
    Daha sonra tuşuna basın Hepsini kopyala. Görünen pencerede sağ tıklayın
    menü öğesini seç Dosyayı kaydet ve yeni bir adla kaydedin. Dosyayı çalıştırın:

    Eklenen fonksiyon yazıda yazıldığı gibi direkt olarak çağrılmamalı, biraz farklı şekilde çağrılmalıdır.

    Öncelikle prosedürü ithalatlara ekledikten sonra bilmeniz gerekir. FT (FirstThunk "IAT"). Burada görüntülenir:

    Bunu hatırlamak!(Onu arayacağım Doğru Adres)​


    Şimdi kodumuzu yazacağımız yere geçelim ( kod mağaraları).
    Şimdi fonksiyonumuza doğru çağrıyı ekleyelim MesajKutusuA. Bunu yapmak için şunu yazıyoruz:

    JMP [[B]DoğruAdres]

    Eğer Ollie yeni kodu otomatik olarak bir prosedür çağrısı olarak tanımladı - bu çok çok iyi! Böylece daha kolay olacak. Değilse, içe aktarma adresini yanlış hesapladınız. Tekrar kontrol edin!
    Bunun adresini yaz JMP(Onu arayacağım TrueCall).

    Şimdi her şeyi makaledeki gibi yapıyoruz (satır ekleme, PUSH vb.), ancak bunun yerine:

    Mesaj KutusuA'yı arayın

    şunu yazmanız gerekir:

    [B]TrueCall'ı arayın

    Gerisi aynı kalıyor.

    Ortaya çıkarmak için tıklayın...

    Bunun için güvenliği sağlamaya çalıştılarsa (özellikle markalı bir ürünse) kaynak kodunun açıklanması imkansızdır.

    Ancak kodu tamamen veya kısmen ortaya çıkarmanın yolları vardır.

    • IDA Pro ücretsiz kırıcıların en iyisidir, bazı makrolar kodu geri dönüştürmenize izin verebilir. Ama her zaman değil. Borland ürünleri özellikle iyi bir şekilde ortaya çıkıyor.
    • Hiew.Exe, montaj dili kodunu düzenlemenize olanak tanıyan çok küçük, ücretsiz bir yardımcı programdır. Metin ve tam sayı sabitlerini düzenleyebilirsiniz. Programı başka bir dile "çevirmek", şirketin adını silmek vb. için bile kullanabilirsiniz.
    • Bir PDB dosyası varsa veya dosyaya hata ayıklama bilgisi eklenmişse, kod geliştirme ortamından alınabilir (eğer hata ayıklama bilgisi tamamlandıysa) nadiren kullanılabilir. Kaynak kodunu alamazsınız, ancak "satır numaralarını ve kaynak adlarını", ayrıca tüm sabitlerin adlarını / değerlerini, yerel değişkenleri alabilir, "fonksiyonların parçalanmasından" kaçınabilir ve ayrıca sınıf doldurma ile sınıflar alabilirsiniz (neredeyse program metni dışındaki tüm yapılar) programın anlaşılmasını büyük ölçüde kolaylaştırır. Bazı kütüphaneler (dll) için pdb dosyaları ayrı olarak indirilebilir. Kendine saygısı olan bir şirketin değerli ürününün pdb'sini sızdırması pek olası değildir.
    • Hata ayıklama bilgisi, exe'de yerleşik DebugInfo bilgisi vardır. Böyle bir bilgi ve ilgili yardımcı program varsa (Örneğin, Delphi Borland'da toplanmıştır ve mevcutsa), o zaman önceki paragrafla aynı şeyi yapabilirsiniz. Ancak kendine saygısı olan bir şirketin bu kadar "aptalca" bir hata (pdb'ye benzer) yapması pek olası değildir.
    • Dosya C# ile yazılmışsa, neredeyse tamamen disSharp kullanan kodlarda görüntülenebilir (bu tür programlar yalnızca içe aktarma tablosunda mscorlib'e "bağlanır" ve hepsi bu). DisSharp, programın bazı bölümlerini iyi bir şekilde ayrıştırmıyor, ancak belki de ücretli sürümü veya benzer yardımcı programların ücretli sürümü, kodu daha iyi ortaya koyuyor.
    • Dosya FoxPro, Clipper ve benzeri bytecode dillerinde yazılmışsa özel yardımcı programlar (örneğin Refox) tarafından açılır.
    • Exescope.exe ResourceHacker.exe yardımcı programı ve benzer yardımcı programlar, başlığı ve bağlı kitaplıkları görüntülemenizi sağlar (bunları kullanabilirsiniz) anlamak programın ne üzerine yazıldığı) ve program kaynaklarını (delphi, simgeler, resimler, kaynak dizesi tabloları dahil kaynak formları) düzenleyin.
    • Kodun nasıl oluşturulduğunu biliyorsanız, onu açabilecek özel yardımcı programlar olduğunu düşünüyorum (bunlar ücretlidir ve erişilemezdir).

    Yine, bu, bir kod paketleyicinin (o zaman önce bir paket açıcı uygulamanız gerekir), bir şifreleyici / kendi kendini değiştiren kodun olmaması şartıyla sağlanır. Bir şaşırtmaca tarafından kırılmadığı sürece çözülmeyin. Ne kadar çok kod olursa anlaşılması o kadar zorlaşır.

    Not: Şahsen benim fikrim her şeyin açığa çıktığı, hacklendiği yönünde ama bu çok çok zaman alıyor. Belki bir yıl veya daha fazla (deneyime ve araçlara bağlı olarak kamuya açık iyi araçlar yoktur).