Geri Git   ForumSinsi - 2006 Yılından Beri > Bilgisayar,Teknoloji & İnternet Dünyası > Program Anlatımları [Resim & Video]

Yeni Konu Gönder Yanıtla
 
Konu Araçları
amaçlı, eğitim, incelenmesi, kırma, program, yöntemlerinin

Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #1
Şengül Şirin
Varsayılan

Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



ÖZET




Günümüzde sıklıkla kullanılmaya başlanan terimlerden bir tanesi, crack yani program kırma veya kod değiştirmedir Bilgisayar programlarının satın almaya güç yetmeyecek düzeyde pahalı hale gelmesi, kişilerin programlardan mevcut korumaları kaldırma yoluna gitmesine sebep olmuştur Yazılımcı firmalar programlarına şifre, fonksiyon, tarih ve CD koruması gibi korumalar koyarak kullanımı sınırlayabilirler Bu programların kısıtlı sürümlerine ulaşılabilir, fakat tüm fonksiyonlarıyla ve ömür boyu kullanabilmek için satın alınması ya da mevcut kısıtlamaların kaldırılması gerekmektedir Bu tezde, programlarda bulunan korumaların kaldırılması ve bu işlem için gerekli programlar tanıtılmıştır Fakat burada unutulmaması gereken şey, kanunlara uygun olan kullanımın programları satın alarak kullanmak olduğudur




EXAMINATION OF PROGRAM CRACKING METHODS
FOR EDUCATIONAL PURPOSES

ABSTRACT


Nowadays, one of most used terms is crack, in other words, program cracking or code reversing High rise in program prices that compells buying causes the way that people remove protections from programs Software companies can limit the usage of their programs by adding password, function, date and CD protections to their products To find the limited versions of almost every programs is possible, but to use a program with full functions and ever, one should buy it or remove the present limitations that it includes In this thesis, removing program protections and required programs for this process are introduced But the important point that shouldn't be forgotten is the legal usage is buying and using your own programs

Hilal AKARKAMÇI

__________________
Arkadaşlar, efendiler ve ey millet, iyi biliniz ki, Türkiye Cumhuriyeti şeyhler, dervişler, müritler, meczuplar memleketi olamaz En doğru, en hakiki tarikat, medeniyet tarikatıdır
Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #2
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



GİRİŞ

Internet'ten indirilen ya da bilgisayar dergileri tarafından verilen çoğu programın belirli bir kullanım süresi bulunmaktadır Bu programlar, içeriğine göre 1 hafta ila 1 ay arasında kısıtlı kullanım süreleri olan shareware veya limited software'lerdir Yani paylaşım amaçlı yazılmış ve daha sonra paylaşılan süre sonunda ya belirli bir miktar ücret ödeyip bu yazılımın satın alınmasını ya da kullanıcının bilgisayarından silinmesini talep etmektedirler Bunun yanında freeware denilen, shareware programlara göre daha amatör coder'lar (yazılımcılar) tarafından hazırlanan ve kar amacı gütmeyen yazılım çeşitleri de mevcuttur ve bu programlar için para ödenmesi gerekmemektedir Aslında shareware programlar için de para ödenmeyebilir ancak bu, devletler hukukları altında korunan progamcının haklarını ve telif ücretlerini gasp ederek yani illegal yollardan mümkün olmaktadır [1]

Program kırmak, cracker’lık, bilgisayar programlarındaki lisans haklarının aşırıya kaçması, BSA (Business Software Alliance)’nın aşırı baskılarıyla ve Microsoft’un tekelini daha fazla yaymasıyla ivme kazandı Günümüzde piyasaya yeni çıkan programların birkaç gün içerisinde kırılıp crack patch’inin internete konulduğu görülmektedir Program kırabilmek için programcılıktan biraz anlamak gerekir Özellikle dongle adı verilen donanımla korunan programlar kırılmak isteniyorsa, Assembly dilini mutlaka bilmek gerekmektedir

Programlar için çeşitli koruma tipleri mevcuttur Örneğin, CD sürücüde CD olup olmadığını kontrol eden koruma tipleri, password koruma tipleri ki eğer doğru password girilmemişse ya program register olmaz ya da çalışmaz Son olarak da süreli programlar ki, özellikle dergilerin verdiği cd'lerdeki programlar bu şekildedir Program, süresi dolduğunda (30 gün, 90 gün) çalışmaz En kolay kırılan programlar, Windows altında çalışan ve register etmek istendiğinde bir pencere içerisinde hata mesajı veren programlardır Çoğunlukla, programı register etmek için sizden bir user name ve password ister fakat program satın alınmamışsa, girilen bilgiler, "invalid registeration number" gibi ya da benzer hata mesajlarıyla geri dönecektir

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #3
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



