Hack Dersleri
SAYFALAR  
  Ana Sayfa
  BACKDOOR
  BEDAVA TEL
  EXPLOITLER
  FİNE READER
  FTP HACK
  HELP TROJEN
  ICQ ve GÜVENLİĞİ
  HOTMAİL HACK
  IP GİZLE
  IP GİZLE - 2
  LOGO ALINTERİ
  LOGO KLASİK
  MIRC KOMUTLARI
  NICK DEĞİŞTİR
  PROGAM NASIL KIRILIR ?
  SAHTE IP
  Shadowed Password Dosyası ve TCB
  Trojen Portları
  Trojen Temizleme
  WEBSİTE HACK
  ŞİFRE OLMADAN ICQ SERVERİNE GİRME
  İletişim
LOGO ALINTERİ

Kaç yıldır bilgisayarla uğraştığımı tam olarak bilmiyorum. İlk bilgisayarım Commodore 64dü. Sanırım ilk okul felan zamanımdı. En az 12 yıldır bilgisayar dünyasının içindeyim ve 8 yıldır PC kullanıyorum. Bu zaman içinde pek çok kişi tanıdım ama çok azı beni etkilemiştir. Bunlardan biri de benim sözcük dağarcığıma "trace engineering" kelimesini sokan "mustafa abidir" dir. Kendisi şu an aggressor team üylerinden olduğu için şimdi kullandığı nicki yazmayacağım. Ama bir zamanlar o "mustafa abi" ve ben "cyber-warior" iken bayağı güzel zamanlarımız olmuştu! İlk crack bilgilerimi ondan öğrenmiştim. Şimdi bu eski dostlar muhabbetini bırakıp konumuza geçelim. Öncelikle mustafa’nın trace engineering ile ne demek istediğinden bahsediyim.
Dos multitasking bir işletim sistemi değildir. Yani aynı anda birden fazla görevi yapamaz. Görev dağılımı için kullanılan yöntem interruptlardır. Peki bu ne işeme yarıyor derseniz, bu şu işe yarar: Siz bir debuggera programı yükleyip o programın her komutunu hiç atlamadan teker teker çalıştırabilirsiniz! Windows da bunu yapamazsınız çünkü program bir yere ilerleyince olaya multitasking karışır. Dosta ise sadece elite programcıların programlarında bazı fakeler ile bu tip şeyler yaparlar ki logo, mikro ve diğer bir çok program yazarları bu elite kesimin varlığından bile haberdar değiller. Sonuç olarak bir çok türk yapımı dos programını debuggerda çalıştırıp, adım adım ilerleyerek şifre istiyen kısmını bulup bunu iptal edebilirsiniz! Bunun için çok az bir assembly bilgisi, dikkatli gözler ve biraz sabıra ihtiyacınız olacak. İşte bu yapacağınız ve benim birazdan size adım adım gösterceğim olay "trace engineering".

Şimdi bize gerekenler bir adet debugger ve bir adet logo alınteri. Logo alınterinin veya debuggerin birden fazla olması işimizi kolaylaştırmaz. Boşuna sağdan soldan download etmeyin!
Ben size dos altında bu tip basit programları kırmak için turbo debugger (TD)'ı öneririm. Ben onunla hemen hemen tüm logoları, mikro 8.x ve 9.0'ı kırdım. TD, borland'ın pascal ve c++ paketleriyle gelen kullanımı kolay bir programdır. Şimdi debugger nedir hiç duymayanlar için söyliyeyim: Bunlar aslında programlarda oluşan "bug"ları temizlemek amacıyla yapılmış programın exe halini yükleyip assembly kodları şeklinde görünmesini sağlayan ve bu kodların adım adım çalıştırılabildiği programlardır. Evet gerekenler hazırsa başlayalım:

Önce Logo Alınteri programını hdnize kurun. Kurulum tamamlanmasına bir adım kala size sifre programını çalıştırıp çalıştırmayacağınızı soracaktır. Bu programın adı sifre.exe dir. Ve programı yükleme tamamlandıktan sonra manuel olarak çalıştırabiliriz. Bu yüzden bu soruya hayır diyoruz. Logo daki kibar arkadaşlar bu sifre programının çalıştırılması gerektiğini söyleyip programı kapatıyorlar. Bu işlem bitince td.exe programını logonun kurulduğu dizine kopyalayıp ve TDyi çalıştırıyoruz, karşımıza şöyle bir ekran çıkıyor:



