Ellerine sağlık çok yararlı olmuş Kibar ve sertimdir, çok iyi dans ve ısrar ederim..

Saol Firex CeLeKatireJeotuzbeş

abi harikasın :)) ANDY // Entelkoylu. Com Burası mezopotamya, küresel oyunun bumerang cehennemi. Tanrı bile dünya düzeni için peygamberlerini hep buraya gndermiş. Çünkü burası aslında yeryüzü cennetiymiş. Daha Fazla Bilgi İçin Profilimi İnceleyiniz...

Hepimiz Reverse Engineering ciyiz hepimizi FireX iz :P Varya bu konuda 1 numarasın akm :)

hocam süpersin bi ara hepsini okuycam boş bi zaman bulıyım:) eyw. saolasın tekrarr " ' "

Eyvallah hocam kontrol ettim tamam hepsi sağol.

//Merhaba arkadaşlar bir süredir bir proje üstünde çalıştığım için dküman yazamadım. Unpacking dkümanı yazacağımı nceden duyurmuştum. Bugün dkümanım tamamlandı. Diğer yazılarım yada bu yazı hakkında anlamadığınız yerler olursa sorunuz. Bu konuda destek veren arkadaşlara ve yazılarımı Tahribat dküman bankasına ekleyen Reneye teşekkür ederim.//Artık günümüzde programları korumak adına packer kullanmak zorunlu hale gelmiştir. Packerlar verileri şifreleme, self-modifying, pe headerda değişiklikler yapma, api redirect, stolen bytes ve crc check gibi yntemleri kullanırlar. Packerlar sadece tecrübesiz crackerlarda işe yararlar. Packerların memorye programın tamamını açmak zorunda olması, kullandıkları teknikler birbirine benzemektedir. Packerlar programı packledikten sonra tekrar dosyayı hafızada açmaya yarayacak kodların olduğu blümün başlangıcını entry point olarak belirlerler ve program akışı başlar. Dngüler, şifrelenen verilerin tekrar matematiksel işlemlerle eski haline getirilmesi, IAT'ın yaratılması ve memory'de harici bir program ile erişilip verilerde değişiklik yapılıp yapılmadığının kontrolü vs. Üstte anlattığım bazı kısımlar yabancı gelmiş olabilir. O yüzden geçmişte yazdığım dkümanlara ve PE Header hakkında bilgi sahibi olmanızı tavsiye ederim. Packlenmiş bir program debugger ile açtığımızda anlamsız stringler ve nitelik taşımayan kod toplulukları grürüz. Bunun sebebi packerın self modifying yntemiyle oraları matematiksel işlemlerden geçirerek eski haline sokacak olmasıdır. Self-modifying programın kendi üstünde değişiklikler yapmasıdır. Yani programı packlediğimiz zaman şifrelenir ve şifrelenmiş veriler kaydedilir bunun yanında şifrelenmiş verileri çzecek kodda dosyaya eklenir. Piyasada kullanılan aspack vb yaygın packerlar güvensizdir. Çünkü bunlara unpackerlar yazılmış ve haklarında birçok dküman bulunmaktadır. Tecrübesiz bir cracker bunları edinir ve unpack edip işine devam etmesi zor olmaz. Bunun için kaliteli fakat hakkında fazla bilgi bulamayacağınız packerları tercih etmelisiniz. Konumuz unpacking olduğu için reverse engineering'e karşı alınabilecek nlemler isimli dkümanımı referans gstererek buraları es geçiyorum. Packerlar kısmen birbirinden farklıdırlar. Çünkü programın işleyişine zarar vermemek için belirli bir çizgide devam etmek zorundadırlar. Bu yüzden packerlara karşı genel yntemler türemiştir. ncelikle packlenmiş bir dosya ile karşılaştığımızda ilk yapmamız gereken boş yere vakit kaybetmemek için bir unpacker aramaktır. Onuda bulamadıysanız o packerı nasıl unpack edebileceğimizle ilgili dküman, ollydbg scripti en kısa yoldan aradığımız kilit noktalara nasıl ulaşabiliriz vs. O da olmadıysa kendimizle baş başa kalırız. Bu gibi durumlarda ne yapmamızı bilmemiz gerek. Çünkü her zaman birilerine bağımlı kalmak lamerliktır. Bunu vakitten kazanmak amacıyla yapıyoruz sadece. Kendi yazdığım sadece formdan oluşan rnek programı aspack ve pe compact gibi nde gelen packerların şu anki son sürümleri (Aspack 2.12, PE Compact 2.78) ile packledim. Unpacking işlemini gerçekleştirirken aralarda genel olan farklı unpacking tekniklerinden de bahsedeceğim. Programları burdan indirebilirsinizGerekenlerOllydbgOllydbg dump plugin Import Reconstructor (IAT'ı düzeltmek için ihtiyacımız nemli araç) LordPEOpsiyonel Peid veya Rdg packer detector ncelikle ollydbgda programı açıyoruz ve gzatıyoruz. Resimde grdüğünüz üzere olly bizi dosyanın self-modifying, sıkıştırılmış olabileceği konusunda uyarıyor. Compressed code... yazan mesaj penceresinde noya basarak geçiyoruz. ncelikle yapmamız gereken orjinal giriş noktası OEP 'i bulmak. Burası asıl programın başladığı nokta. Packer çeşitli işlemlerden geçirerek programın tamamını memory'e açar. Açmak zorundadır. Hepsi aynısını yapar. Çeşitli dngüler, karşılaştırmalar, matematiksel işlemler yerine getirilir ve programın tamamı memorye açıldığında OEP'e zıplanır ve program normal akışına devam eder. Bizde OEP'in yerini bulursak oraya ulaştığımızda programın tamamı hafızaya açılmış olacak ve onu dump ettiğimizde memorydeki tüm o blgedeki verileri bir dosyaya kopyalamış olacağız ve dosya unpack olmuş olacak. Daha sonra packerın eklediği ekstra segmentleri vs temizleyebiliriz boyutu düşürmek için. Oraları artık işe yaramaz olacak çünkü. Programı dump edince tekrar eski giriş noktasına ayarlarlanacak ve artık packerın kodlarının bulunduğu blümler kullanılmayacak. Unpacking başlı başına bir uğraştır. O yüzden bazı packerlarda OEP'i bulmak zaman alabilir. ESP registerına hardware breakpoint koymak en yeni packerlarda bile OEP'i bulmakta işimize yaramaktadır. Aspackta buna karşı nlem alınmıştır. Bunun yanında ollydbg'ın debugging options blümünde sfx tabında yapılan değişikliklerde OEP bulunabilir. Fakat fazla işe yaradığı sylenemez. Diğer bir yntem program açıldığında pause edip stack penceresindeki herhangi bir konuma gidip sürekli program akışını takip ederek üst konumlara ulaşmak ve program akışının başladığı OEP'e kadar takip etmek. Yada programı başından itibaren izlemek ve ulaşmak. Bu da çok uzun zaman alacaktır. Bütün packerların kendine gre bir açığı vardır. Aspackte bunu kullanacağız. ESP'ye Hardware breakpoint koymak işimizi grmediği için. Aspackte OEP'e zıplamadan nceki kod bloğunu arayacatacağız. Bu bütün aspack kullanılmış programlarda aynıdır. Asppack'ın zaafıdır. Sağ tıklıyoruz ve search for->all sequences'a basıp push 0retyazıyoruz ve aratıyoruz. Karşımıza çıkan pencerede push 0'ı greceksiniz ona tıklayın ve o blgeye konumlanın. ret dnüş komutundan sonra OEP'e ulaşmış olacağız. Ret'e çift tıklayarak breakpoint koyuyoruz ve programı çalıştırıyoruz. Breakpoint program akışı durdurmuş olacak ve ret'in olduğu yerde kalacağız. F8 tuşuna basarak 1 satır devam ediyoruz ve OEP'e ulaşıyoruz. Bundan sonraki işlemleri yaparken OEP üzerinde olmamız nemli! Sağ tıklıyoruz ve çıkan menüde dump debugged process'e basıyoruz yada lordPE programından aktif çalışan programlar arasında bizim programımızı bulup sağ tıklayıp dump full diyoruz ve kaydediyoruz. Ollydbg eklentisi kullananlar için bir pencere gelecek. Rebuild importtaki tick'i kaldırıp diğerlerine dokunmadan dump ediyoruz. Api redirectiondan dolayı import adress tableda sorun yaşayacağız çünkü. Şimdi yapmamız gereken import reconstructer ile bu sorunları ortadan kaldırmak. Programı açıyoruz ve OEP blümüne bulduğumuz OEP'den base image değerini çıkartıyoruz. Imprec programında yazıyor. rneğin programımızda image base değeri 400000 ve OEP 44DCDC bundan image basse değerini çıkartıyoruz 44DCDC-400000=4DCDC oluyor. Bu değeri yazıyoruz ve IAT Autosearch'e basıyoruz. Doğru bulmuşsak değerler gelecek. Bulduktan sonra get imports tuşuna basıyoruz ve apiler geliyor. Ondan sonra show invalid tuşuna basarak sorunlu olan varmı diye kontrol ediyoruz ve karşımıza birkaç tane çıkacak aspack sayesinde.. Karşımıza ilk çıkana gzatalım. Sağ tıklayalım ve disassemble tuşuna basalım. Karşımıza assembly kodları gelecek burada yani geçerli. Eğer anlamsız veriler vs gelseydi sağ tıklatıp cut thunk deyip silecektik. Bu crackerı şaşırtmak amacıyla konulmuş birşeydir. Grdüğünüz üzere geçerli ve düzeltmemiz gerektiğinden bahsetmiştim rva adresi ile image base'i toplayıp (100 ise imagebase 400000 olduğu için 400100) ollydbg'da hex dump içerisinde sağ tıklayıp go to->expression blümüne bu adresi yazıp o blgeye gideceğiz. Imprecte gzüken ptr değerini burada little endian şekliyle tersten yazıldığını greceksiniz. Oraya gerçek api adresi daha sonradan yazıldığı için tespiti için resimde grüldüğü şekliyle hardware breakpoint kullanacağız ve üstteki menüden reset tuşuna basacağız. Programı çalıştırıyorz ve her oraya veri yazdığında program duraklayacak. İlk durakladığımız yerde işe yarar birşey yok. Fakat ikinci durakladığımız yerde aradığımız şeyi bulacağız. Evet aradığımız şey "GetVersion" apisi. Buraya çift tıklayarak breakpoint koyuyoruz. Şimdi imprec'i açıp bulunamayan apiye tıklayıp karşımıza gelen pencereden getversionu bulup seçiyoruz. Üstte breakpoint koymamızın sebebi IAT'ın orada bir dngü içerisinde oluşturulması ve o beklediğimiz yerde sağ üst kşeden hangi api olduğunu gzlemleyebilmemiz. Ollydbg'da çalıştır tuşuna basın ve programın her bastığınızda orada durakladığını ve sağ üst kşede api isimlerinin yazdığını greceksiniz. Imprecteki tabloya baktığınızda sırayla ilerlediğini greceksiniz. Burayı ve imprecteki listeyi takip etmeniz nemli rneğin GetStartupInfoA apisinden sonraki yer geçersizse sırada o gzükecek ve onu seçeceksiniz. Teker teker adresleri alınarak hardware breakpoint konularakta yapılabilir fakat 12 apide sorun olduğu için işimiz daha uzun sürer. Ben ilk apiyi rnek olarak gsterdim. Diğerlerini siz bulabilirsiniz. Ben kayıp apilerin isimlerini vereceğim kontrol etmeniz amacıyla.-Kernel32. dll GetVersion- Kernel32. dll GetProcAdress-Advapi32. dll RegQueryValueExA- Advapi32. dll RegOpenKeyExA- Advapi32. dll RegCloseKey - Advapi32. dll RegQueryValueExA - Advapi32. dll RegOpenKeyExA- Advapi32. dll RegCloseKey- Kernel32. dll GetVersionExA- Kernel32. dll GetVersion- Kernel32. dll GetProcAddress- Kernel32. dll CompareStringAGrdüğünüz üzere api redirectionda kullanılan apiler belirli. Genelde hep aynı şeyler karşımıza çıkar. Diğer packerlar içinde geçerlidir bu. Eğer tüm apiler geçerli hale geldiyse show invalide basınca karşımıza geçersiz adres çıkmıyorsa fix dump tuşuna basıyoruz ve daha nceden dump ettiğimiz dosyayı seçiyoruz. Eğer dump edince dump. exe ismini verdiysek impres dump_. exe isimli dosya oluşturacak. ve son olarak dosyamızı test ediyoruz. Eğer bir yerde hata yapmadıysak sorunsuz olacak çalışacaktır. Şimdi PECompact ile packlediğim programa gelelim. Bunda tek fark OEP'i ESP'ye hardware breakpoint koyarak bulabilmeniz. OEP'i bulma dışında yapacaklarınız tamamen aynı. Ollydbgda programı açıyoruz ve F8 ile ile ilerliyoruz. ESP değeri değiştiğinde espye sağ tıklayıp follow in dump diyoruz. Hex dumptaki değerleri seçip sağ tıklayıp breakpoint->hardware on access'i seçiyoruz ve breakpoint koyuyoruz. Bundan sonra reset tuşuna basıp programı çalıştırıyoruz. Her o blgeye erişimde program duraksayacak 3 defa tıkladıktan sonra karşımza jmp eax gibi şüpheli birşey gelecek. OEP'emi zıplıyor diye düşündükten. F8'e basıp sonra karşımıza OEP gelmiş olacak. Bundan sonrada dump edeceksiniz. Import adress table'ı imprec yardımıyla düzelteceksiniz. Aynı şeyleri tekrar ediyoruz. Packerlarda jmp ve ret olan blgelere dikkatle bakmamız gerekir. Oradan OEP'e zıplıyor olabilir. Diğer bir konu gsterdiğim packerlar api redirection kullanıyorlardı. Bazı kalitesiz packerlarda bunları yapmamıza gerek kalmaz. Sadece OEP'i bulup dump etmemiz yeterlidir. Eğer dump ettiysek fakat çalışmıyorsa fakat imprectede apilerle ilgili sorun gzükmüyorsa packerın PE headera zarar vermesinden dolayıdır. Buna çzüm olarak LordPE programında ki Rebuild PE butonuna basar ve PE Headerı yeniden oluşturursanız sorununuz ortadan kalkar. Bunlara rağmen sorun devam ediyorsa dosyanın orjinal ismi a. exe olması gerekiyorken sizi dump. exe yapmanızdanda kaynaklanabilir. Birçok ihtimal var. Bu konuda anlatacaklarım bu kadar. Bu yazı, rnek gsterilen programlar ve ekstra materyaller tamamen -anonimleştirildi- tarafından yazılmış ve Aspack ve PECompact rnek olarak gsterilmiştir. Kopyalayanlar emeğe saygı duyarlarsa sevinirim. Saygılarımla..-anonimleştirildi-

bi gece ilham yoluyla falan ğrensem de şunları anlayacak hale gelsem :) Bu niymiş la?

Hoca dkümanlara ekledim, Accayip yorgunum eksik bişiler varmı die bi kontrol edersen sevinirim.. Eline sağlık bu arada... Eklerken baya bi gz gezdiriom süper olmuş gene :) Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

hoca çok güzel dküman olmuş bende merak sardım biraz bu işlere okuyayım tekrar sağol 3 Hafta nce Sigara ldürüyor diye okudum, sigarayı bıraktım. 2 hafta nce Alkol ldürüyor diye okudum, Alkolü bıraktım. Geçenlerde Aşırı Seks ldürüyor diye okudum, okumayı bıraktım..

1o numara amk : ) . kaç sitede ble dkman var acaba : )

saaolasın firex kralsın :)

saolasın fireikis abi:) ellerine sağlık kim uraşır ble :) tekrar teşekkürler fireikis abi:D