Bir programın kırılması, o programın yazılış amacı dışında davranmasına sebep olmak olarak yorumlanabilir Programlar belli bir programlama dilinde yazıldıktan sonra derleyici denilen başka programlar ile çalıştırılabilir kod haline çevrilir Bu çalıştırılabilir kod, CPU nun anlayacağı dilde ve işletim sisteminin özelliklerine bağlı olarak, makine dilinde Hexedecimal (onaltılık) bir düzende bulundurulur Makine koduna çevrilmiş programlar, içerisinde programcının yazmış olduğu kodu içermezler Bu durumda programın içeriğini, derlenmiş bir koddan açık ve net bir biçimde anlamak çok zordur

Makine dili denilen dil, aslında rakamsal bir dildir Bu onaltılık sayı düzeninde bulunan kodlar, ikilik sayı sistemine (binary) dönüştürülerek CPU‘ya gönderilir 0 ve 1 ler (bilgisayarın işleyişinde temel olan elektrik sinyali var (1) ve elektrik sinyali yok (0) ) CPU tarafından yorumlanarak işlenir Makine dilininin bu şekilde zor ve anlaşılmaz oluşundan dolayı ASSEMBLY dili geliştirilmiştir Assembly Dili, bilgisayar dilleri içerisinde en alt düzey programlama dilidir Assembly ile yazılan programlar CPU’ya direkt olarak hitap eder Fakat bu dil ile uzun programlar yazmak oldukça zordur Bunun yerine, diğer diller ile yazılan programlarda o programlama dilinin yetersiz kaldığı ya da yavaş kaldığı noktalarda daha hızlı ve direkt erişim olanağına sahip bir dil olan ASSEMBLY dili ile prosedür veya fonksiyonlar yazılabilir Günümüzde bu, sadece bazı aygıt sürücülerini yazarken ya da viruslerde kullanılmaktadır

Windows için yazılan programlar da, çeşitli programlama dilleri ya da program geliştirme araçları ile yazılarak derlenir ve çalıştırılabilir kod haline dönüştürülür Bu çalıştırılabilir kodun DOS programlarından en belirgin farkı, içerisinde kullandığı işletim sisteminin özel fonksiyonlarıdır DOS işletim sisteminin INTERRUPT denilen bazı fonksiyonları vardır Bu fonksiyonlar, Windows için yazılan programların içerisinde direkt olarak yer almazlar, bunun yerine Windows işletim sisteminin hali hazırda yazılmış fonksiyonları kullanılır

Windows / System dizini altında bir çok DLL uzantılı dosya mevcuttur Bu dosyalar, içerisinde programların çalışırken kullandığı birçok fonksiyon ya da tanım bulundururlar Sözkonusu fonksiyonlar, programların kırılmasına yardımcı olacak noktalardır Programlar makine dilinde bulunurlar , bu kodların anlaşılabilmesi için, ASSEMBLY kodlarına çevrilmesi gerekir Bu iş için kullanılan programlara DISASSEMBLER denilir Programların ham, yani onaltılık sayı düzenindeki içeriğinin görüntülenebilmesi için de, HEX EDITOR denilen programlar kullanılır Bunların dışında, programların CPU daki işlenişi sırasındaki içeriğini görüntüleyebilen ve gerçekte programlardaki hataları ayıklamak için kullanılan DEBUGGER denilen programlar da kulanılmaktadır

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #4
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



Bu durumda, program kırmak için gerekli olan bilgi ve dökümanlar şu şekilde sıralanabilir:

1-ASSEMBLY dilini bilmek,

2- Windows İşletim Sistemini iyi tanımak ve fonksiyonlarını bilmek,

3-Disassembler Programı,

4-Hex Editör Programı,

5-Debugger Programı

Bu tool(doküman) lardan faydalanarak, programların Serial Number (Seri Numara) ları ya da password (şifre) leri kırılabilir; deneme sürümlerinin kısıtlanmış fonksiyonları genişletilebilir ve Time Trial’lı (Süreli Deneme ) programların da tarih kısıtlamaları kaldırılabilir

Disassembler, Hex Editör ve Debugger kavramına ve bu türdeki programların çalışmasına yabancı olanların, program kırılımına geçmeden önce 5 Bölüm'e göz atmaları tavsiye edilir