Eğer tdyi çalıştırırken parametre olarak sifre.exe derseniz program direk TD tarafından yüklenir. Eğer böyle yapmadıysanız File menusunden Open'ı seçin. Karşınıza çıkan pencereden sifre.exe yi seçerek programı yükleyin.
Tamam td size programın sembol tablosunun olmadığına dair bir mesaj verecek. Bunu ok ile geçiyoruz. Ve şimdi crack işlemine hazırız. Ben elimde kalem kağıt sizin için notlar alarak yaptığım halde bu işi 15dk da hallettim. Yani bu iş pek zor değil. Yalnız sizi görevinize hazırlamam gerek.

işte trace engineering de bilmeniz gerekenler:
Ekrana dikkatlice bakınca ekranın 5 bölüme ayrıldığını görüyoruz. En büyüğü kodların gösterildiği bölüm. Bu bölümde şu tip yazılar var:

cs:0100 0000    add [bx+si],al
cs:0100 0002   add [bx+si],al
cs:0100 0004   add [bx+si],al

Bu şu anlama geliyor... (cs)  code segmentin (:0100) 100. lokasyonunda (0000 ) 0000 wordu var. Ve bu "add [bx+si],al" komutuna karşılık geliyor. Bu sizi korkutmasın! Biz bu crackde sadece cs:0100 kısmına (ki bu bizim programın içinde nerde olduğumuzu gösterir) ve "add [bx+si],al" yazan kısma yani programda hangi komut çalıştırılacak ona bakıyoruz. Sanırım şu an hangi kodun işleneceğini gösteren ">" işaretini fark etmişşinizdir.
Trace engineering yaparken dikkat edeceğimiz assembly komutları:

je     xxxx       <-- Bir önceki sonuç doğru ise xxxx'e git (mesela şifre doğru mu ?
jne  xxxx        <--- Bir önceki sonuç yanlış ise xxxxx'e git.
jmp  xxxx       <---- xxxxx'e git. Basicdeki goto, pascaldaki jump gibi...
call  xxxxx      <--- xxxx deki prosedürü çağır. İşlem bitince kaldığın yerden devam et! Basicdeki gosub pascalda ki prosedür çağırma gibi...

Not: xxxx yerine adresler gelecektir. Bu adresler 1201:1212 gibi uzun veya 1233 gibi kısa olabilir.

Birde TDde tanımlı fonksiyon tuşlarından bahsedeyim:
F2) Breakpoint koyar/kaldırır.
F4) Seçili olan alana kadar programı çalıştırır.
F7) TRACE: Bir komut çalıştırır.
F8) STEP: Bir adım atlar! Bu call fonksiyonlarının tamamının çalıştırılmasına sebep olur.
F9) Programı çalıştırır. (Bir yerlere breakpoint koyup programı çalıştırırsak breakpointe gelince program çalışmayı kesip debuggera döner! Yani kontrol yeniden bize geçer. )

Şimdi biz başta call fonksiyonlarını hızlı hızlı geçeceğiz bunu için F8 bize çok yardımcı olacak. Bazı callların ise çağırdığı fonksiyonu incelemek istiyeceğiz. Bu durumda F7ye basıp fonksiyonun her komutunu teker teker çalıştıracağız.

Şimdi başlayalım:
sifre.exe yüklendiyse F8'e basmaya başlıyoruz. Ekran titriyor çünkü arka planda program dos ekranına yazı felan yazıyor. Bunu görmek için arada sırada ATL+F5 tuşuna basabilirsiniz. Biz elimizi pek F8den çekmiyoruz... Gözümüzün önünde kodlar akıyor... Ve birden sifre.exenin bize kod soran ekranı ile karşılaşıyoruz? Herhangi bir tuşa basıp buranın kapanıp kapanmayacağına bakıyoruz ama debuggera dönüş olmuyor! Noldu? Biz büyük bir prosedür çağırdık (aslında ben bu prosedürün pascaldaki ana begin ve end kısmı olduğunu biliyorum ama olsun biz yinede bu bilgiyi bilmediğimizi varsayalım). Bu büyük prosedür program bitmeden geri dönmüyor! o yüzden debuggera geri dönemiyoruz. Aslında dönme şansımız var ama biz bunun basit crack olayını aştığı için görmeyeceğiz. Evet sifreyi bilmediğimizden programdan çıkış için F3e basıyoruz! Bu logo programının F3ü, debugger ile ilgisi yok.
Karşımıza yeniden debuggerin ekranı geliyor. Ve hemen borlanddakilerin logoculardan daha iyi bir renk zevkine sahip olduğunu anlıyoruz.
Şimdi karşımızda şöyle bir kod var:
cs:xxxx     9A4E099B5B                      call 5B9B:094E
cs:xxxx > 833EDE0204                      cmp word ptr [02DE],0004       (Şu an bu kodun üzerindesiniz!!!)

