Bfd e-Beyanname v2006 1X.XX

kresuz
Program Url: www.bilson.biz
Program Tipi:Beyanname programı
     Araçlar:
OllyDbg v1.10,Dup2
Basit (X)  Orta ()  Zor ( )  Pro ( )


Başlangıç

Programın bazı versiyonların da pack var bazıların da yok.Serial le korunuyor.Serial cryptolu (DES).Yani serial işi zor.Bizde programa Demo degil kayıtlısın diyecegiz. Bu işi generic patch la yapacagız.Öncelikle şunu belirteyim.Crack işini Lazali yaptı.(Teşekkürler)Kodlar ona ait.Ben sadece generic patch a aktardım.
Yazı


Neden Generic patch: 

Programcılar genellikle serial ve kayıt kontrol bölgelerini degiştirmiyorlar.(Sanırım bundan sonra onlarıda degiştirirler)
Programların sürekli güncellemelerine güveniyorlar.Cünkü programın sonuna da olsa eklenen 1 byte dahi daha önce yapılan 
patch ları etkisiz hale getiriyor.Normal patchmakerler boyut kontrolu yaptıgı icin calışmıyorlar.Bizde patch yöntemi
degiştirecegiz.Dup2 de kod dizilişlerini aratıp yerine patch yaptıgımız kodları yazdıracagız.Bu yöntemde boyut kontrolü 
yapılmıyor.Programın yeni versiyonun boyutu  ne olursa olsun,aynı kod dizilişi varsa patch calısıyor.Ayrıca Dup2 packlı 
dosyalarıda inceleyip patch yapabiliyor(Bfd nin v2006.10.27 versiyonu UPX 0.89.6 - 1.02 / 1.05 - 1.24 packlı idi onuda 
sorunsuz patch yaptı)
Bu kadar acıklamadan sonra işe başlayalım.

Programı olldbg de yükleyip çalıştırın.Kayıt bölümünde sallama bir serial yazın.Onayla tuşuna basmadan önce 
Ollydbg ye gecin.ctrl+G yapın önünüze gelen ekrana 0085502A yazıp enterleyin.0085502A satırına F2 ile breakpoint koyun.
Programa gecip onayla tusuna basın. Simdi ollydbg yiz.

0085502A   .  E8 5DF5C8FF       CALL    004E458C    ==>Burada durdu.
0085502F   .  84C0              TEST    AL, AL      ==>Call dönüsü AL=0 ise Demo
00855031      74 36             JE      SHORT 00855069   ==>AL=0 ise hata mesajına git.
00855033   .  6A 00             PUSH    0


Şimdi 0085502A   .  E8 5DF5C8FF       CALL    004E458C  satırında F7 yapın .

004E458C      83C4 F8           ADD     ESP, -8
004E458F      8B0A              MOV     ECX, DWORD PTR DS:[EDX]
004E4591      890C24            MOV     DWORD PTR SS:[ESP], ECX
004E4594      8B4A 04           MOV     ECX, DWORD PTR DS:[EDX+4]
004E4597      894C24 04         MOV     DWORD PTR SS:[ESP+4], ECX
004E459B      8BD4              MOV     EDX, ESP
004E459D      33C9              XOR     ECX, ECX
004E459F      E8 78FEFFFF       CALL    004E441C
004E45A4      66:813C24 F6D9    CMP     WORD PTR SS:[ESP], 0D9F6
004E45AA      0F94C0            SETE    AL
004E45AD      59                POP     ECX                          ;  BBf.0085502F
004E45AE      5A                POP     EDX                          ;  BBf.0085502F
004E45AF      C3                RET     ==>Kayıtlı olması için geri dönerken AL=1 olmalı

PATCH:

004E458C      33C0              XOR     EAX, EAX                     ;  Eax ı önce sıfırla
004E458E      90                NOP
004E458F      B8 01000000       MOV     EAX, 1                       ; Eax'a 1 al
004E4594      C3                RET                                  ;AL=1 olarak geri dön.
004E4595      90                NOP
004E4596      90                NOP
004E4597      90                NOP
004E4598      90                NOP
004E4599      90                NOP
004E459A      90                NOP
004E459B      90                NOP
004E459C      90                NOP
004E459D      90                NOP
004E459E      90                NOP
004E459F      90                NOP
004E45A0      90                NOP
004E45A1      90                NOP
004E45A2      90                NOP
004E45A3      90                NOP
004E45A4      90                NOP
004E45A5      90                NOP
004E45A6      90                NOP
004E45A7      90                NOP
004E45A8      90                NOP
004E45A9      90                NOP
004E45AA      90                NOP
004E45AB      90                NOP
004E45AC      90                NOP
004E45AD      90                NOP
004E45AE      90                NOP
004E45AF      90                NOP

