merhaba beyler, kısa ve basit bir sorum var, ben explorer. exe nin grüntülediği/listelediği dosyaları kancalamak istiyorum hangi apiyi hook etmem gerekli, bilen var mı?

yok dayı est, ne haddime senin gibi bir insanı byle birşeyle yorayım, ben programın büyük kısmını yazdım, sadece hook edicek apiyi arıyordum sende apileri syledin olay tamam, bu dnemden geçti bir dahaki dnem kuruyorm makineye yazılımı :D

ncelikle şunu belirteyim, tam olarak hazır bir program vermeyeceğim, bu konular genelde iyi amaçlar için kullanılmadığından, hazır fonksiyonu kodunda kullanamayacak, veya bu rnekte gereken dll injection kodunu yazamayacak kişilerin eline hazır program vermek istemiyorum. Listelenen dosyaları elde etmenin yolları şunlardır 1) FindFirstFile ve FindNextFile ı hook edersin, bu fonksiyonu hook fonksiyonundan çağırdıktan sonra dosya adını alırsın. 2) Bu fonksiyonların kendi içinde çağırdığı native api olan NtQueryDirectoryFile apisini hook edersin, ntdll. dll içindeki native apileri hook etmenin yolu tamamen farklıdır ve sakıncaları olabilir bazı durumlarda ama kernele çıkan tek yol olduğu için avantajı da var. Bu iki yol user mode idi, bunları yapmak için her process'in kendi bellek alanına hook fonksiyonunu yazman lazım ve orda çalıştırman lazım ayrıca her process' in kernel32 si normalde bellekte tek kopyadır ama sen editlersen editlediğin yerin sana zel bir kopyası çıkarılır, diğer processler yine editlenmemiş olanı kullanır doğal olarak her process de hook u ayrıca yapman lazım. bunun da en basit yolu = dll injection. Gelelim kernel mode da ne yapabiliriz. 3) Aygıt sürücü yazarsın, kernel modda NtQueryDirectoryFile ın kernel kodunu hook edersin, kendi fonksiyonunu yazarsın oraya, tüm processleri ayrı ayrı hook etmekle uğraşmazsın, kernelde herşeyin tek kopyası vardır ve tüm kernel mod programlar ve kernel aynı bellek alanını kullanır. 4) FileSystem Filter Driver yazarsın, her dizin listeleme isteği geldiğinde nce listelenmiş dosya isimlerini sen ele geçirirsin ve user mod programına yollarsın. Aslında kernel mode da grdüğün gibi herşey daha kolaydır ancak kernelde kod yazmak da ayrıca deneyim isteyen birşey. Şimdi yukardaki adımları açıklıyorum. 1) Bir dll hazırlayacaksın, yüklenir yüklenmez FindFirstFile ve FindNextFile apilerini kernel32 den bulup oraya kendi fonksiyonunun adresini yazacaksın, kendi fonksiyonunda da yine bu apileri çağırıp sonuçlarını ele geçireceksin. Bunu yapan kendi fonksiyonum (j4x ile birlikte yazdık ancak şuan kullanmıyoruz) BOOL SetApiHook { HMODULE hHookDll = NULL; DWORD dwOldFlags = 0; LPVOID lpFunc = NULL; (JmpCode + 1)) = lpHookFunc; CopyMemory ; hHookDll = GetModuleHandle ; if lpFunc = GetProcAddress ; if PhkFunc->FuncPtr = lpFunc; if (! VirtualProtect CopyMemory ; CopyMemory ; return TRUE; } Fonksiyonu kullanman için gereken bilgiler şunlar; jmpcode bir global değişken, bunun içinde push senin_hook_fonksiyonun ret komutlarının hex kodları var, senin_hook_fonksiyonun yerine kendi adresini yazıyosun kodda. bu değer ney dersen char JmpCode = ; İkincisi HOOK yapısı, ziraa parametrelerden birisi PHOOK, o da şyle typedef struct _HOOK HOOK, PHOOK; #define TRAMPOLINE_SIZE 6 Bu bilgilerle bu fonksiyonu kendi kodunda çağırabilmen lazım. 2) Native Api hook biraz daha farklı, ntdll. dll içinde 15 baytlık kodlar vardır her fonksiyon için, bu kodlar sadece eax e uygun fonksiyon no koyar ve ordan sysenter ile kernel mode geçer. İşte biz bu 15 baytı çalıyoruz yerine kendi kodumuzu koyuyoruz, o kod ile hook fonksiyonuna atlıyor, iş bittikten sonra bu 15 baytı yine çalıştırıyoruz. bunu yapan fonksiyon; BOOL SetNativeApiHook { HMODULE hNtdll = NULL; DWORD dwOldFlags = 0; LPVOID lpFunc = NULL; (JmpCode + 1)) = lpHookFunc; hNtdll = GetModuleHandle ; if lpFunc = GetProcAddress ; if if (! VirtualProtect if (! VirtualProtect CopyMemory ; CopyMemory ; return TRUE; } Bu fonksiyonu çağırman için gereken yukardakiler dışında şu; #define NATIVE_CALL_STUB_SIZE 16 char CallStubName ; Artık bunu da kullanabilmen gerek. CallStubName her fonksiyon için ayrı olmalı, çünkü ntdll. dll den çaldığın baytlar burda, fonksiyon ismiyle ilişkili birşey yazman daha iyi. 3) SSDT Hook için yıllar nce Mark Russinovich'in filemon için yazdığı bir dizi hook makrosu vardır, ben dahil herkes bunları kullanır ancak mantığını anladıktan sonra kendin de yazarsın, bu konuyu uzun uzadıya açıklasam da büyük ihtimal kimse birşey anlamayacak, makroları veriyorum. #define HOOK_SYSCALL \ _Orig = InterlockedExchange( &MappedSystemCallTable , _Hook) #define UNHOOK_SYSCALL \ InterlockedExchange( &MappedSystemCallTable , _Hook) #define SYSTEMSERVICE KeServiceDescriptorTable. ServiceTableBase #define SYSCALL_INDEX _Function+1) HOOK_SYSCALL ; şeklinde çağıracaksın 4) Filesystem filter driver ın aslında api hook ile pek ilgisi yok ama güzel bir yntem olduğu için kısaca değineyim. nce bir filter driver yazıp ntfs. sys nin üstüne yerleştireceksin, bylece bu driver a giden tüm IRP paketleri nce sana uğrayacak. Gelen IRP nin major fonksiyonu IRP_MJ_DIRECTORY_CONTROL ise, minor fonksiyonu da IRP_MN_QUERY_DIRECTORY ise, demekki bu driver a gelen IRP paketinin amacı belli bir dizindeki dosyaları listelemek. Biz hemen bir callback fonksiyon set ediyoruz IoSetCompletionRoutine fonksiyonuyla, listeleme işlemi bitince kernel tarafından bizim fonksiyonumuz çağırılıyor. bu fonksiyonda IRP->UserBuffer da dosya ve dizin isimleri var, alıp user mode programımıza yollayabiliriz. Kernel mod olanlar büyük ihtimal işine yaramaz ancak user mode olan 2 hook yntemi çok sağlamdır. Ayrıca inline hook dışında bir de import table hook var, ben pek sevmiyorum ama aynı işlemleri onunla da yaparsın user mode da.

