Challenge 4

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

esistem yazdı:Gene ben :)
NtCreateSection olabilirmi ? LPC (Local Process Comm) da kullanıyormuş.
Gerçi bi örek kod buldum, C ile yazılmış, bana soket programlama gibi geldi ama yazmadan da edemedim :)
:bravo:

NtCreateSection API'si eğer LPC yada ALPC üzerinden 256 byte üzerinde veri aktaracak isek gerekli. Data'yı gönderen tarafta NtCreatesection ile bir section oluşturup; hedef tarafa section'umuz bu dediğimizde hedef taraf da ilgili section üzerinden datayı okuyabiliyor. Küçük datalarda section oluşturmaya gerek yok.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Challenge 4

Mesaj gönderen esistem »

Enteresan geldi bana. İşletim sisteminin process leri socket ler ile kontrol ettiğini bilmiyordum açıkçası.
Fakat ağır bir konu tuğrul bey, direk kernel seviyesine iniliyor sanırsam. Genelde rootkit, antivirüs vs. gibi şeyler çıktı karşıma.
En son esistem tarafından 02 Kas 2015 06:48 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

Ayrıca belirtmem gerekir ki; maalesef bu yapılar undocumented. Yani hemen hemen; hiç bir yerde adam akıllı bir kullanım örneği bulamayabilirsiniz ve M$ amcanın undocumented metodları kullanan programcılara yan gözle baktığını da unutmayalım :) Her ne kadar 20 senedir bu API'lere bir şey olmamış olsa da; belli mi olur biz kullanacağımız zaman tedavülden kalkabilir ;)

Tüm bunlara rağmen; bu API'leri öğrenip çok basit bir iletişim örneği yaptığınızda; işletim sisteminin derinliklerinde iletişimin nasıl sağlandığını kavramış olacaksınız. Öyle ki; bu iletişim mekanizması nerede ise tüm system processleri tarafından kullanıldığı gibi; OLE, COM, RPC, DCOM ve pek çok API'nin internal yapısında dahi kullanıyor ;)

Ne kadar önemli bir iletişim mekanizması olduğunu gözlemlemek için; sysinternals'ın Process Explorer aracını kullanabilir ve View\Show Lower Pane seçeneğinden alttaki paneli açabilirsiniz. Ardından da herhangi bir process'in üzerine tıklayabilir ve ALPC Port olup olmadığını kontrol edebilirsiniz. Hemen hemen her uygulamanın bir yada birden fazla ALPC port'a sahip olduğunu gözlemleyeceksiniz ;)
En son thelvaci tarafından 02 Kas 2015 06:52 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

esistem yazdı:Enteresan geldi bana. İşletim sisteminin process leri socket ler ile kontrol ettiğini bilmiyordum açıkçası.
Hayır bunlar socket değil; Port nesnesi bir kernel nesnesi, bildiğimiz socket port'u değil ;) En hızlı IPC iletişim mekanizması bu kernel tarafından kontrol edilen.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

Buna çok basit de olsa çalışan minicik bir örnek cevap olarak geldiğinde bir sonraki Challange'a geçeceğim; sanırım o biraz daha basit olacak ama sıklıkla multithreaded uygulamaların göçme senaryolarından birisini içerecek ;)
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Challenge 4

Mesaj gönderen esistem »

Araştırıyom hala ama birazdan çıkıcam tuğrul bey artık yarın vaktim olursa bakabilirim, teşekkürler verdiğiniz bilgiler için.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

Rica ederim, umarım faydalı olabilmişimdir.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

@G.Arkas yakaladım seni mesajını yazdın sonra da sildin değil mi :) Challange henüz kapanmadı, çok küçük, minicik bir örnek ister LPC ile ister ALPC ile(tercihen ALPC ile, çünkü hem yeni hem de asenkron) yapıldıktan sonra kapanacak ve yeni challange başlayacak ;) Ayrıca hooking olayına da gireriz ileride belki de code caveat injection'a da girebiliriz gerçi suistimale açık konular ama. Hele şu challange bir neticelensin de bir bakarız artık sonrakine ;)

Sen de kolları sıvayabilirsin; yukarıda ipucunu vermiştim oralardan faydalanarak küçük bir örnek bekliyorum.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Challenge 4

