1737 Patchine Kadar Yapılan Dupe

Oltayı atalım önce bi :D 1737 dupe, düpe, düp knight online dupe, para dupe, coin dupe, 10k dupe, para bug, exp bug, dupe programı, 1737 dupe programı, knight online dupe programı

Buyrun önce bir izleyin : (Youtubedn, görünmüyorsa ttnet saolsun deyin geçin :P)


Bu öylesine bir yazıdır, yani boşa ümitlenmeyesiniz dupe yapmayı anlatmıcam. :P
Şimdi konuya gelince, Konu paket yakalama/yollama kabiliyetine sahip olan arkadaşların işine yarayabilir. (aslında dupe falan değil ama öyle diyor millet malum :D Asıl konum bug, diğer yandan dupede vardı, rollback sayesinde yapılıyordu, sadece ioniada oluyordu fakat şuan bitti.) 

Ordan burdan okuduğum şeyler doğrultusunda bir grup arkadaş kitlesi, bir program yapmış sonra bu programı bu arkadaşların birinden çalmışlarmış sonra çalan kişi ona buna satmışmış sonra sonrada ipin ucu k2 ye kadar gitmiş bildiğimiz üzerede bundan sonra serverlar 1 gun kadar kapalı kaldı.

Yapılan bug aslında çok basit, sadece araştırma gerektiriyor. Malum kapandı ama bundan sonrada buna benzer olaylar yapılabilir. Mümkündür. Her yeni patch mutlaka yeni bir açık verecektir. Duyduğuma göre 35lvl de açılan bir görev veya her neyse veya hangi lvl de açılıyorsa bilmiyorum, sürekli yapılabiliyormuş. Siz bu görevi yaptığınızda confirme bastığınız zaman bir paket yollanıyor. Ve muhtemelende server bu paketi sürekli kabul ediyor. Görevi yaptığınızdan haberi yokmuş gibi sonucunda geriye ufak bi miktar exp ve 10k gibi bir para donduruyor. İşin mantığı bu. Tek yapmanız gereken doğru paketi göndermek. Biraz akıl yorulduğu zaman tam metodu bulunabilecek birşey. Dupe artık eskisi gibi değil, önceden herkez paylaşırdı ama artık olay farklı boyutlarda o yüzden bu yazı bence çok yararlı bir yazıdır okuyan için. KOXP hile vb heryerde paylaşılıyor ama konu Dupe olunca her koyun kendi bacağından asılıyor malesef :) Sonuç itibarı ile paket yakalama yollama yapabilen arkadaşlar, gezin, deneyin, araştırın. Ben şuandan itibaren hazzard game üzerinde düşünmeye başladım ve eğer oyundan kaldırılmadıysa bugün yarın denemelere başlıcam. Bir şans oyunu olduğundan ve dönecek değer random olabileceğinden server kaybettin yollasada biz cliente kazandın gösterebiliriz belkim :P Komik gözükebilir, dupe böyledir biraz delilik seviyesinde düşünmek lazım :) her yolu denemekte fayda var. Neyse amaç fikir vermekti, buradan belki fikirlerimizide paylaşırız, cevaplarınız, fikirleriniz beni ve diğer okuyucuları mutlu edecektir, paylaşmaktan kaçınmayın ltfen

DLL-Inject (PART I)

Yazımı okuyunuz;  06 HAZIRAN 2008 CUMA
bİR KAÇ GÜN İÇİNDEMİ DEMİŞİM ? :d

Neyse işin aslı blog başıboş kalmasın dedim, birşeyler yaziyim. Madem tamamını getiremedik, parça parça part part bölük pörçük :D ekleyelim, vakti gelince part 2 3 vs de gelir inş. (Boş zamanlarımı özledim! :D)

Konumuz dll-inject. Basitçe dll-inject: o an çalışan bir process(exe) nin hafızasına bir yere kendi dllmizi kaynatmak, çaktırmadan araya sokuşturmak gibi bişey. Bu sokuşturduğumu dll de tabiki o process ile etkileşime geçmek için hazır vaziyete geliyor. Peki nedir bunun avantajı ? cidden bilmiyorum :P şaka :P bunu yapmamızın amacı şudur: ko yu örnek alarak anlatiyim basit olsn.

