Delphi Can

Orjinalini görmek için tıklayınız: Puanların Önemi Hakkında...
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2 3
Arkadaşlar, malumunuz olduğu üzere sitede bir puanlama sistemi bulunuyor. Bu sistemde, insanların yaptığı paylaşımlar, yardımseverliği gibi hususlar tüm üye arkadaşlarımız tarafından değerlendirmeye tabii tutulabiliyor. Bir paylaşıma, yoruma -4..+4 puan aralıklarında değerlendirme yapabiliyorsunuz. Elbette puan sistemi ile elde edilen kademeler sizlerin gerçek kıymetinizi asla yansıtamaz ancak ne kadar yardımsever olduğunuzu, konu hakkında bildiklerinizi nasıl aksettirebildiğinizi az da olsa yansıtabiliyor.

 Bu bağlamda; mesajını, yorumunu beğendiğiniz arkadaşlarımıza yorum olarak teşekkür eder iken, kendisine puan katkısı yapmaktan da imtina etmeyin lütfen. Şu anda beklettiğimiz ve belirli bir üye sayısının ve seviyenin üstüne eriştiğimizde hayata geçireceğimiz "Düşük Seviyeli Programlama" bölümüne giriş için o puanlara ihtiyaç olacak. 2501+ puana sahip olan arkadaşların erişim sağlayabilecekleri ilgili bölümde paylaşılması planlananlar arasında; veri tipleri ve hafızada kapladığı alanlar, pointer'lar ve aritmetiği, veri yapıları(sort, search, linked list, double linked list, stack, heap vb.), Windows API'ler, Undocumented(Dökümante edilmemiş) API'ler, İşletim sistemi çalışma mekanizmaları, Process'ler, Thread'ler, senkronizasyon mekanizmaları, PE/PE+ dosya formatı, Code Injection ve bölüme giriş yetkisine sahip olan arkadaşların önerdikleri(düşük seviyeli olması koşulu ile) konular üzerinde tartışmalar, kod örnekleri ve makaleler olması düşünülüyor.

 Tabii bu işin yapılabilmesi için, 2501+ puan üzeri üye sayımızın belirli bir seviye üstüne erişmesi gerekiyor. Ayrıca, ilgili bölüm altında tartışılan bir konuya ait çözümlerin herhangi bir ya da birden fazla dil ile yazılması istenilebileceği(Delphi, C/C++, Java, C#, Assembly) için, bu dillere hakim arkadaşlarınız/tanıdıklarınız var ise onları da aramıza davet edebilirsiniz.

Bu vesile ile beğendiğiniz yada beğenmediğiniz hususlar konusunda puan verme hassasiyetini gösterebilirsiniz istediğimiz çalışmaları daha hızlı yapabiliriz.

Saygılarımla
Hocam bu arada konuların sağ üst köşesinde yer alan "Konuyu Oyla" ile konulara da bir 1-5 arasında bir değer biçmemizde ve bu durumu alışkanlık haline getirmemizde fayda var. Konunun yıldız sayısı, önemini ortaya koyacaktır.
(03-09-2016, Saat: 12:15)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Hocam bu arada konuların sağ üst köşesinde yer alan "Konuyu Oyla" ile konulara da bir 1-5 arasında bir değer biçmemizde ve bu durumu alışkanlık haline getirmemizde fayda var. Konunun yıldız sayısı, önemini ortaya koyacaktır.

Teşekkür ederim. Benim de dikkat etmediğim bir özellik idi.
(02-09-2016, Saat: 23:15)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: [ -> ]PE/PE+ dosya formatı

Portable Executable Dosya Formatı  Buraya bırakıp, okumaya gidiyorum.
(15-10-2016, Saat: 11:55)kimimben Adlı Kullanıcıdan Alıntı: [ -> ]
(02-09-2016, Saat: 23:15)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: [ -> ]PE/PE+ dosya formatı

Portable Executable Dosya Formatı  Buraya bırakıp, okumaya gidiyorum.

Öğrendiklerinizi paylaşmanız ümidi ile, teşekkürler.
Şuan için PE/PE+ dosya formatının tamamının, şahsım adına idrak etmemin mümkün olmadığını düşünüyorum.
Genel olarak PE/PE+ dosya formatı için, çalıştırılabilir bir dosyanın anatomisi şeklinde ifade etsek sanırım yanlış olmaz.

Makalede dumpbin.exe ile EXE dosya içersinde ki detaylar incelenmiş. 
Bunun dışında  NikPEViewer ve ollydbg kullanarak da PE bilgilerini görmemiz mümkün. Başka araçlarda muhtemelen vardır.
ollydbg programı ile EXE dosyayı açtıktan sonra, gelen "Memory Map" penceresi içersinde ki bilgiler tam olarak PE/PE+ bilgilerini ifade ediyor sanırım.


Makalede dikkatimi çeken diğer bir nokta;

Alıntı:Örnek programımız PE dosyasını Windows'un bellek tabanlı dosya tekniği ile açmaktadır. Yani tüm PE imajı belleğe aktarılıp sanki dosya belli bir adresten itibaren bellekte bulunuyormuş gibi ele alınmıştır.


HANDLE g_hFile;
HANDLE g_hFileMapping;
LPVOID g_pImageAddr;
/* ... */

/* Function Definitions */

int _tmain(int argc, TCHAR *argv[])
{
   if (argc != 2) 
       ExitUsr(_TEXT("Wrong number of arguments!"), EXIT_SUCCESS);

   g_hFile = CreateFile(
       argv[1], 
       GENERIC_READ, 
       FILE_SHARE_READ, 
       NULL,
       OPEN_EXISTING, 
       OPEN_EXISTING, 
       NULL); 
     if (g_hFile == INVALID_HANDLE_VALUE)
           ExitSys(TEXT("CreateFile"), EXIT_FAILURE);
   
     g_hFileMapping = CreateFileMapping(
         g_hFile, 
         NULL, 
         PAGE_READONLY,
         0, 
         0, 
         NULL);
     if (g_hFileMapping == NULL) 
         ExitSys(TEXT("CreateFileMapping"), EXIT_FAILURE);
   
     g_pImageAddr = MapViewOfFile(
         g_hFileMapping, 
         FILE_MAP_READ, 
         0, 
         0, 
         0);
     if (g_pImageAddr == NULL) 
         ExitSys(TEXT("MapViewOfFile"), EXIT_FAILURE);
       
     /* .... */
}



Alıntı:Gördüğünüz gibi komut satırı argümanıyla alınan yol ifadesine ilişkin dosya CreateFile fonksiyonuyla açılmış ve daha sonra CreateFileMapping ve MapViewOfFile fonksiyonlarıyla bellek tabanlı hale getirilmiştir. Dosyanın belleğe yüklenme adresi g_pImageAddr isimli global göstericide saklanmıştır.


Herhangi çalıştırılabilir bir dosyaya, çift tıkladığımızda veya komut satırından ismini yazıp enter'a bastığımızda teorik olarak yukarıda ki API'lerin çağırımı mı gerçekleşiyor acaba Huh

Ayrıca g_pImageAddr nerde işimize yarayabilir onu düşünüyorum.
Sanıyorum PE/PE+ dosya formatını daha çok iğne yapmak ve organ nakli gibi durumlarda kullanacağız.
Biraz daha araştırayım...
PE Dosya Formatına Dalış isminde güzel ve şahsım adına biraz daha anlaşılır bir makale daha buldum.

Anladığım kadarını aktarmaya çalışmaya çalışayım.

Yukarıda CreateFile, CreateFileMapping, MapViewFile API'lerini içeren kod bloğu aslında basit anlamda bir PE Loader veya PE yükleyici olarak ifade ediliyor.
Bir başka PE Loader örneğini  şuradan görebiliriz.

Makalede bahsedilen Bölüm başlıkları (Section Headers) , OllyDbg kullanarak bir EXE dosya açıldığında "Memory Map" penceresinde PE section bilgileri görülebilmekte.
olly.png

Yukarıda ki ekran görüntüsüne göre;

.text bölümünde çalıştırılabilir makina kodlarının yer aldığını, .data ve .bss bölümlerinde değer atanma durumuna göre global/static değişkenkerin yer aldığını anlıyorum.

IAT
(Import Adress Table) ve EAT (Export Address Table) isminde, fonksiyon adreslerinin tutulduğu iki kavram bulunmaktaymış.
EAT da bulunan fonksiyon adresleri, PE Load işlemi esnasında IAT'a aktarılmaktaymış.

IAT ile ifade edilen bölüm, yukarıda ki ekran görüntüsünde .idata kısmına karşılık geldiğini anlıyorum.
EAT ile ifade edilen bölüme karşılık gelen, .edata bölümünü göremedim.


Makalenin "Export Address Table - EAT" kısmında belirtilen cümlesinden;
Alıntı:Genelde DLL dosyalarında dışa aktarılan fonksiyon olduğundan Export tablolarının birinci dereceden ilgisi olan dosyalar DLL dosyaları diyebilirim sanırım.
Tam emin olmamakla birlikte, delphi DLL'de ki export fonksiyon; komutun bu EAT ile ilgisi olabilir.
Yani export ile belirtilen fonksiyonları, EAT'a ekle gibi... 

Şimdilik kabaca anladıklarım bu kadar...
Üye sayımız ve paylaşımlarımız paralel biçimde artmaya başladı; bu vesile ile faydalı ya da faydasız gördüğünüz mesajları puanlayarak arkadaşlarınıza yardımcı olmanızı, onları teşvik etmenizi bir kere daha anımsatmak istedim.

Şimdiden teşekkür ederim.
kimimben; konu başlığını fena halde dağıtmışsın. Biran link yanlış açıldı zannettim Smile
Sayfalar: 1 2 3