Mesaj gönderen esistem »

Yok arkadaş kaç saat oldu araştırıyorum bir tane eli yüzü düzgün döküman bulamadım :(
pes ediyorum ben :)
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Challenge 4

Mesaj gönderen G.Arkas »

thelvaci yazdı:@G.Arkas yakaladım seni mesajını yazdın sonra da sildin değil mi :) Challange henüz kapanmadı, çok küçük, minicik bir örnek ister LPC ile ister ALPC ile(tercihen ALPC ile, çünkü hem yeni hem de asenkron) yapıldıktan sonra kapanacak ve yeni challange başlayacak ;) Ayrıca hooking olayına da gireriz ileride belki de code caveat injection'a da girebiliriz gerçi suistimale açık konular ama. Hele şu challange bir neticelensin de bir bakarız artık sonrakine ;)

Sen de kolları sıvayabilirsin; yukarıda ipucunu vermiştim oralardan faydalanarak küçük bir örnek bekliyorum.
@thelvaci Ahahahaha! Süpersin abi ya. Wallahi yakalandım :) Küstüm size Challenge'den çok geç haberim oldu. Abim çok yoğunum bu aralar şirkette. @SimaWB abi de hemen bilmiş.:D Ben kullanmıştım. IPC'yi. Hook işlemleri için bu apilere kanca attıydım. İnşAllah eve gidince bir cevap yazabileceğim. (Erken çıkabilirsem işten :cry: ) @esistem Rootkit olayına değinmiş. Gerçekten suistimale çok açık konular. Bu yüzden bazı sorulara kasıtlı olarak cevap vermediğim oluyor. Geçmişim pek parlak değil bu konularda :oops: Küçük bir hazır örnek paylaşayım ben ama. Tam olarak örnek olmayabilir. Hazır koddur c++'dan port edilmiştir.

Kolay gelsin üstadlar.
Pipe Sample (Delphi).rar
(64.48 KiB) 200 kere indirildi
Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

esistem yazdı:Yok arkadaş kaç saat oldu araştırıyorum bir tane eli yüzü düzgün döküman bulamadım :(
pes ediyorum ben :)
Pes etmek yok, ben buraya yarın ipucu içeren bir şeyler göndereceğim ;)
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

G.Arkas yazdı:
thelvaci yazdı:@G.Arkas yakaladım seni mesajını yazdın sonra da sildin değil mi :) Challange henüz kapanmadı, çok küçük, minicik bir örnek ister LPC ile ister ALPC ile(tercihen ALPC ile, çünkü hem yeni hem de asenkron) yapıldıktan sonra kapanacak ve yeni challange başlayacak ;) Ayrıca hooking olayına da gireriz ileride belki de code caveat injection'a da girebiliriz gerçi suistimale açık konular ama. Hele şu challange bir neticelensin de bir bakarız artık sonrakine ;)

Sen de kolları sıvayabilirsin; yukarıda ipucunu vermiştim oralardan faydalanarak küçük bir örnek bekliyorum.
@thelvaci Ahahahaha! Süpersin abi ya. Wallahi yakalandım :) Küstüm size Challenge'den çok geç haberim oldu. Abim çok yoğunum bu aralar şirkette. @SimaWB abi de hemen bilmiş.:D Ben kullanmıştım. IPC'yi. Hook işlemleri için bu apilere kanca attıydım. İnşAllah eve gidince bir cevap yazabileceğim. (Erken çıkabilirsem işten :cry: ) @esistem Rootkit olayına değinmiş. Gerçekten suistimale çok açık konular. Bu yüzden bazı sorulara kasıtlı olarak cevap vermediğim oluyor. Geçmişim pek parlak değil bu konularda :oops: Küçük bir hazır örnek paylaşayım ben ama. Tam olarak örnek olmayabilir. Hazır koddur c++'dan port edilmiştir.

Kolay gelsin üstadlar.
Pipe Sample (Delphi).rar
Öncelikle cevap pipe değil, mesajları baştan aşağıya bir daha okumalısın bence Gürkancım ;) Sorunun cevabı pipe kadar kolay bir şey olsa idi buradaki canavar gibi arkadaşlar 2 sayfa mesaj yazılmasına müsaade etmezlerdi ;) Cevap işletim sisteminin derinliklerindeki bir iletişim mekanizması ile ilgili. Ne olduğundan bahsetmiştim bir kaç mesaj yukarıda(LPC, ALPC). Örnek uygulama yapmaktan kaçmak yok, bak David I. amca'da bizim challange'lardan esinlenmiş zaten, demek doğru yoldayız :)