Xtrap diye bir icat var, ve biz ko da hile çalıştırmak istiyoruz. Xtrap ko açıkken o sıra bütün programları kontrol edecektir. Eğer sistemimizde açık olan bir program konun memorysine dokunmaya yeltenirse, 3rd party tools hack detectedı ekrana yapıştırır ve oyunu kapatır :D Burdaki mantık şudur, xTrap konun hafızasına dışarıdan gelebilecek tüm erişimleri durdurur. Ancakkkk.... Memory e erişen zaten ko nun kendisiyse bir problem olmayacaktır :) yani inject ettiğimiz dll. Anlatmak istediğim, dll yi konun memorysine soktuğumuzdan xTrap o dll yi ko ya ait sanacaktır. (yani en azından bi denemek lazım :P) eğer hile engelleme programı çok kabiliyetliyse belkide o dll nin ko ya ait olmadığını anlar ancak bunuda aşmanın yolları vardır en basitinden ko nun açtığı dll lerden biri gibi gösterilebilir. (mantıken yararlı olmayacaktır çünkü hile engelleme programı saf değilse crc-check veya header-read yapıp yine anlar) Yani bunlar bizi şuraya yönlendiriyor: burada önemli konu aslında dll yi inject etmek değildir. DLL yi inject edebilmektir. Şurdan bir örnek veriyim. Eski kohack i hatırlarsanız, o zamanlar koda HackShield koruması vardı. Ve biz karakter select ekranında koHacki açıyorduk oyuna öyle girersek çalışıyordu. Bu ne demektir ? karakter select ekranında bir açıktan faydalanılmış. Yani dll bir şekilde sokuşturulmuş demektir. (Bu açık her şekilde olabilir mantık zorlamayla beraber ollydbg yol gösterici olacaktır.) O sırada hackshield hile kontrolü yapmıyordur, veya o sırada dll inject edildiğinde ko yu kapatamıyor, hata veremiyordur veya fill with nop vs vs... 

Inject ettiğimiz dll dialogsuz olabilir, hotkeylerle çalışabilir ancak dialoglu olması (HF) tarzında daha mantıklıdır. Inject edilmiş DLL nin bir avantajı daha vardır, daha hızlı çalışacak, adreslere daha hızlı erişecektir, yani dışarıdan çalışan bir exe ye göre. (şuan kullanılan hile programları)

Neyse, bu part için bu kadar yeterli sanırım, aşşağıda verdiğim kodlar DLL-Inject UDF sidir. Önümüzdeki partda inject ettiğimiz dll yi çağırmayı ve komut yollatmayı anlatıcam. Bunu bir isimde kaydedip include vererek kullanabilirsiniz.

Şunu söyleyebilirimki bu konu şuan gözümde baya uzun görünüyor. bikaç aşama sonra ollydbg makalesi vs hazırlamam gerekicek gibi. Neyse önümüzdeki günlerde görüşürüz. Çalışmalarınızda başarılar.