Dup2 icin gerekli kodlar belli oldu.
Örnegin:
004E458C      83 C4 F8        6 byte yerine

004E458C      33 C0             
004E458E      90 yazmamız.gerekiyor.

Peki 004E458C satırından 004E45AF satırına kadar bütün kodları tek tek mi yazacagız.Bu pratik degil,ayrıca hata da yapabiliriz.
Ollydbg bu konuda da bize kolaylık gösteriyor.
Önce orijinal kod dizilimini cıkaralım.
ollydbg de
004E458C  satırında 004E45AF  satırına kadar isaretleyin.Sonra kodlar üzerinde iken sağ tus yapın.

 
Binary copy ye tıklayın.Notepad ı acın sag tus yapıp yapıstıra tıklayın ilk kod dizilimi karsımızda.

83 C4 F8 8B 0A 89 0C 24 8B 4A 04 89 4C 24 04 8B D4 33 C9 E8 78 FE FF FF 66 81 3C 24 F6 D9 0F 94
C0 59 5A C3   

Patchlı halinde iken yukarıdaki işlemlerin aynısını yapın.

 

33 C0 90 B8 01 00 00 00 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90   

Evet Dup2 için gerekli olan kodları kolayca cıkardık.Şimdi ollydbg yi kapatın.Dup2 yi acın.
Önce New project e tıklayın.Patch infoya gerekli bilgileri yazın.Saklayıp çıkın.Sonra Add tusuna basın orada 
Search & Replace Patch a Çift tıklayın.Sonra ana panoda ki Search & Replace Patch a tıklayın.
Önünüze gelen ekranda target File de BBf.exe yi gösterin.

Search Pattern ne orijinal kod olan

83 C4 F8 8B 0A 89 0C 24 8B 4A 04 89 4C 24 04 8B D4 33 C9 E8 78 FE FF FF 66 81 3C 24 F6 D9 0F 94
C0 59 5A C3  dizilişini copy+paste yapın.

Replace Pattern ne de patch lı dizilimi

33 C0 90 B8 01 00 00 00 C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
90 90 90 90   copy+paste yapın.ve Add tusuna basın.
Ayrıca bu programın packlı versiyonları da oldugu icin Target is compressed PE File şıkkını işaretleyin.
Save tusuna basmadan önce bu kodlar baska bir yerde varmı test etmeliyiz.Çünkü biz gereken yeri patch yaptık.
Baska bir yerdede bu diziliş varsa programda sorun cıkar.Yaptıgımız patch o dizilişi gördügü bütün yerleri degiştirir.  

 

Yukarıdaki Check Search pattern Occurrence tusuna basın.File bölümünde BBf.exe yi gösterin.Check Tusuna basın.

 

Evet sadece bir yerde varmış.Patch ımız sorunsuz calısır.Exit tusuna basın .Sonra save tusuna basıp cıkın.
Ana panoda Create Patch a basarak patch ı olusturun.Hepsi bu kadar.

 

Bu patch programcı eger o yukarıdaki kod dizilişlerini değiştirmez ise bütün versiyonlarda çalışır.


Bu tutoriali yazmaktaki amacım programcılara ,programlarını daha iyi korumaları için yol göstermektir..
Son olarak şunu söyleyeyim:Bir programı kullanarak para kazanıyorsanız,o programı mutlaka satın alın.Emeğe değer verin...
Lisansız kullanımdan tutoriali hazırlayanlar sorumlu değildir.

Son Notlar
Bu yazıda yazım yanlışları , bilgi hatası olabilir.Eğer bir yanlış bulursanız bana mail atın düzeltmeye çalışırım.

E-Mail: kresuz

http://kresuz.zor.org
http://kresuz.da.ru

;