Buraya kadar umarım anlamışınızdır...Şimdi bu fonksiyonu Knight Online exede görelim....KnightOnline exeyi açmıştık ztn kod halinda şuan önümüzde duruyor...O zmn KnightOnline Moduluında gene 2.Dersde öğrendiğimiz gibi CreateMutexA API'sini arayalım...Hatırlatmam gerekirse kısaca CTRL+N tuşları ile buraya ulaşabiliriz...
Açılan pencere ise direk klavyemizden CreateMutexA yazaraktan aratabiliriz...
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 166KB ) Buraya Tıklayın
Gördüğünüz gibi API mizi Bulduk Sıra bu API'mizin yerini öğrenmeye geldi bunu için buldugumuzu seçerek Enter tuşuna basaraktan bu APInin nerelerde kullanıldıgını öğrenebiliriz...
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 217KB ) Buraya Tıklayın
Tekrardan Şansımız varmışki KnightOnline sadece 1 Defa Açılırken Kontrol Ediyor
O zmn sıra geldi bu yeri Kod penceresinde bulup hacklemeye...O zmn hemen burdanda çıkan seçeneği seçip Enter tuşuna basarak kod penceresindeki yere gidiyoruz...
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 191KB ) Buraya Tıklayın
Bu arada göremeyenler olabilir KOD pencresinin 64B9D9'uncu adresinde bulunuyor...
Ewt gördüğünüz gibi tam öğrendiğimiz bilgiler gibi KnightOnline öncelikle CreateMutexA fonksiyonunu Kernel32 den Çağırıyor...
Bunu ztn öğrenmiştik CALL Fonksiyonu,2.Satırda ise öğrendiğimiz bilgideki gibi GetLastError fonksiyonunu Kernel32 den Cağırıyor...
tunahanmania
Açık Profil bilgileri
tunahanmania - Özel Mesaj gönder
tunahanmania - Daha fazla Mesajını bul
tunahanmania - Arkadaş Listene ekle
vBExperience
Puan: 3.817, Level: 14
Level Up: 54%, 233 Puan Gerekli
Aktiflik: 0%
Ranking Shop
03-10-2008, 17:30 #2 (permalink)
tunahanmania
Godummu SitDown
Puan: 3.817, Level: 14
Aktiflik: 0%
Üyelik tarihi: May 2008
Şubesi: Xtanblue?__?
Mesajlar: 172
Rep Puanı: 2430
Rep Derecesi:
Rep Gücü: 33
Ruh Hali: Cevap: Assembly ye Genel Bakış / Kücük Anti-Cheat ve Exeleri Hacklemek !
--------------------------------------------------------------------------------
Şimdi burda 2.Farklı yöntem uyguluyabiliriz...
1.Yöntem = CreateMutexA ve GetLastError fonksiyonunu oldugu gibi CALL yapmasını engelleyebiliriz Ancak bu exede Crash yani aniden yıkılmalara sebep olcaktır...
2.Yöntem = ise Örnek kodumuzda öğrendiğimiz gibi programlar IF kullanaraktan olup olmadıgını belirliyor ve var ise 2.kez açılan program açılamadan kapanıyor...
O zmn bizde Fonksiyonları ellemeden sadece Exenin kendisinin kapanmamasını sağlıyabiliriz...
Gene Bu dersin başında öğrendiğimiz gibi JNZ bir işlemi sonlandırıyordu ve buraya baktıgımızda hemen 3.Satırda gördüğümüz üzere JNZ SHORT KnightOn.0064BA09 kodu bulunuyorki bu kod bizim exemizin 2.Kez açılırken kapanmasını sağlayan kod
O zmn gene dersimizin başında öğrendiğimiz gibi burayı programa atlata biliriz peki nasıl mı yapcaz çok basit sadece JNZ yi JMP ile değiştirerekten
böylelikle knightonline kapanmadan bir sonraki koda atlıcaktır
Değiştirmek İçin !!! JNZ nin üzerine 2 defa tıklayıp yeni penceredende JNZ yi JMP ile değiştirip Assemble ediyoruz...
İşte biraz zor gelsede sizlere aslında gayet basit bi şekilde KnightOnline exenin sınırsız sayıda açılmasını sağlamış bulunmaktayız....
Ama bide bu kod değişikliğini kaydetmemiz gerekiyor,
Yeni exeyi Kaydetme
Kod penceresine Sağ Tıklayıp > Copy To Executable demek ardından > All Modifications seçeniği seçmek ve gelen pencereden ise > Copy ALL dedikten sonra
karşımıza modifiye edilmiş yeni bir kod penceresi çıkacaktır !!!
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 183KB ) Buraya Tıklayın
Burdanda resimdeki gibi Sağ Tıkayıp > Save File diyip açılan penceredende sadece kaydediceğimiz yeri seçip kaydet dememiz yeterlidir !!!
Artık exmizi tepe tepe kullanın...
ShellExecuteA API'si ve Engellemesi ( Bi Programın başka bi programı çalıştırma API'si, dersimizdede InternetExplorer Açılmasını Engelleme )
Derslerimiz ve bilgilerimizde şuan bi seviye ilerlemiş bulunmaktayız beyler...Şuan konuya yavaş yavaş adapte olmusunuşdur hepiniz bundan sonra bende size birazdaha kolay bir dillen çok normal bi dille konuşucam eğer anlayamaz iseniz ltfn 1.Derse geri dönün
Ewt gelelim şuanki konumuz ShellExecute API'sine gene hacklemeye geçmeden önce bu kodun kullanımını bilmemiz şarttır.O zaman gelin biraz bilgi edinelim hemde kendi projelerimize yararlı olsun bu arada...
ShellExecute Nedir ve Nerelerde kullanılır?
Tanımlanan dosyada aksiyonlar gerçekleştirmek üzere kullanılır, ShellExecute bir Shell32 APIsidir
Peki nedir bunlar?
Edit = Programın normalde kullanılan editor ile editlemek üzere başlatır...
Explore = Belirtilen bir Klasor ise, belirtilen yerde explorer ile açar...
Find = Belirtilen bir dosya ve klasor ismi ise yerini bulmak üzere arar...
Open = Programın Kendisini,belirtilen parametlerle başlatır...
Print = Belirtilen bir dosya ise Print etmek üzere printerınıza yönlendirir...
Kullanımı
Kod:
HINSTANCE ShellExecute( HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
ShellExecute komutunun bağzı parametlereri var gördüğünüz gibi,
HWND = islemi açık olan bir programda uygulucaksanız kullanılır yoksa NULL dur
IpOperation = Yapılacak İşlem ki yukarda gördük bunları ztn...
IpParameters = Parametreler mesela KO iexplorer açarken kendi sitesnin adresi parametredir (
http://www.ko-cuce.com/gorsel-progra...tonline....etc)IpDirectory = Bulundugu yer ancak iexplorer gbi programları başlatırken buna gerek duyulmaz çünkü ztn windows altında otomatik başlatılır !!!
nShowCmd = Açılan pencerenin rahut programın ne şekilde gösteriliceğidir !!!
Ewet kodumuz hakkında yeterli bilgiye sahip olduk artık sihirli programımı Olly ile işe kurulabiliriz,öncelikle exemizi açalım ve geçen yaptıgımız gibi yüklenen fonksiyonlardan ShellExecuteA APIsini arayıp bulalım ve kullanılan yerleri görüntüleyelim;
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 104KB ) Buraya Tıklayın
Ewt bu sefer karşımıza 4 tane seçenek çıktı yani KO dört kere kendisi dışında başka bir işlem başlatmaktadır...Bizim burda dogru olanı bulmamız şart budaki amacımda karşınıza fazla seçenek oldugunda eliye eliye dogru olanı bulmanızı öğretebilmek...
O zmn başlıcalıyım ilk seçeneği seçip kod pencresindeki yere gidelim,
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 218KB ) Buraya Tıklayın
Suan 1.Shell Karşımızda biraz inceliyelim
Kod:
005272B7 > 6A 01 PUSH 1 ; /IsShown = 1; Case 15 of switch 00526FFD
005272B9 . 6A 00 PUSH 0 ; |DefDir = NULL
005272BB . 6A 00 PUSH 0 ; |Parameters = NULL
005272BD . 68 08646D00 PUSH KnightOn.006D6408 ; |FileName = "Option.exe"
005272C2 . 68 00646D00 PUSH KnightOn.006D6400 ; |Operation = "open"
005272C7 . 6A 00 PUSH 0 ; |hWnd = NULL
005272C9 . FF15 C4326A00 CALL DWORD PTR DS:[<&shell32.ShellExecut> ; \ShellExecuteA
005272CF . 6A 00 PUSH 0 ; /ExitCode = 0
005272D1 . FF15 48336A00 CALL DWORD PTR DS:[<&user32.PostQuitMess> ; \PostQuitMessage
ASM Kodu karşımıza şu sekilde şimdi bu kodu birlikte yorumluyalım,
FileName = Option Exe yani knightklasorundaki option.exe yi çalıştırıyor ( Operation=Open)
Ardından parametleri belirledikten sonra o parametleri kullanarak Shell32 den programı başlatıryor
ve KO ya QuitMesseage göndererek KnightOnline'ı kapatıyor bildiginiz gibi koda oyunda optiona tıkladımızda açmak için koyu kapatıyor işte bu o...
Yani 1.Shell Ana ID&PASS menüsündeki Option Buttonu için kullanılııyor anladıgımız kadarı ile...
Ardından 2.Shell CALL operasyonuna bakıyoruz ve aynı kodu görmekteyiz bu ondan daha sonra vede kodun ortalarında bulundugu için bunuda oyundan exit yaparkenki Dialogda ( SelectServer,Option,Exit) filan yazıyorya bu koduda ordaki Option Butonuna yorumluyabiliriz...
Böylelikle ilk 2 Şıkkı elemiz bulunmaktayız,o zmn şimdi üçüncüye bakalım ve böyle bir kod görmemiz gerekmekte...
Kod:
00646308 |> 6A 01 PUSH 1 ; /IsShown = 1
0064630A |. 53 PUSH EBX ; |DefDir
0064630B |. 53 PUSH EBX ; |Parameters
0064630C |. 50 PUSH EAX ; |FileName
0064630D |. 68 00646D00 PUSH KnightOn.006D6400 ; |Operation = "open"
00646312 |. 53 PUSH EBX ; |hWnd
00646313 |. FF15 C4326A00 CALL DWORD PTR DS:[<&shell32.ShellExecut>; \ShellExecuteA
Burdada gördüğünüz gibi herhangi bi file adı belirtilmemiş string olarak ancak tabikide kod içerinde belli ancak burda göremiyoruz,
Burda boyle elemek olmaz o zmn 4.Şıkka bakmamız gerekmekte
4.Şıkta ise tekrardan aynı kodu görüyoruz...Ve biraz düşünmemiz lazım bu noktata...Kendimize sorucagımız soru şu olmalı?
KnightOnline oyunda Hangi Programları çalıştırımakta ?
bu sorunun cevabını kendiniz bulmalısınız buldugunuzda görüceksinizki Option.exe den başka sadece InternetExplorer başlatıyor KO
Tm Cevabınız çok doğru sadece o 2 Den başka bir program başlatmıyor ancak,Unuttugumuz bir yer daha var burda !!!
O da KO nun içindeki PowerUpStore
Ozmn burda incelediğimiz gibi 3.Şık oyunun içinde ve kod penceresindede gördüğümüz gibi 4.Şıktan daha yukarda ve daha ortada vede bizim IExplorer KO kapanırken açılıyor doğaldırki kodun son kısımlarında olsun...Buna dayanaraktan terchimizi 4.Şıktan yana kullanmaktayız...
O zmn 4.Şıkka gidelim ve şu sekilde tüm ShellExecute APIsini seçelim yukarları seçmemisin nednei örnek kodda gördüğümüz üzere yukardaki satırların aşağıdaki sheel apısinin parametreleri olmasıdırki eğer sadece shell yapmasını önlersek peki bu parametreler ne olcak? O zmn KO kapanışta hata verir ve tam kapanmaz Alt+Del yapmanız gerekir...Bunu olmasını istemeyiz o zmn kodu parametreleri ile seçelim ve ardından resimdede görüceğiniz gibi
Sağ Tık > Binary > Fill With NOP's diyelim...
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 218KB ) Buraya Tıklayın
Böylikle öğrendiğimiz gibi NOP demek hiç bi işlem yapmaması demektir böylelikle ko hiç bi işlem yapmadan direk olarak kapanacaktır !!!
Orjinal Boyutunda Açmak İçin ( 1280x800 ve 187KB ) Buraya Tıklayın
Tm artık tek yapmamız gereken Exemizi save edip kullanmak
Ders-4 Başlangıç için Basit Anti-Cheatleri inceleme ( TurkeyKO Anti-Cheat ))
http://rapidshare.com/files/128995560/Turk...uncher.rar.htmlEwet beyler bu çok basit gelecektir sizler için temel bilgileri öğrendikten sonra...Program basit bir şekilde yazılmıştır !!!
Ben tatildeyken sizden ricam programı incelemek ve bilgi edinmek...Turkeyko oynuyor olmanız gerekmez sadece ece ne gibi şeyler yapıyor onu görün...
Ve yapabiliorsanız şunları yapın,
TurkeyKO Launcher Process kontrolü yapar yabi örneğin Cheat Engine ve bulursa kendisini kapatır kendisi kapanırkende KnightOnline'ı kapatır bunu için ilk hedefiniz bunları bulup etkisiz hale getirmekki bu çok kolay olcaktır...
Programların içinde Hile ve SpeedHack programlarıda vardır bunlarıda etkisiz hale getirin...
Benden size bilgiler, hangi apinin process kontrolü yapabildiğini öğrenin yada CheatEngine.exe Stringlerini aratın...
ve buldugunuzda etkisiz hale getirmek için launcherın kapanmamasını önleyin böylelikle Ko da kapanmaz...
2.Olarak TBL kontrolü yapar yanlış hatırlamıyorsam Byte cinsinden kontrol yapıyordu ve yanlış ise linkten doğru dosyayı indiriyordu ve oyuına giriyordu hedefiniz bunu etkisiz hale getirmek ya
byte yanlış olsa bile dogru cevabu vermesi rahut 2.yöntem 1.yöntem zor geldiyse linkten dosyayı indirmeden oyuna girmesine yönlendirme...
2.İsteğim biraz zor ve zorlar sizi tatil sonrası yaparız birlikte yoklugumda yerime bakan arkadaşlarım olur ztn umarım bol bol tatışma bulurum gelince crackme yayınlayıp çözün kendi aranızda yoklugumda
Ders-5 Kendi Kendimizi Geliştirme ( CrackMe Programları ( Sizler gibilerin anlamaları için Keygenden tut, trial süresini hackleme gibi )[/color][/b]