tugberk, ncelikle sen adamsın :D, uğraşıp detaylı bir anlatım yapmışsın çok teşekkürler ilginden dolayı, byle bir açıklamaya karşın bende uzun birşeyler yazmak isterim, bari neden byle birşey istediğimi yazayım : ) bizim okulda optik okuyuclarla yazılıları okuyorlar(lise 4 ğrencisiyim), ben de bir program yazdıydım sistemde arada bir arama yapıp okunan dosyalarda adımı numaramı grünce cevap isminde kağıdı bulup zınk 70-100 arası bir cevap anahtarı yapışytırıyordu, ama arama işlemi hem sistmei kasıyor hemde hocalar işini seri hallederse yazılım birşey yapamıyordu bende dll enjekte yapayım dedim hem cpp ile uğraşayım az , nce yazılmın writefile apisini hook edeyim dedim sonra bu yazılımın nasıl tepki vereceğini bilmiyorum dedim, ayrıca yazılım ve optik okuyucu bende olmadığından direk deneyebilme imkanım da yok çalıştırıp bırakıcam yazılımı, işte dedim bunu bir şekilde herifler sisteme geçicekler o sırada explorer. exe bunu grüntülecek ben burdan dosyayı çekerim dedim, win apilerine de o kadar aşina biri değilim foruma sorayım dedim, eyv çok yardımcı oldunuz tekrardan teşekkürler : )

kimse mi bilmez :D

: yok dayı est, ne haddime senin gibi bir insanı byle birşeyle yorayım, ben programın büyük kısmını yazdım, sadece hook edicek apiyi arıyordum sende apileri syledin olay tamam, bu dnemden geçti bir dahaki dnem kuruyorm makineye yazılımı :D ahah :) helal bu arada lise 4 e gidiyorsun bunları yazabiliyorsun.

Yetkili müşteri temsilcimizi ynlendirdim Şimdi sizinle ilgileniyor efendim. Tahmini geri dnüş süresi, eleman buradan cıkacak eve gidecek olydebugdan bakıp cevap verecek 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 :)

Bu arada sorun lise 4 e gidip bunları yazması değil lise 4 de gzünün bu derece acık olması. Tebrik ediyorum hocam, üniversiteye gir bilgisayarı geliştir işe alalım seninde... 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 :)

Müşteri Memnuniyeti Anketi : Efenim ncelikme müşteri memnuniyeti anketimize katıldığınız için teşekkür ederiz. Müşteri temsilcimizi geliştirmemiz için lütfen aşağıdaki soruları cevaplayın 1 rezil 5 mükemmel 1. Temsilcinin Performansı? : 2. Temsilcinin Hızı? : 3. Temsilcinin Efendiliği? : 4. Temsilcinin Bilgisi? : Sleyin maaşını ona gre verelim... 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 :)

buyuk harf yasak ama yazicam : NESSAJ / TUGBERK DE TBT ye Yakisir Muridler.. :) 🏴Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...

sen programın tam olarak ne yapmasını istediğini pm ile açıkla , boş bir zamanımda yazarım.