Assembly kodlarına uzak olanların da, program kırımına geçmeden önce EK-B'ye bakmaları tavsiye edilir Başlangıç için yeterli olabilecek notlar eklenmiştir

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #5
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



1 BİR WINDOWS PROGRAMININ ŞİFRESİNİN KIRILMASI

Windows altında çalışan bir çok program, password korumalıdır Çoğunlukla, programı register etmek için sizden bir user name ve password ister fakat program satın alınmamışsa ya da doğru password bilinmiyorsa, girilen bilgiler, "invalid registeration number" gibi ya da benzer hata mesajlarıyla geri döner Bu tür programlar, kırılımı en kolay olan programlardır Burada, Windows programlarının kırılımı örnek bir program üzerinde, aşamalar halinde gösterilmiştir:

11 Kırılacak Program

Hedef Program : HexWorkshop

Programın Bulunabileceği Adres : BreakPoint Software, Inc - Home of the Hex Workshop Hex Editor and SIP Workbench

Program ilk açıldığında ekrana, bu programın 20 gün süreli bir demo versiyon olduğunu hatırlatan bir pencere gelecektir Eğer bu versiyon yakın tarihte kurulmuşsa upgrade edilmesini öneren bir başka pencere daha görülecektir Bunun haricinde, programın Demonstration Version diye bir menüsü olduğu görülür ve bu menüye tıklandığında ise Serial Number soran bir pencere ile karşılaşılır Bu durumda, burada yapılması gereken doğru bir seri numarası ya da programa girilen seri numarasının doğru olduğunu zannetirecek bir yöntem bulmaktır

12 Kırılımı Gerçekleştirecek Program

Kırarken Kullanılan Program : Wdasm89

Wdasm89 bir disassembler’dır Disassembler ile program kırma tekniği, hata mesajından faydalanarak, kod içinde şifrenin bulunmasına dayanır

13 Programın Kırılım Aşamaları

Programın kırılımı on aşamada gerçekleştirilmiştir Bu aşamalar:

131 Programın disassemble edilmesi

Program disassemble edilerek crack işlemine başlanır Programın disassemble işlemi bittikten sonra ise, kullandığı Windows fonksiyonlarının incelenmesi gerekir

132 Sonuca götürecek en uygun fonksiyonun bulunması

Disassembler ekranında, Functions Menüsünden, Imports‘a bakılarak sonuca götürecek en uygun fonksiyon bulunur HexWorkshop programının kırılımında, User32getwindowtexta fonksiyonundan faydalanılacaktır

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #6
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



133 Fonksiyonun bulunduğu yerlere breakpoint konulması

Program load edilip (yüklenip) user32GetWindowTextA fonksiyonlarının kullanıldığı yerlere breakpoint (durak noktası) konulur [5]

134 Register menüsüne herhangi bir değer girilmesi


Daha sonra program çalıştırılarak Demonstration Version menüsü açılır ve buraya Serial Number olarak herhangi bir numara girilir Burada seri numarası olarak 99999999 girildiği varsayılacaktır

135 Wdasm programına girilmesi

Seri numarası girme işlemi sonucunda REGISTER tuşuna basıldığında Wdasm programının içine otomatik olarak girilecektir Bu durum crack işleminde doğru yolda olunduğunu gösterir Daha sonra F8 tuşu ile hatalı Serial Number girildiğine dair ekran çıkana kadar ilerlemeye devam edilir Bu noktaya gelinceye kadar işlenen kodlar iyi takip edilmelidir çünkü en son işlenen Dallanma Komutunun (je , Jne , Jz , jnz , Ja , Jb gibi ) yeri oldukça önemlidir

136 Hata ekranının bulunması

Hata ekranı çıktığında OK tuşuna basılarak işlem tekrarlanır ve her işlenen koşullu dallanma komutuna bir durak noktası konulur

[IMG]file:///C:/DOCUME%7E1/xp/LOCALS%7E1/Temp/msohtml1/06/clip_image001gif[/IMG]:0043178B E8E8DC0100 call 0044F478 ; Seri Numarası’nın ekrandan okunması