sizde sayılar değişik olabilir, ama her şey şu ana kadar doğru gittiyse "cmp word ptr [02DE],0004" komutunu görüyor olmanız lazım. Tabi ki logo alınterinin sizdeki versiyonu farklı olabilir!
Burdayken şunu yapacağız: Bir önceki fonksiyon (call xxxx:xxxx) bizim hedef fonksiyonumuz. Bu yüzden onu bir dahaki sefere F8 ile geçmeyeceğiz. Bunun yerine F7 ile fonksiyonun içine gireceğiz. Yeniden bu fonksiyonun üzerine gelmek için yön tuşlarını kullanarak (Yukarı) o call koduna çıkıyoruz ve iki kez F4 tuşuna basıyoruz. 1. sinde program sonlanıyor (çünkü prosedürün bittiği yer sadece begin end'in sonu birde ilk başta yapılan hazırlamaların kapatılması gerek bunun içinde bizi ilgilendirmeyen bir kaç (x100) kodun işlenmesi gerekecek). 2. F4te program o lokasyona kadar çalıştırılıp duruyor.
Şimdi yine karşımızda şu var:
cs:xxxx > 9A4E099B5B                      call 5B9B:094E                        (Şu an bu kodun üzerindesiniz!!!)
cs:xxxx    833EDE0204                      cmp word ptr [02DE],0004

Evet F7ye basıp ilk önce yaptıklarımızı tekrar ediyoruz. Yani karşımıza şifre ekranı çıkana kadar F8e basıyoruz.
Bunu 4 kez tekrarlıyacağız. Her seferinde ekranın çıktığı ve sonra programdan çık dediğimizde debuggera dönülen yerler şöyle olacak (sayılar değişebilir) ( Bu arada karşımıza şifre soran ekran çıkınca önce "1" felan gibi bir şey yazıp nolduğuna bakıyoruz. Eğer tuşa basınca debuggera dönersek taktiğimizi değiştireceğiz! ):

cs:xxxx     9AFE870A60                      call 600A:87FF
cs:xxxx > 813EF0172F                       cmp word ptr [17E0],012F      (Şu an bu kodun üzerindesiniz!!!)

cs:xxxx     E807FF                             call 8768
cs:xxxx > 80BE29FE00                       cmp word ptr [0107],0000      (Şu an bu kodun üzerindesiniz!!!)

cs:xxxx     E8ECE2                             call 6AAD
cs:xxxx > 8B7E06                             mov di, [bp+06]                     (Şu an bu kodun üzerindesiniz!!!)

cs:xxxx     E8A2EA                             call 55A4
cs:xxxx > EB4A                                 jmp 6B4E                              (Şu an bu kodun üzerindesiniz!!!)

Bunda da üste çıkıp F4+F4 sonrada F7 yapıyoruz. Sonra F8e basmaya başlıyoruz. Ekrana şifre soran kısım çıkıyor. Hani ya olmaz ama deneyim diyip 6. kez "1" tuşuna basıyoruz... Basar basmaz bakıyoruz debuggerdayız yani bulunduğumuz nokta klavyeden karakter okuyan nokta! Bu iyi gelişme artık programı sürekli baştan başlatmayacağız. Bunun yerine şifre yazıp onu kabul ettirmeye çalışacağız. Bunun için breakpoint koyacağız.

Şimdi yine karşımızda şu var:
cs:xxxx     9A7505BB72                      call 72BB:0575
cs:xxxx > C6869CFD00                      mov byte ptr [bp-0264], 00     (Şu an bu kodun üzerindesiniz!!!)

Ok tuşuyla üste çıkıp bir kez F2 ye basıyoruz. Ok tuşuyla aşşağıya indiğimizde artık orası şu şekilde gözükmeli (Rengi değişmiş olarak):
 

cs:xxxx    9A7505BB72                     call 72BB:0575

Şimdi biz programın yeniden karakter girmesini bekliyoruz. Bu kısmıda breakpointle işaretlediğimize göre F9a basıp breakpointe yeniden gelmesini bekliyoruz. Karşımıza yeniden karakter ekranı çıktı burda F2ye basıyoruz. Logo programında şifremi kontrol et tuşu! Bu tuşlar programın en altında yazıyor. Programı çalıştırınca olayı daha rahat anlarsınız. Neyse tabiki yine debuggerdayız ve bu sefer F8le yolumuza devam ediyoruz. Bakalım bize nasıl bir hata mesajı verecek ve nerde? F8le giderken birden sifre.exenin ekranı karşımıza çıkıyor ve bize şifrenin yanlış olduğunu söylüyor. Devam etmek için "space" tuşuna basmalıymışız. Bizde onları kırmayıp ( nede olsa sonra kıracağız!!!) space'e basıyoruz. Ve şimdi karşımızda şu var:

cs:xxxx     E88DF9                            call 5275
cs:xxxx > 88869DFD                         mov [bp-0263], al     (Şu an bu kodun üzerindesiniz!!!)

Burası madem bize hata verdi, buraya gelirken bir şifre kontrolü yapılmış olmalı diyoruz. Bu koduda F2 ile işaretleyip programı F9 ile başlatıyoruz (bitiyor). Sonra yine F9 ve biz hemen şifrenin klavyeden okunduğu kısımdayız (orayada F2 ile breakpoint koyduk ya! . Hemen sifre.exe ekranı açıkken F2ye basıyoruz. Ve debuggera dönünce F8 ile teker teker ama bu sefer daha yavaş ilerliyoruz. Geçtiğimiz yerlerdeki je,jne komutlarına bakıyoruz. Ama panik yok! Altı üstü logo kıracağız... İlerliyoruz ve birden karşımıza kırmızı ile işaretlenmiş (breakpoint konulmuş) bir komut görünüyor. Burası bize hata veren yer. Şu an bulunduğumuz yer ile oranın arasında je,jne,jmplerden sadece 1 tane var:

cs:xxxx     xxxxxxxxxx                        xxxxxxxxxxxxxxx           (Bulunduğumuz yer)
.....
cs:xxxx    26803000                         cmp es:byte ptr [di], 00
cs:xxxx    7426                                je 58EE                        (doğru ise git)
......
cs:xxxx    E88DF9                            call 5275                      (Bize hata veren yer!)
cs:xxxx    88869DFD                         mov [bp-0263], al

Hedef belirlendiğine göre, "je 58EE" koduna kadar F8e basıyoruz. Kodun üzerine geldiğimizde, "c=0, z=0, s=0 ..." gibi flaglerin bulunduğu bölümde z=0 yazan yere mouse ile tıklıyoruz.  Bunlar flaglerdir ve flaglerin bir önceki işlemin sonucunda ortaya ne çıktığını saklarlar. Bize lazım olan z (zero = sıfır = eşit!!! ) flagi. bunu z=1 yapıyoruz. Deneyip yapabilirsiniz eminim Ve bu programa bir önceki işlemde sonucun sıfır, bir diğer deyişle eşit çıktığını söylüyor. ve kod bölümüne baktığımızda je 58EE kodunun yanında aşşağı doğru ok işaretinin çıktığını görüyoruz. Bu komutun çalışacağını ve 58EE olan yere gidileceğini söylüyor. Programın devamının çalışması için F9a basıyoruz ve logo daki amcalar "kur işleminin başarıyla tamamlandığını" bize müjdeliyorlar.

Tebrikler, 15dk içine logo programlarının nasıl kırıldığını anlamış oldunuz.  

Turgay ERBAY  
  Aklınıza Takılan Soruları: http://www.facebook.com/bitlizade adresinden sorabilirsiniz.  
Bugün 1 ziyaretçi (1 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol