[Reverse-Engineering]CrâckMe çözümü ve tersine çevirme tekniklerini atlama

=================================================== === =======

Lütfen konuya yorum yapmadan önce aşşagıdaki metni okuyun.

Bunun, makalemin başka bir forumdan yeniden yüklenmesi olduğunu hemen söyleyeceğim, bu nedenle, bu makalede kendiniz için keşfettiğiniz bilgilerin alakasız olmaktan öteye gitme olasılığı çok yüksektir. (İstisna: CrâckMe)

Bu daha çok kendinize bir hatırlatmadır, çünkü...işinize yarayabilicek bilgileri cheatglobal sitesinde toplamak amacım dışında başka bir amacım yoktur polemik vesaire yapmazsanız sevinirim

=================================================== === =======

Merhaba

Uzun zaman önce crackmes.one'da bir çatlakla karşılaştım, şifre karşılaştırması ve yeni başlayanların hata ayıklamasını engelleyecek iki ters önleme tekniği içeren oldukça ilkel bir çatlaktı. Şifre karşılaştırmasının ilkelliğiyle ilgili noktayı unutmayın, sonuçta bu çatlağın yazarı 6 üzerinden 3 (Orta) puan verdi.

Savunmanın analiziyle başlayalım çünkü yukarıda da söylediğim gibi yeni başlayanlar için büyük sıkıntı yaratacaktır. Öncelikle size hangi hata ayıklama önleme işlevlerini kullandığını anlatacağım.


IsDebuggerPresent - PEB yapısını okuyan bir BOOL işlevi, Crâck'te sürekli olarak doğru olup olmadığını kontrol eden sonsuz bir döngüde durur.

CreateToolhelp32Snapshot -Belirtilen işlemlerin yanı sıra bu işlemler tarafından kullanılan yığınların, modüllerin ve iş parçacıklarının anlık görüntüsünü alır.

Process32Next - Sistem anlık görüntüsüne kaydedilen bir sonraki işlem hakkındaki bilgileri alır.

Process32First - Sistem anlık görüntüsünde bulunan ilk işlem hakkındaki bilgileri alır.


Zaten anlayabileceğiniz gibi program, sonsuz bir döngüde çalışan süreçlerin varlığını kontrol eder.
Şu süreçleri arıyor:



Interium yükleyici ayrıca bu işlevler aracılığıyla çalışan işlemleri de kontrol eder =)


Bu hileleri aşmaya başlayalım. IsDebuggerPresent aptalca 0x1 (doğru) için CMP aracılığıyla kontrol yaptığından, kontrolü 0x55 (upd: hiçbir şey sizi tüm bunları yapmaktan alıkoyamaz veya mov eax, 0x1; koy)
gibi başka herhangi bir sayıyla (1 ve 0 hariç) değiştirebilirsiniz.
Fonksiyonun başlangıcına geri dönelim, ancak yazarken bunun komik bir şey olduğunu düşündüm ve bu şekilde yaptım :D)



İlk numara atlandı. Devam edelim.

Burada aynı işlem adı kontrolü zaten yapılıyor. İlk bakışta buradaki atlamaları yamalamak çok kanamalı olacak gibi görünüyor, çünkü çok fazla atlama var =)
Aslında burada fonksiyonun başlangıcında PUSH EBP'yi RET'e yeniden yazmak yeterli, böylece tüm kontrolleri kestik. tek talimatla işlem adları.


Şimdi fonksiyon şuna benziyor:
Kod:
C++:
void CheckProcessName()
{
   return;
 
   // Original code
}



Ve böylece hata ayıklayıcıya karşı iki hileyi atladık. Sonra bir şifremiz var, yine de süpürgeden daha kolay. Üçüncü seviye çatlaklar için bu oldukça ciddi bir sorundur ve şifreyi bulmayı çok kolaylaştırır.