:00431790 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC]
:00431796 83C164 add ecx, 00000064
:00431799 E8F21BFDFF call 00403390
:0043179E 50 push eax
:0043179F 8D45DC lea eax, dword ptr [ebp-24]
:004317A2 50 push eax
:004317A3 E8E8B90000 call 0043D190
:004317A8 83C408 add esp, 00000008
:004317AB 680C534800 push 0048530C
:004317B0 8D45DC lea eax, dword ptr [ebp-24]
:004317B3 50 push eax
:004317B4 E867CE0000 call 0043E620
:004317B9 83C408 add esp, 00000008
:004317BC 85C0 test eax, eax
:004317BE 0F8414000000 je 004317D8
:004317C4 8D45DC lea eax, dword ptr [ebp-24]
:004317C7 50 push eax
:004317C8 E893970000 call 0043AF60
:004317CD 83C404 add esp, 00000004
:004317D0 8945EC mov dword ptr [ebp-14], eax
:004317D3 E907000000 jmp 004317DF
:004317DF 837DEC00 cmp dword ptr [ebp-14], 00000000
:004317E3 0F8479000000 je 00431862 ;Seri Numarası yanlış ise dallanma olur
:004317E9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FFFFFEFC]
:004317EF 83C164 add ecx, 00000064
:004317F2 E8991BFDFF call 00403390
:004317F7 50 push eax

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #7
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



Crack işlemine tabi tutulan HexWorkshop Programında, girilen numara doğru kabul edildikten sonra çalıştığı dizinde bir dosya oluşturulur REG uzantılı olan bu dosya oluşturulduğunda ya da içerisinde belli bir imza olduğunda, girilen seri numarasının doğru olup olmadığı bir daha kontrol edilmez ve sonsuza dek Full Version olarak çalışır

137 Kodun değiştirilmesi


Programın girilen herhangi bir kodu kabul etmesi için yapılması gereken işlem, Koşullu Dallanma ( Conditional Jump) komutunun durumunu değiştirmektir Koddan da görüldüğü üzere, 004317E3 satırında seri numarasının 00431862’den farklı olması durumunda hata verecektir Ancak JE 00431862 komutu JNE 00431862 komutuna ya da tamamı NOP komutuna çevrildiğinde, program girilecek herhangi bir kodu kabul edecektir ve Crack işlemi tamamlanmış olacaktır

138 Kırılacak programın exe’sinde kodun değiştirilmesi

Wdasm programından aranılan byteların 30BE3h adresinde yer aldığı görülmektedir HexWorkshop programının kendisini kullanarak Hworks32exe dosyası açılarak 30BE3h adresine gidilir ve 0F8479000000 byteları 909090909090 byteları ile değiştirilerek başka bir isimle kaydedilir Çünkü aynı isimle o an hafızada olan bir dosya kayıt edilemez

139 Programın son halinin kaydedilmesi


Daha sonra HexWorkshop programından çıkılarak orijinal dosyanın adı başka bir isimle kaydedilip, kırılmış dosya orijinal adıyla kaydedilerek program hazır hale getirilir

1310 Programın register edilmesi


Daha sonra yapılması gereken, programı çalıştırıp herhangi bir Seri Numarası yazarak kayıtlı hale getirmektir

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #8
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



1 PROGRAMLARIN DENEME SÜRÜMLERİNDEN FONKSİYON KISITLAMASININ KALDIRILMASI

Program koruma tiplerinden bir tanesi de, programın bazı fonksiyonlarının kısıtlanmasına dayanır Satın alınmadığı müddetçe bu tür programların en önemli fonksiyonları kullanılamaz Bu tür korumaya bir örnek verilecek olursa, Acrobat Reader programının freeware(ücretsiz) sürümleri kolaylıkla bulunmasına rağmen, programın bünyesinde bulunan Acrobat Writer kısmına ulaşmak için programın satın alınması gerekir Aşağıda da bu koruma tipine örnek teşkil edecek şekilde, internetten sayfa ve site indirilmesine yardımcı olan Teleport programındaki kısıtlamanın kaldırılması aşamalar halinde gösterilmiştir:

21 Kırılacak Program

Hedef Program : Teleport Pro

Program açıldığında Serial Number(seri numarası) sormak gibi rahatsız edici herhangi bir ekran gelmemektedir ancak bir siteyi indirirken en fazla elli dosyanın indirilmesine izin vermektedir

22 Kırılımı Gerçekleştirecek Program


Kırılımında Kullanılacak Araçlar : Soft-ICE

Kırılımda kullanılan Soft-ICE programı, en çok kullanılan debugger’dır Debugger’lar programların breakpointler (durma noktaları) ile durdurularak kodlarının incelenmesini ve hataların düzeltilmesini sağlarlar

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #9
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi




23 Programın Kırılım Aşamaları

Programın kırılımı, sekiz aşamada gerçekleşmiştir Bu aşamalar:

231 Programın register bilgilerinin öğrenilmesi

İlk olarak yapılacak iş, help dosyasında register kısmını okumaktır Bu, programın nasıl kayıtlı hale getirileceği konusunda az da olsa bir bilgi verecektir Klasik olarak, help kısmında about ya da register diye bir kısım olup olmadığına bakılır Bu program itibariyle register diye bir kısım olduğu görülür Bu kısma tıkladığında ekrana Name, Company ve Code dan oluşan bir pencere gelir Makineye daha önceden kurulmuş olan Soft-ICE Programına girilir Program, breakpointler ile durdurulur En fazla kullanılan breakpointler, bpxgetwindowtexta ve bpxgetdlgitemtexta’dır Bu fonksiyonların sonundaki a karakterleri, 32 bit programlar için kullanılacağını göstermektedir

232 Register ekranında istenen bölümlere herhangi bir değer girilmesi

Register ekranında, name kısmına Hilal Akarkamçı, company kısmına Gazi Universitesi, Serial kısmına da 7777777 diye herhangi bir serial yazılsın

233 Soft-ICE’ta breakpoint konulması

Enter tuşuna basılmadan önce Ctrl+D ile Soft-ICE 'a geçip breakpoint konulmalıdır Soft-ICE ta iken bpx getwindowtexta yazıp entere basılır ve sonra x ile yeniden Windows’a dönülür

234 Girilen bilgilerin onaylanması

Enter'a basıldığında yeniden Soft-ICE ekranına gelindiği görülür, çünkü program getwindowtexta ile yazılanları okumaya çalışır ve Soft-ICE da bu komutu görünce durur

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #10
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



235 Girilen değerlerin okutulması

Kayıt ekranında üç tane girdi olduğu için program bunları teker teker okuyacak ve kendi gerçek seri numarası ile verilen seri numarasını karşılaştıracaktır Bu nedenle, Soft-ICE’ta iken x yazılıp enter’a basılacaktır Sonra bir kez daha x yazıp entere basılacak, böylelikle girilen isim ve şirket kısımları programa okutulmuş olur Bundan sonra program artık registerlar aracılığıyla bu bilgileri değişik hesaplardan geçirecek ve kodu hesaplayarak sonradan girilen kod ile karşılaştıracaktır Soft-ICE’ta şu şekilde bir ekran çıkacaktır :

USER32!GetWindowTextA
BFF51804 B1B2 MOV CL,B2
BFF51806 55 PUSH EBP


236 Gerçek seri numarasının bulunması

Burada iken bc 0 ile koyulan breakpoint temizlenir Şimdi bu kod takip edilerek gerçek serial bulunmaya çalışılır Kodları adım adım izlemek için F10 tuşuna basılır Alt tarafta o an hangi exe veya dll’nin çalıştığı yazmaktadır Hala Teleport Pro verilen bilgileri okuduğundan şu noktaya gelinceye kadar F10 a basılır

* Reference To: USER32GetWindowTextA, Ord:013Fh
:0044A950 FF15C0434600 Call dword ptr [004643C0]
:0044A956 8B4D10 mov ecx, dword ptr [ebp+10]
:0044A959 6AFF push FFFFFFFF
:0044A95B E83793FFFF Call 00443C97
:0044A960 EB0B jmp 0044A96D

00444A95B deki çağrı (call) nın F8 ile içine girilebilir ancak çağrıların ardından conditional jump yani "je" "jne" gibi kodlar yoksa bu çağrılar F10 ile izlenebilir F10 ile kod izlendiğinde şu noktaya gelinir :


0042472D C6415C01 mov [ecx+5C], 01
:00424731 E958FFFFFF jmp 0042468E
:00424736 B8981F4600 mov eax, 00461F98
:0042473B E8B0610000 call 0042A8F0
:00424740 51 push ecx
:00424741 51 push ecx
:00424742 53 push ebx
:00424743 56 push esi
:00424744 57 push edi
:00424745 8BF9 mov edi, ecx
:00424747 6A01 push 00000001
:00424749 E8F1DE0100 call 0044263F
:0042474E 33DB xor ebx, ebx
:00424750 6A0A push 0000000A
:00424752 53 push ebx
:00424753 FFB7DD000000 push dword ptr [edi+000000DD] ;Seriali edi+dd ye tek tek yaz
:00424759 E852700000 call 0042B7B0
:0042475E 8B0D9C1A4800 mov ecx, dword ptr [00481A9C]
:00424764 83C40C add esp, 0000000C
:00424767 8945EC mov dword ptr [ebp-14], eax
:0042476A 3899CD020000 cmp byte ptr [ecx+000002CD], bl
:00424770 0F841B020000 je 00424991

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #11
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



Bu noktada yani xx:00424753 de iken d edi+dd yazılırsa data penceresinde EC 25 A3 00 görülür Eğer d A325EC yazılırsa data penceresinde sonradan girilen '7777777' şeklindeki kod görülür Dword ptr, programın verilen Serial’ı byte byte alarak belirtilen belleğe yerleştirmesi anlamındadır Bu yüzden testen işlem yapılarak girilen koda ulaşıldı Kod izlenmeye devam edildiğinde şu noktaya gelinir :

Possible StringData Ref from Data Obj ->"User"

:00424778 BED0B74700 mov esi, 0047B7D0
:0042477D 0F840B010000 je 0042488E
:00424783 FFB7D5000000 push dword ptr [edi+000000D5] ;Kullanıcı ismini belleğe yerleştir
:00424789 E894090000 call 00425122
:0042478E 3945EC cmp dword ptr [ebp-14] ; Eax ile gerçek kodu karşılaştır
:00424791 59 pop ecx
:00424792 753A jne 004247CE ;Kod doğru değil
:00424794 8D4DF0 lea ecx, dword ptr[ebp-10];Kod doğru
:00424797 E8B2EF0100 call 0044374E


Possible Reference to String Resource ID=07076: "Thank you! Your copy of Teleport Pro is now registered",

237 Programın register edilmesi

Bu noktada yapılması gereken tek işlem :0042478E yi F10 ile geçtikten sonra (yani program o bölgeyi çalıştırdıktan sonra) ? eax yazmaktır Bu yazıldığında 1458171568 görülür Bu, gerçek seri numarasıdır Soft-ICE tan çıkıldıktan sonra, Name= Hilal Akarkamçı Company =Gazi Universitesi Serial = 1458171568 yazıp program kayıtlanır
Bu işlemlerin gerçekleştirilmesi için Soft-ICE konusunda bilgi sahibi olmak gerekmektedir

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #12
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



238 Programın seri numarasının hesaplanışı

Programın serial’ının nasıl hesaplandığını görmek için 00424789 deki call a F8 ile girilebilir Hesaplama şu şekilde gerçekleşmektedir İlk başta isim en az 5 karakter mi diye bakılıp, daha sonra boydan 4 çıkartılır ve 4 karakterden sonraki her karakter 5DFEE4A4H ile xor edilip toplanır Assembly de yazılacak olursa, kod şu şekilde olur :

mov edi, offset szName ; İsmi edi ye yolla

push edi

call lstrlen ; Listele

cmp eax, 5 ; 5 ten düşükse işlemi durdur

jl ExitProc0

add eax, -4 ; 4 çıkart

xor ebx, ebx ; ebx i sıfırla

lea edi, szName ; İsmi al

mov esi, 5DFEE4A4H ; Numarayı esi ye yolla

Hesapla:

cmp ebx, eax ; Sona gelindi mi ?

jae Goster

xor esi, [edi+ebx] ; Değilse Xor la

inc ebx ; Ebx i artır

jmp Hesapla

Goster:

mov eax,esi ; Serial eax 'ta

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #13
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



3 TIME TRIAL’LI PROGRAMLARDAN ZAMAN KISITLAMASININ KALDIRILMASI

Süreli programlar, program kodunda kullanım süresinin kısıtlanması sayesinde, belirtilen süre dolduğunda (30 gün, 90 gün) çalışmayan programlardır Özellikle dergilerin verdiği CD'lerdeki programlar bu şekildedir Bu tür bir korumanın konulmasındaki amaç, ticaridir ve programın bu süre içinde tanıtılması ve satın alınmasını amaçlar Burada, zaman kısıtlamasının kaldırılması örnek bir program üzerinde bilinmesi gereken yöntemler ve tüm aşamalarıyla birlikte gösterilmektedir:

31 Call Flow Yaklaşımı:

Herhangi bir program çalıştırıldığında, bir seri fonksiyon, prosedür ve açıklamalardan geçer Call Flow denilen olgu ise bir programın çalıştırılmasından sonra izlediği yolun bir listesi ya da diyagramına verilen addır Bu yol, programın çalıştırıldığı zamandaki koşullar nedeniyle farklılıklar gösterebilir Aşağıda verilen 6 basamak incelenmelidir [6] :

1) GetSystemTime (Sistem zamanını kontrol eder)
2) Installed (Programın ne zaman yüklendiğini kontrol eder)
3) Expired (Deneme süresinin bittiğini belirten bir mesajı gösterir)
4) DaysLeft ("Programı denemek için % gününüz kaldı" mesajını gösterir)
5) Halt (Programdan çıkar)
6) Main (Ana program)

Bu prosedürler kullanılarak, Time Trial (zamana bağlı demo) korumalı bir programın asm kodu aşağıdaki gibi olacaktır:

00000001 : Call GetSystemTime
00000002 : Call Installed
00000003 : if (GetSystemTime - Installed) eğer 30 günden fazlaysa
00000004 : Call Expired,
00000005 : Jmp Halt
00000006 : 30 günden fazla değilse
00000007 : Call DaysLeft,
00000008 : Jmp Main

Gerçek bir kodu incelediğimizde işe şuna benzer:

Call 041829B0 (GetSystemTime)
Call 0492832C (Installed)
Cmp Ax,Bx (if koşulu)
JL 04927435 (ax ve bx değerlerine göre Jump ya da No Jump)
Call 04348234 (Expired=deneme süresi sona erdi)
Jmp 0432833C (Halt=programdan çık)
---JL Address---
Call 04583BC0 (Kalan gün mesajı)
Jmp 042392BC (Ana Program)

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #14
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



Yukarıdaki kod incelenecek olursa, programın çalışma şekli JL emrinden önceki ax ve bx değerlerine dayanmaktadır Buradaki problem ise büyük bir kodun disassemble edilişinden sonra patchlemek için doğru yeri bulmanın zor olmasıdır, çünkü bu tür kodlarda bir çok cmp / jl veya cmp / jne oluşumları bulunmaktadır

311 Yama yapılacak doğru yeri bulmak:

Yukarıdaki kodu kullanarak ortaya 2 farklı program yolu çıkartılabilir Hala 30 günlük deneme süresi içindeyken, programın takip ettiği yol şuna benzeyecektir:

GetSystemTime
Installed
Cmp ax,bx
JL (Jump)
DaysLeft
Main

Deneme süresi sona erdiğinde ise kod şuna benzeyecektir:
GetSystemTime
Installed
Cmp ax,bx
JL ( No Jump )
Expired
Halt

Bu iki listeye bakılırsa, JL komutuna kadar herşeyin aynı olduğu görülür; ama JL de ilk liste atlamayı yaparken 2 liste bizi programın sonuna getirmektedir JL komutu ax ve bx değerlerine bağlı durumdadır Zamana bağlı program kilidini kaldırmak içinse yapılması gereken ya ax ve bx in değerlerini değiştirerek (doğru yöntem) sürekli bir deneme süresine sahip olmak ya da JL komutunu Jmp komutu ile değiştirip programın ilk call flow’daki gibi çalışmasını sağlamak olacaktır

312 Crack işlemi için ihtiyaç duyulacak dökümanlar:

- Soft-ICE (Symbol Loader ı ile birlikte)
- Bir Hex Editörü (örn: Ultra Edit)
- Bir Text Editörü (örn: Notepad)
(Disassembler’a ihtiyaç duyulmamaktadır)

313 Crack işleminin aşamaları

Önce, Soft-ICE’la birlikte install edilmiş olan symbol loader yüklenir Bu görev çubuğundaki klasörden açılabilir Symbol Loader'daki file menüsüne gidip `open module` a tıklanır Buradan da kırılmak istenen programın ana çalıştırma dosyasına tıklanır (örn: mirc için mirc32exe) Bu işlem tamamlandıktan sonra `Module` menüsüne gidilerek "Load Module" a tıklanır Normalde bu bir hata mesajıyla gelecektir, `Yes` e tıklayıp yüklemeye devam edilir Şimdi Soft-ICE, Symbol Loader nedeniyle araya girecek ve aşağıdakine benzer birçok satır görüntülenecektir

FFFF INVALID
FFFF INVALID
FFFF INVALID
FFFF INVALID
FFFF INVALID


Bu bir hata değildir Soft-ICE, sadece hafızadaki henüz çözemediği bir bölümü göstermektedir Şimdi Soft-ICE, yapılmak istenen işleme göre ayarlanmalıdır

Alıntı Yaparak Cevapla

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi

Eski 07-01-2010   #15
Şengül Şirin
Varsayılan

Cevap : Program Kırma Yöntemlerinin Eğitim Amaçlı İncelenmesi



3131 Kod penceresinin kapatılması