Tek isteğim şudurki bu script yanlış ellere geçmesin, lütfen heryerde paylaşmayın...
Func _InjectDll($hWnd, $dllpath)
   ;girdilerin doğru olup olmadığı kontrolü, hwnd varmı yoqmu vs...
   If $hWnd <= 0 Then
      SetError(-1)
      Return False
   ElseIf StringLen($dllpath) <= 4 Or StringRight($dllpath, 4) <> ".dll" Then
      SetError(-2)
      Return False
   EndIf

   Local $pid, $pHandle, $pLibRemote, $modHandle, $LoadLibraryA, $hThread

   ;inject için gereken dll.
   Local $kernel32 = DllOpen("kernel32.dll")

   ;hwndmizin process id sini bulma.
   $pid = DllCall("user32.dll", "int", "GetWindowThreadProcessId", "hwnd", $hWnd, "int_ptr", 0)
   If IsArray($pid) Then
      $pid = $pid[2]
   Else
      SetError(-3)
      Return False
   EndIf

   ;hwndnin memorysine erişim.
   $pHandle = DllCall($kernel32, "int", "OpenProcess", "int", 0x1F0FFF, "int", 0, "int", $pid)
   If IsArray($pHandle) And $pHandle[0] > 0 Then
      $pHandle = $pHandle[0]
   Else
      SetError(-4)
      Return False
   EndIf

   $pLibRemote = DllCall($kernel32, "int", "VirtualAllocEx", "int", $pHandle, "short", 0, "int", 0x1000, "int", 0x1000, "int", 4)
   If IsArray($pLibRemote) Then
      If $pLibRemote[0] > 0 Then
         ;konsol kontrolü, debug.
         ConsoleWrite("0x" & Hex($pLibRemote[0], 8) & @CR)
         $pLibRemote = $pLibRemote[0]
      Else
         SetError(-5)
         Return False
      EndIf
   Else
      SetError(-6)
      Return False
   EndIf

   For $i = 0 To StringLen($dllpath)
      $ret = DllCall("kernel32.dll", "int", "WriteProcessMemory", "int", $pHandle, "int", $pLibRemote + $i, "int_ptr", Asc(StringMid($dllpath, $i + 1, 1)), "int", 1, "int", 0)
      If IsArray($ret) Then
         If $ret[0] = 0 Then
            SetError(-7)
            Return False
         EndIf
      Else
         SetError(-8)
         Return False
      EndIf
   Next

   $modHandle = DllCall($kernel32, "long", "GetModuleHandle", "str", "kernel32.dll")
   If IsArray($modHandle) Then
      If $modHandle[0] > 0 Then
         $modHandle = $modHandle[0]
      Else
         SetError(-9)
         Return False
      EndIf
   Else
      SetError(-10)
      Return False
   EndIf

   $LoadLibraryA = DllCall($kernel32, "long", "GetProcAddress", "long", $modHandle, "str", "LoadLibraryA")
   If IsArray($LoadLibraryA) Then
      If $LoadLibraryA[0] > 0 Then
         $LoadLibraryA = $LoadLibraryA[0]
      Else
         SetError(-11)
         Return False
      EndIf
   Else
      SetError (-12)
      Return False
   EndIf

   $hThread = DllCall($kernel32, "int", "CreateRemoteThread", "int", $pHandle, "int", 0, "int", 0, "long", $LoadLibraryA, "long", $pLibRemote, "int", 0, "int", 0)
   If IsArray($hThread) Then
      ConsoleWrite($hThread[0] & @CR)
      If $hThread[0] > 0 Then
         $hThread = $hThread[0]
      Else
         SetError(-13)
         Return False
      EndIf
   Else
      SetError(-14)
      Return False
   EndIf

   DllCall($kernel32, "int", "VirtualFreeEx", "int", $pHandle, "int", $pLibRemote, "int", 0x1000, "int", 0x8000)
   DllCall($kernel32, "int", "CloseHandle", "int", $hThread)
   DllCall($kernel32, "int", "CloseHandle", "int", $pHandle)

   DllClose($kernel32)

   Return True
EndFunc

KeyBuffer ve Kullanımı

Merhaba ziyaretçiler, blog takipçisi arkadaşlar ve bu yazıyı okuyanlar :P
Google amcanın yönlendirmesiyle demiri attığınız bu yegane blog sayfasında uzun süredir yazmayı planladığım makaleyi yazmak 2 adet korku filmi izledikten sonra kaçan uykum sonrasında pazartesi sabaha karşı 4:30 sularına nasipmiş :D neyse uzatmayalım başlayalım.

Oyunlar bildiğimiz üzere klavyede yer alan tuşlarla oynanıyor :P otomasyon içinde bu tuşları kullanmanın en basit yöntem olduğunu biliyoruz. Bir oyunda tuşa basmak için birkaç yöntemimiz var. (veya tuşa bastığımızı bildirmek.)

1-> Elimizi kullanarak klavyeyle temasa geçmek. :P
2-> Sendkey (Directinput ile tuş simülasyonu yapmak / user32.dll saolsun.)
3-> PostMessage (Belirlenen pencere başlığına veya penceredeki herhangi bir kontrole string yollamak. ki bu string diyelimki 1 ise oyun bunu 1 e basıldı şeklindede algılayabiliyor.)
4-> Keyboard Buffer dan yararlanmak (Memory).

Konumuz bilindiği üzere 4. maddedir.

Memory herşeyin işlendiği yer olduğundan tuşa bastığımızda yine doğal olarak orada işlenecektir. Keyboard buffer tuşların basılmayı bekledikleri memorydeki adresleridir.
kullanıcı tuşa bastığında değer işlenir. Windows üzerinde çalışan her programın + windowsun hatta bios un bile bir keyboard bufferi vardır. Mantığını daha basit anlatmak gerekirse, ram de hertuşun bir adresi vardır diyelimki bu 1 den 10 a kadar olsun bu 1 ile 10 arasının tamamıda keyboard buffer oluyor efenim. Bu adresciklerin herbiri farklı bir tuş içindir mesela 1 a nın 2 b nin 3 e nin gibi. ve hepsinin değeri o anlık 0 dır taki siz o tuşa basana kadar. bastığınızda 1 olur.
Keylogger programları bu mantıkla çalışır. Çoğu windowsun keyboard bufferine yapışır ve malum değer 1 olduğunda tuşa bastığınızı tespit eder. Notepad ın bile bir keyboard bufferi vardır, yani notepad e bile MSN Koxp kurabilirsiniz bilmem anlatabildimmi :D

Oyunlardakininde pek bir farkı yok. Konuyu fazla uzatmayada hiç gerek yok. aslında çok basit. memory ile haşir neşir olduğunuzdan aslında çoktan bulmanız gerekirdi ama, zamanında benimde aklıma gelmemişti tuş gönderme yöntemlerini ararken rastladım ve araştırdım.

Yapmanız gereken şudur. KO ya girin. cheat engine herzamanki gibi bizimle olucak.
Namı değer MSN koxp :D açın msn i alın ontop mode üstte dursun z yi basılı bırakın. değişeni aratın. sora z yi serbest bırakın bir daha değişeni arayın. 1 veya birkaç değere indirene kadar devam. Doğru adresi bulduğunuzu anlamanın yöntemiyse şudur: Elinizde 1 kaç adres kaldı diyelim, z yi tekrar basılı bırakın msn yardımıyla ve cheat engineden 1 olan değerleri tek tek 0 yapın ve pencereyi aktif yapmadan, cheat engineyi hafif kaydırarak yukardan oyuna bakın bakalım z yi bırakmışmı. eğer z yi bırakırsa doğru adresdesiniz demektir. (oyuna dönmemeye dikkat edin yani sizin anlayacağınız dilden msn koxp u bozmadan bakın karakter z yi bırakmışmı diye.)

Adresi buldunuz, aynı şekilde pointerini ve offsetinide buldunuz olay tamam sayılır. diğer tuşları offsetde hafif oynamalar yaparak bulabilirsiniz tek tek uğraşmadan. +4 +4 atlayarak diğer tuşlara ulaşın. basit bi script yapın, sürekli o tuşu göndersin ama pencere bu kez aktif olsun rahatça bulun. Eğer diyorsanız ki tuşu göndermeyi söylemedinki nasıl göndericez :D söyliim.

Başından beri anlattığım üzere bu adres 0 dır ve siz tuşa bastığınızda 1 olur o halde mantığımızın yönlendirdiği üzere memory ile bu adrese önce 1 ve biraz bekleyerek 0 yazdırıcaz. bu biraz beklemeyi kafanızdan hesaplayabilirsiniz, yani sizin bir tuşa basmanız saniyenin kaçta kaçı zamanda olur ? ben saniyenin 10/2 si gibi bi zamanda basıyorum, kabiliyet :D, 200 sleep :P