Kayıttan gelen değerin ve belirli bir değişkenin karşılaştırıldığı talimata bir kesme noktası koymanız gerekir, kesme noktasına geçtikten sonra şifrenin kendisi görüntülenecektir.

Şifre: 0111011101111000011000110111000001110111011100100110010101111000010011000101100001101000011010110111010101110000100110 0
FINISH
hocam bu yararlı konudan THEMİDA/ VMPROTECT ile korunan dosyalarada unpack gelır mı :D
 
sırada dnspy var sonrasında olabilir
2024 ıcın mesela ınternette vmprotec ıle veya themıda ıle korunan dosyanın unpack ıslemlerı veyahut nasıl bır yol ızlenebılınır gıbı bır anlatım yok bılen kendıne bılıyor bılmeyende adı olanda ya sunu sunu yapcan olucak dıyo debugera yuklenmeden dosyayı unpack edıcekler herhalde xd bu konuyu sızden bekliyorum sabırsızlıkla
 
hocam bu yararlı konudan THEMİDA/ VMPROTECT ile korunan dosyalarada unpack gelır mı :D
Eğer exe istiyorsan hiç arama,Vmpyi manuel olarak unpack etmen gerek THEMİDA içinse stringleri ve bir kaç şeyi deobfuscate edebilirsin unlicense ile fakat virtualizationu atlatman zor olacak
 
2024 ıcın mesela ınternette vmprotec ıle veya themıda ıle korunan dosyanın unpack ıslemlerı veyahut nasıl bır yol ızlenebılınır gıbı bır anlatım yok bılen kendıne bılıyor bılmeyende adı olanda ya sunu sunu yapcan olucak dıyo debugera yuklenmeden dosyayı unpack edıcekler herhalde xd bu konuyu sızden bekliyorum sabırsızlıkla
detaylı bir konu yapacaım onunlada alakalı

Faydali olabilicek bir araçta sunmak isterim Mesaj atın özelden sunayım
VMP-Import-Deobfuscator, : içe aktarmaları deobfuscate etmenize izin veren bir programdır, IAT'yi yeniden oluşturur ve ardından tüm obfuscated çağrıları yamalar, tek yapmanız gereken programın kendisini dökmektir (Yalnızca x64'ü destekler).
 
detaylı bir konu yapacaım onunlada alakalı

Faydali olabilicek bir araçta sunmak isterim Mesaj atın özelden sunayım
VMP-Import-Deobfuscator, : içe aktarmaları deobfuscate etmenize izin veren bir programdır, IAT'yi yeniden oluşturur ve ardından tüm obfuscated çağrıları yamalar, tek yapmanız gereken programın kendisini dökmektir (Yalnızca x64'ü destekler).
bakalım bı belkı tadından yenmez ama suan kı vmprt ıcın de pek umudum yok ne yalan soyluyeyım cok sey denedık cunku hep aynı
 
Direkt google translate atmis buraya yapistirmis Rus sitesinden. Oyle yapistirmiski Crâck kelimesini bile catlak olarak degistirmis. Bari yazida bazi yerleri degistir.

IsDebuggerPresent i 0x55 ile kontrol et demis :dd Bunu kim yazdiysa yazmasin birdaha cunku IsDebuggerPresent ya 0 dondurur yada 1 . 2024 yilindada shellcode yazip inline yapmak var iken WINAPI ile IsDebuggerPresent cagiran kaldi mi gercekten ?
 
yararlımı yararlıda çok kafa çok zaman gerekiyor
 
=================================================== === =======

Lütfen konuya yorum yapmadan önce aşşagıdaki metni okuyun.

Bunun, makalemin başka bir forumdan yeniden yüklenmesi olduğunu hemen söyleyeceğim, bu nedenle, bu makalede kendiniz için keşfettiğiniz bilgilerin alakasız olmaktan öteye gitme olasılığı çok yüksektir. (İstisna: CrâckMe)