Bu arada cidden çok basit de olsa örnek bir uygulama bekliyorum sizlerden. Bu örnek uygulamayı oluşturken neler kazanacaksınız ya da neleri yeniden hatırlayıp pekiştireceksiniz ya da nelerin öğrenilmesine vesile olacaksınız bir yazayım.

1- Delphi'de tanımları olmayan bir kaç API'yi kullanmanız gerekeceğinden bu API'lerin tanımlarını araştıracaksınız ve muhtemelen Jedi kodlarında göreceksiniz.(NtCreatePort ve avanesini Jedi'de; NtAlpcCreatePort ve avanesini Process Hacker'da bulacaksınız)
2- Göremeseniz de C/C++ tanımlarına erişeceksiniz ve bunları Delphi'ye çevirmeye çalışacaksınız.
3- Daha önce hiç kullanmadığınızı sandığım bir API grubunu öğrenmeye çalışırken işletim sisteminin derinliklerinde, kalbindeki en hızlı senkron/asenkron process'ler arası haberleşme kavramına aşina olacaksınız.
4- Ve en önemlisi; bu kavrama yabancı olup yolu buraya düşen birilerinden bir "Allah razı olsun" cevabı alacaksınız. Sırf bunun için bile değmez mi ;)

Bu arada örneği yapmaya başladım ama biraz da olsa kaynak lazım bana diyenler için yarın ufak tefek yol gösterici bir şeyler atarım.
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Challenge 4

Mesaj gönderen G.Arkas »

@thelvacı Hocam yaa ben sildiğim mesajı yayınlayayım demiştim. O sırada sen pipe cevabını vermemiştin. :) ( yada ben görmedim :))

Walla bu konuda hiç tecrübem olmadı harbiden sağlam challenge oldu. Bir kaynak buldum isteyen arkadaşlar inceleyebilir. Bende biraz bakınayım hocam müsadenle

Kolay gelsin.
Resim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Challenge 4

Mesaj gönderen thelvaci »

G.Arkas yazdı:@thelvacı Hocam yaa ben sildiğim mesajı yayınlayayım demiştim. O sırada sen pipe cevabını vermemiştin. :) ( yada ben görmedim :))

Walla bu konuda hiç tecrübem olmadı harbiden sağlam challenge oldu. Bir kaynak buldum isteyen arkadaşlar inceleyebilir. Bende biraz bakınayım hocam müsadenle

Kolay gelsin.
Tabii ki teşekkür ederim ilgine ve paylaşma, araştırma arzuna, ne kadar ilgi duyan olursa konuya, öğrenmeye ve öğretmeye; o kadar kolay aşılır yollar. Ama hernedense kendimi saymaz isem 3 arkadaş ilgileniyoruz konu ile(fikir belirten, araştıran anlamında), epey bir üyesi olan ama aktif olup olmadıklarını pek bilmediğim büyük bir forum için biraz garip bir durum tabii. Gerçi bir insan da yararlansa herşeye değer ama yardım eden el atan sayısı artsa idi daha memnun olurdum açıkçası.

Bundan sonraki challenge'ları daha kolay seçmeye çalışacağım, belki katılım artar. Bu arada senin nezdinde yeri gelmişken @esistem'e ve @SimaWB'ye de teşekkür ederim. Bana, sorduğum soruya kıymet verildiğini hissettiriyorsunuz.
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: Challenge 4

Mesaj gönderen esistem »

Günaydın,
@G.Arkas hoşgeldin :)
Dün öğleden sonra nerdeyse akşama kadar araştırdım 1 tane eli yüzü düzgün örnek bulamadım. Tuğrul beyin dediği gibi Jedi JWA kütüphanesinde apiler var, doğru şeyimi araştırdım bilmiyorum ama NtCreatePort, NtCreateProcess vs.vs apileri ile cebelleşip durdum. Fakat bir sonuca ulaşamadım :(
Cevapla