Son olarak benim denemelerimden bahsediyim, benim son olarak geldiğim nokta:
Tuşları oyuna gönderiyorum, ve oyun aktifken çok güzel çalışıyor. en güzel özelliği aslında chat penceresiyle karışmıyor, yani rahatça yazabiliorsunuz. Sorun şuki, oyun aktif değilken skilleri göndermeyi bir türlü başaramadım, WOLF dışında :D nedendir bilmem wolfu pencere aktif değilkende atıyordu. Şu olabilir sizi yanıltmasın, script pencereniz her zaman üstte olsun, atak yaparken kendi pencerenize tıklayın, çok çok basitçe hiç uğraşmadan msn koxp yaparsınız.
ama diğer tuşlarınız basmaz. sadece z1. şansınız olursa benim gibi belki wolfuda atarsınız :D

Herşeye rağmen benim görüşümce bu yöntem sendkeyden çok daha iyi işliyor. en azından arka planda z1 atıyor bence bu bile yeterlidir :) ufak bi not daha ekliyim, bazı tuşlar çok geç bastığından ben 1 ve 0 yazdırmak yerine sürekli 1 yazdırıyordum. o zaman daha seri basıor ve arka plana geçmek istediğimde çok daha rahat geçiyordu. önerim sizde öyle yapın, sadece zamanlı skilleri 1-0 şeklinde yapın. Vaktim olsaydı keşke biraz daha zorlardım ama belki sizlerden birisi çok daha iyi çalıştırabilir ve bizimlede paylaşır. Ben en son skill vururken pencere aktifmi değilmi falan kontrolümü yapıyor acaba diye biraz kurcaladım cheat engine den. pencere aktif-değil şeklinde aratarak, birkaç sonuç buldum directx8 ile alakalı çıkıyor ama hepsi ve değeri değiştirince oyun donuyor, mantığını çözemedim :)

Neyse, takıldığınız bir yer olursa cevaplamaya çalışırım, kullanması ve geliştirmesi size kalmış anlaşılmıyacak biryer yoktur umarım, bir sonraki makalede görüşmek üzere :P
Bol şanslar.

Autoit Soru-Cevap Bölümü

Ufak bir yerde takıldınızmı ? buyrun sorun cevaplayalım :P Diğer topiclerden farklı sorular soran arkadaşlar oldu, o yuzden bunu açmaya karar verdim. Herhangi bir sorunuz varsa diğer topicler kullanılmasın, burdan sorabilirsiniz elimden geldiğince yardımcı olmaya çalışırım. Yalnız bir kaç şartım var :P

- Aşırı yüklenme olmasın lütfen :P, yani aynı post içinde şu nasıl yapılıyor, bu nasıl yapılıyor ve birde bu var o nasıl yapılıyor. şeklinde sormayın tek tek sorarsanız daha rahat yardımcı olurum.

- Bu bölümü ufak tefek sorular için kullanın. Orn olarak pencere boyutlarını nasıl değiştirebilirim, bir tuşu nasıl iptal edebilirim veya listviewdeki seçili satırı nasıl bulabilirim, internet explorerda bir nesneye nasıl yazı yazdırabilirim, buraya uygun sorulardır. Nasıl koxp yazabilirim ? nasıl bir hesap makinesi yazabilirim, nasıl bir trainer yazabilirim buraya uygun bir soru değildir. Bu tip soruları cevaplamıcam. Ama aynı soru trainer yazmanın mantığı nedir şeklinde sorulursa bunu cevaplarım, veya güzel bi soru gelirse o konuda bir makale hazırlarım.

- Eger sizden once 4-5 den fazla soru varsa lütfen ekleme yapmayın bana biraz zaman verin, her zaman bakamıyorum boş zamanımda anca girebiliyorum.

- Son olarakda kesinlikle bana hazır script gönderirmisin, bana şunu yazarmısın şeklinde sorular göndermeyin :(

- He birde :P adsız olarak gönderi yapanları sevmiyorum, bi arkadaşa bakıp çıkıcam gibi olmasın ltfn. :D Belirtmek istediğim birşey daha var azar azar öğrenebileceğiniz şekilde ip ucu veririm ona göre, he baktık olmuyor dahada detaya ineriz :P

hepsi bu kadar :)