Soft-ICE'ta "wc" yazılır Bu komut kod penceresini kontrol eder Kod penceresinin gözükmesi istenmediğinden, bu şekilde kapatılır Bu aynı zamanda mouse kullanılarak da yapılabilir Kapatılmak istenen pencerenin üst köşesine mouse ile tıklayıp sürüklenebildiği kadar yukarıya sürüklendiğinde, bu pencere kapanacaktır

3132 GeTSystemTime için breakpoint konulması

GetSystemTime (O anki tarih ve saati göstermek için kullanılan birçok api komutundan birisidir) için bir breakpoint konulmalıdır Bu, komut penceresinde "Bpx GetSystemTime" yazılarak sağlanır Bu arada, GetSystemTime sadece fonksiyonun adresini belirtir Fonksiyonun adresi bilinse, "Bpx 004283CD" gibi bir satır da yazılabilirdi Bu durumda bpx komutuna bir offset de eklenebildiği görülüyor; örn: "Bpx GetSystemTime +4" teki gibi Bu komut, fonksiyonun başlangıcından 4 offset sonra Soft-ICE’ın devreye gireceğini gösterir

3133 Programın yüklenmeye devam edilmesi


Soft-ICE'ta breakpoint (BPX GetSystemTime) ayarlandığına göre programın yüklenmesine ve çalışmasına devam etmek için izin verme zamanı geldi Yapılması gereken CTRL+D tuşlarına basmaktır Program yüklenmeye ve çalışmaya devam ederken 'GetSystemTime' komutunu işleyecektir Bu olduğunda, Soft-ICE belirecek ve programı fonksiyonun başında durduracaktır Komut penceresinde ise 'BPX due to KERNEL32!GetSystemTime' yazısı görülecektir Burası olayın kaydedilmeye başlanması gereken yerdir

3134 Fonksiyondan çıkılması

Şimdi 'GetSystemTime' fonksiyonunun başlangıcında bulunuluyor Bu fonksiyon atlamalıdır ki tüm fonksiyon işlendikten hemen sonra yer alan asm komutuna varılsın
('GetSystemTime' fonksiyonu Windows \ System dizininde bulunan Kernel32dll'nin bir parçasıdır) Bu fonksiyon bilgisayarın o anki durumundan bağımsız olarak her zaman aynı komutları işleyecektir, bu yüzden bu komutların kaydedilmesine gerek yoktur Fonksiyondan hemen sonraki asm komutuna atlamak için yapılması gereken "F11" tuşuna bir kez basmak olacaktırBu noktadan sonra yapılacak işlemlerde dikkatli olmak gerekmektedir

3135 Nag ekranına kadar tüm komutların kaydedilmesi

Bu noktada yapılan herşeyin kaydedilmesi gerekmektedir Yapılması gereken; `Programı kullanabilmek için % gününüz kaldı` text’ini içeren Nag Ekranı çıkana kadar F10 tuşuna basarak kodun içinde adım adım ilerlemektir Dikkat edilirse, komut penceresinde işlenen tüm kodun belireceği görülür Tüm bu bilgiler Soft-ICE Buffer'ında kaydedilmektedir

3136 Log dosyasının kaydedilmesi

Nag ekranı çıktığında, ilk log dosyasını kaydetmenin zamanı gelmiştir Yapılması gereken hala yüklü olan Soft-ICE Symbol Loader’a giderek File menüsünden `Save Soft-ICE history as` e tıklamaktır Şimdi bu dosya, asa1txt diye kaydedilecektir Bu dosya bir text editörle açılacak olursa, komut penceresindeki tüm olanların kaydedilmiş oldukları görülecektir [6]

Bu, ilk “ Call Flow ” dosyasıdır

Alıntı Yaparak Cevapla
 
Üye olmanıza kesinlikle gerek yok !

Konuya yorum yazmak için sadece buraya tıklayınız.

Bu sitede 1 günde 10.000 kişiye sesinizi duyurma fırsatınız var.

IP adresleri kayıt altında tutulmaktadır. Aşağılama, hakaret, küfür vb. kötü içerikli mesaj yazan şahıslar IP adreslerinden tespit edilerek haklarında suç duyurusunda bulunulabilir.

« Önceki Konu   |   Sonraki Konu »


forumsinsi.com
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ForumSinsi.com hakkında yapılacak tüm şikayetlerde ilgili adresimizle iletişime geçilmesi halinde kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde gereken işlemler yapılacaktır. İletişime geçmek için buraya tıklayınız.