Bu daha çok kendinize bir hatırlatmadır, çünkü...işinize yarayabilicek bilgileri cheatglobal sitesinde toplamak amacım dışında başka bir amacım yoktur polemik vesaire yapmazsanız sevinirim

=================================================== === =======

Merhaba

Uzun zaman önce crackmes.one'da bir çatlakla karşılaştım, şifre karşılaştırması ve yeni başlayanların hata ayıklamasını engelleyecek iki ters önleme tekniği içeren oldukça ilkel bir çatlaktı. Şifre karşılaştırmasının ilkelliğiyle ilgili noktayı unutmayın, sonuçta bu çatlağın yazarı 6 üzerinden 3 (Orta) puan verdi.

Savunmanın analiziyle başlayalım çünkü yukarıda da söylediğim gibi yeni başlayanlar için büyük sıkıntı yaratacaktır. Öncelikle size hangi hata ayıklama önleme işlevlerini kullandığını anlatacağım.


IsDebuggerPresent - PEB yapısını okuyan bir BOOL işlevi, Crâck'te sürekli olarak doğru olup olmadığını kontrol eden sonsuz bir döngüde durur.

CreateToolhelp32Snapshot -Belirtilen işlemlerin yanı sıra bu işlemler tarafından kullanılan yığınların, modüllerin ve iş parçacıklarının anlık görüntüsünü alır.

Process32Next - Sistem anlık görüntüsüne kaydedilen bir sonraki işlem hakkındaki bilgileri alır.

Process32First - Sistem anlık görüntüsünde bulunan ilk işlem hakkındaki bilgileri alır.


Zaten anlayabileceğiniz gibi program, sonsuz bir döngüde çalışan süreçlerin varlığını kontrol eder.
Şu süreçleri arıyor:



Interium yükleyici ayrıca bu işlevler aracılığıyla çalışan işlemleri de kontrol eder =)


Bu hileleri aşmaya başlayalım. IsDebuggerPresent aptalca 0x1 (doğru) için CMP aracılığıyla kontrol yaptığından, kontrolü 0x55 (upd: hiçbir şey sizi tüm bunları yapmaktan alıkoyamaz veya mov eax, 0x1; koy)
gibi başka herhangi bir sayıyla (1 ve 0 hariç) değiştirebilirsiniz.
Fonksiyonun başlangıcına geri dönelim, ancak yazarken bunun komik bir şey olduğunu düşündüm ve bu şekilde yaptım :D)



İlk numara atlandı. Devam edelim.

Burada aynı işlem adı kontrolü zaten yapılıyor. İlk bakışta buradaki atlamaları yamalamak çok kanamalı olacak gibi görünüyor, çünkü çok fazla atlama var =)
Aslında burada fonksiyonun başlangıcında PUSH EBP'yi RET'e yeniden yazmak yeterli, böylece tüm kontrolleri kestik. tek talimatla işlem adları.


Şimdi fonksiyon şuna benziyor:
Kod:
C++:
void CheckProcessName()
{
   return;
 
   // Original code
}



Ve böylece hata ayıklayıcıya karşı iki hileyi atladık. Sonra bir şifremiz var, yine de süpürgeden daha kolay. Üçüncü seviye çatlaklar için bu oldukça ciddi bir sorundur ve şifreyi bulmayı çok kolaylaştırır.

Kayıttan gelen değerin ve belirli bir değişkenin karşılaştırıldığı talimata bir kesme noktası koymanız gerekir, kesme noktasına geçtikten sonra şifrenin kendisi görüntülenecektir.

Şifre: 0111011101111000011000110111000001110111011100100110010101111000010011000101100001101000011010110111010101110000100110 0
FINISH
Kardeş 1 saattir düşünüyorum çatlak ne amk diye bari gpt kullanarak çevir.
 
yazıyı bari aidan çevirseydin kanka kopyala yapıştır yapmışsın + olarak verilen bilgilerin hiçbiri doğru değil noobienin biri yazmış sen de buraya atmışsın hiçbir işe yaramaz çöp konu
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt