Re[10]: Чтоже такое dot.net??
От: OldDino Россия  
Дата: 07.07.04 13:30
Оценка: :)
Здравствуйте, Edvard Grieg, Вы писали:

OD>>Да, разумеется, можно написать и на Delphi 3.0. А, скажем, метаданные будут OD>сгенерированы Святым Духом.


EG>А вчем проблема их отдельно прилинковать?

EG>Или этот кусочек XML кода не прилинкуется к PEEXE обычному?

Н-да... Значит, по-Вашему, метаданные — это XML? Тяжело... А чем они линкуются, не подскажете?

EG>Кстати скринсейвер longhorn-a если кто посмотрит самый обычный PEEXE файл обычнее некуда работает под W2K без всякого NET, но тем неменее meta-данные содержит


Знаете, Эдвард Григ, здесь Вы просто несёте чушь. Откровенную чушь. После таких заявлений можно сказать, что и Windows-программы под DOS'ом без Windows идут...
Re[8]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 13:36
Оценка:
RB>Да никто не мешает. Более того, все так и происходит.

RB>PE-шник, генерируемый в ".net" — это самый обычный PE-шник, у которого вначале RB>идет загрузка mscoree и передача управления в эту dll. А та уже подгружает RB>ресурсы из PE-шника, читает байт-код и пр. хрень.


Но это я и так понял:
А гдеж тогда храниться SEH,PEB исполнимого файла .NET?
У обычного PE -процесса fs:[xxx] , там и пеб и цех.
Загрузчик все будет интерпретировать как и раньше?
И еще а как заполняется для .NET PEEXE Import Adress Table загрузчиком или
она уже будет заполнена? Или и так и эдак возможно как и раньше?
Re[10]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 13:40
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>Здравствуйте, Edvard Grieg, Вы писали:


EG>>Именно так и есть,т.е. .NET я не устанавливал я выше об этом писал.

SAV>тогда все ясно
EG>>Просто негде мне его взять,
SAV>.NET Framework 1.1
SAV>.NET Framework 1.1 SDK
SAV>а что бы не гадать на кофеной гуще как это все работает, можно слить еще и Rotor — реализация .NET от микросовта в исходниках, в общем скачай будет интересно.
SAV>А что бы посмотреть на другие реализации можно зайти на проект Mono, тоже в исходниках. Кстати у них недавно первый релиз был
EG>>Но мне кажется что основа всего этого безобразия mscoree.dll.
SAV>основа то основа, но несколько низкоуровневая
EG>>Longhorn -поставить негде чтобы расковырять.
SAV>для НЕТа его ставить совсем необязательно. Рог он где-то там за горизонтом, а дотНЕТ уже здесь с нами

Большое спасибо
Попробую у когонибудь с хорошим каналом это вытянуть
Re[10]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 13:45
Оценка:
OD>Кроме того, обратите внимание, что Вы постоянно употребляешь слова "не OD>понимаю", "кажется" и т.д. Так вот — судя по Вашим сообщениям, Вы действительно OD>не понимаете (даже приблизительно), о чём идёт речь, и Вам многое кажется. OD>Наверное, неплохо было бы и "поиграться" с продуктом, а потом делать какие-то OD>выводы (мол, "безобразие"... ). Получается как в известной фразе: "Я Солженицына OD>не читал, но знаю, что он — подлец".
Дык я сюда и зашел чтобы поспрашивать насчет всего этого "безобразия" и понять как это устроено хоть приблизительно. Если к примеру комуто попадется ntoskrnl.exe и hal.dll я предполагаю что этот кто-то сможет сделать выводы относительно win2k в целом,и эти выводы небудут той самой "волосатой змеей".
Что меня интересует:
1) Исчезнут ли win32 api с появлением .net.
2) Изменится ли объкт ядра "process"
3) что станет с system и idle
4) Зачем .NET испозьзует win32 , а не к примеру Native API.
Ответ на эти вопросы для меня многое бы прояснил.
Re[11]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 13:51
Оценка:
Здравствуйте, OldDino, Вы писали:

OD>Здравствуйте, Edvard Grieg, Вы писали:


OD>>>Да, разумеется, можно написать и на Delphi 3.0. А, скажем, метаданные будут OD>сгенерированы Святым Духом.


EG>>А вчем проблема их отдельно прилинковать?

EG>>Или этот кусочек XML кода не прилинкуется к PEEXE обычному?

OD>Н-да... Значит, по-Вашему, метаданные — это XML? Тяжело... А чем они линкуются, не подскажете?

Линкер можно и самому написать, впрочем и собрать PEEXE.

EG>>Кстати скринсейвер longhorn-a если кто посмотрит самый обычный PEEXE файл обычнее некуда работает под W2K без всякого NET, но тем неменее meta-данные содержит


OD>Знаете, Эдвард Григ, здесь Вы просто несёте чушь. Откровенную чушь. После таких заявлений можно сказать, что и Windows-программы под DOS'ом без Windows идут...


Это было не заявление а вопрос вообщето.
я повторюсь что не експерт в .net просто зашел поспрошать.
Но из под dosa как впрочем из под чего угодно можно скомпилировать PEEXE Win32 .
я не заявлял что без .net приложения .net запустяться, я предполагаю что можно создать приложение
на основе обычного PEEXE которое сможет полноценно работать с .NET.
Re[11]: Чтоже такое dot.net??
От: OldDino Россия  
Дата: 07.07.04 13:52
Оценка: 57 (2)
Здравствуйте, Edvard Grieg, Вы писали:

EG>Что меня интересует:

EG>1) Исчезнут ли win32 api с появлением .net.
EG>2) Изменится ли объкт ядра "process"
EG>3) что станет с system и idle
EG>4) Зачем .NET испозьзует win32 , а не к примеру Native API.
EG>Ответ на эти вопросы для меня многое бы прояснил.

Думаю, Вы делаете ту же ошибку, какую когда-то сделал я, а именно — роетесь в мелочах, не понимая даже предназначения .NET'а. Другими словами, за деревьями не видите леса. Поэтому позволю себе дать Вам совет — постарайтесь всё же понять идеологию .NET в целом. Просто почувствовать её. Многое, наверное, станет на свои места.
Re[12]: Чтоже такое dot.net??
От: OldDino Россия  
Дата: 07.07.04 13:54
Оценка:
Здравствуйте, Edvard Grieg, Вы писали:


OD>>>>Да, разумеется, можно написать и на Delphi 3.0. А, скажем, метаданные будут OD>сгенерированы Святым Духом.


EG>>>А вчем проблема их отдельно прилинковать?

EG>>>Или этот кусочек XML кода не прилинкуется к PEEXE обычному?

OD>>Н-да... Значит, по-Вашему, метаданные — это XML? Тяжело... А чем они линкуются, не подскажете?

EG>Линкер можно и самому написать, впрочем и собрать PEEXE.

Всё. Наповал! Замолкаю.
Re[11]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:03
Оценка:
Здравствуйте, OldDino, Вы писали:


OD>Знаете, Эдвард Григ, здесь Вы просто несёте чушь. Откровенную чушь. После таких заявлений можно сказать, что и Windows-программы под DOS'ом без Windows идут...


Удивительно если бы я эту чушь не нес
Посмотрите название темы, я кажется спрашивал что такое dot.net это значит что я имею весьма слабое об этом представление.
Честно говоря неожидал такой агрессии в свой адресс.

▓    Longhorn.scr  ↓FRO   PE.01030B29   0 --------   194048 ║ Hiew 6.40 (c)SEN
▓                                                                               
▓                        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
▓<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
▓<assemblyIdentity
▓    name="Microsoft.Windows.Shell.ScreenSavers"
▓    processorArchitecture="x86"
▓    version="1.0.0.0"
▓    type="win32"/>
▓<description>ScreenSaver</description>
▓<dependency>
▓    <dependentAssembly>
▓        <assemblyIdentity
▓            type="win32"
▓            name="Microsoft.Windows.Common-Controls"
▓            version="6.0.0.0"
▓            processorArchitecture="x86"
▓            publicKeyToken="6595b64144ccf1df"
▓            language="*"
▓        />
▓    </dependentAssembly>
▓</dependency>
▓</assembly>


Случаем это не те самые метаданные?
Re[12]: Чтоже такое dot.net??
От: OldDino Россия  
Дата: 07.07.04 14:08
Оценка: 3 (1)
Здравствуйте, Edvard Grieg, Вы писали:


EG>[CODE]

EG>▓ Longhorn.scr ↓FRO PE.01030B29 0 -------- 194048 ║ Hiew 6.40 (c)SEN
EG>▓                                                                               
EG>▓                       <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
EG>▓<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
EG>▓<assemblyIdentity
EG>▓ name="Microsoft.Windows.Shell.ScreenSavers"
EG>▓ processorArchitecture="x86"
EG>▓ version="1.0.0.0"
EG>▓ type="win32"/>
EG>▓<description>ScreenSaver</description>
EG>▓<dependency>
EG>▓ <dependentAssembly>
EG>▓ <assemblyIdentity
EG>▓ type="win32"
EG>▓ name="Microsoft.Windows.Common-Controls"
EG>▓ version="6.0.0.0"
EG>▓ processorArchitecture="x86"
EG>▓ publicKeyToken="6595b64144ccf1df"
EG>▓ language="*"
EG>▓ />
EG>▓ </dependentAssembly>
EG>▓</dependency>
EG>▓</assembly>

EG>Случаем это не те самые метаданные?


Что сказать... http://www.rsdn.ru/article/dotnet/phmetadata.xml
Автор(ы): Павел Румянцев
Дата: 06.12.2002
В статье описываются таблицы метаданных, правила вычисления их размеров, показывается, каким образом от таблиц можно перейти к логической организации данных. В частности, в статье показано, каким образом можно получить доступ к управляемому коду, что невозможно при использовании Reflection.
— может, это поможет...
Re[13]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:16
Оценка:
OD>Всё. Наповал! Замолкаю.
я конечно понимаю что новички всегда всех смешат но
Описать секции кода, данных и т.д. соответствующими структурами,
Описать Optional Header со всеми причиндалами.
Заполнить LookUp Table, и т.д.
вот пример того как можно прочитать PEEXE структуры,
 
 ypedef struct _IMPORT_LOOKUP
{
 WORD HINT;
 char HintName[MAX_PATH];

}IMPORT_LOOKUP, *PIMPORTLOOKUP;

typedef struct _DOS_HEADER {  // DOS .EXE &ccedil;&agrave;&atilde;&icirc;&euml;&icirc;&acirc;&icirc;&ecirc;
    WORD e_magic;         // &igrave;&agrave;&atilde;&egrave;&divide;&aring;&ntilde;&ecirc;&icirc;&aring; &divide;&egrave;&ntilde;&euml;&icirc;
    WORD e_cblp;          // &ecirc;&icirc;&euml;&egrave;&divide;&aring;&ntilde;&ograve;&acirc;&icirc; &aacute;&agrave;&eacute;&ograve; &iacute;&agrave; &iuml;&icirc;&ntilde;&euml;&aring;&auml;&iacute;&aring;&eacute; &ntilde;&ograve;&eth;&agrave;&iacute;&egrave;&ouml;&aring; &ocirc;&agrave;&eacute;&euml;&agrave;
    WORD e_cp;            // &ecirc;&icirc;&euml;&egrave;&divide;&aring;&ntilde;&ograve;&acirc;&icirc; &ntilde;&ograve;&eth;&agrave;&iacute;&egrave;&ouml; &acirc; &ocirc;&agrave;&eacute;&euml;&aring;
    WORD e_crlc;          // Relocations
    WORD e_cparhdr;       // &eth;&agrave;&ccedil;&igrave;&aring;&eth; &ccedil;&agrave;&atilde;&icirc;&euml;&icirc;&acirc;&ecirc;&agrave; &acirc; &iuml;&agrave;&eth;&agrave;&atilde;&eth;&agrave;&ocirc;&agrave;&otilde;
    WORD e_minalloc;      // Minimum extra paragraphs needed
    WORD e_maxalloc;      // Maximum extra paragraphs needed
    WORD e_ss;            // &iacute;&agrave;&divide;&agrave;&euml;&uuml;&iacute;&icirc;&aring; ( &icirc;&ograve;&iacute;&icirc;&ntilde;&egrave;&ograve;&aring;&euml;&uuml;&iacute;&icirc;&aring; ) &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &eth;&aring;&atilde;&egrave;&ntilde;&ograve;&eth;&agrave; SS
    WORD e_sp;            // &iacute;&agrave;&divide;&agrave;&euml;&uuml;&iacute;&icirc;&aring; &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &eth;&aring;&atilde;&egrave;&ntilde;&ograve;&eth;&agrave; SP
    WORD e_csum;          // &ecirc;&icirc;&iacute;&ograve;&eth;&icirc;&euml;&uuml;&iacute;&agrave;&yuml; &ntilde;&oacute;&igrave;&igrave;&agrave;
    WORD e_ip;            // &iacute;&agrave;&divide;&agrave;&euml;&uuml;&iacute;&icirc;&aring; &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &eth;&aring;&atilde;&egrave;&ntilde;&ograve;&eth;&agrave; IP
    WORD e_cs;            // &iacute;&agrave;&divide;&agrave;&euml;&uuml;&iacute;&icirc;&aring; ( &icirc;&ograve;&iacute;&icirc;&ntilde;&egrave;&ograve;&aring;&euml;&uuml;&iacute;&icirc;&aring; ) &ccedil;&iacute;&agrave;&divide;&aring;&iacute;&egrave;&aring; &eth;&aring;&atilde;&egrave;&ntilde;&ograve;&eth;&agrave; CS
    WORD e_lfarlc;        // &agrave;&auml;&eth;&aring;&ntilde; &acirc; &ocirc;&agrave;&eacute;&euml;&aring; &iacute;&agrave; &ograve;&agrave;&aacute;&euml;&egrave;&ouml;&oacute; &iuml;&aring;&eth;&aring;&agrave;&auml;&eth;&aring;&ntilde;&agrave;&ouml;&egrave;&egrave;
    WORD e_ovno;          // &ecirc;&icirc;&euml;&egrave;&divide;&aring;&ntilde;&ograve;&acirc;&icirc; &icirc;&acirc;&aring;&eth;&euml;&aring;&aring;&acirc;
    WORD e_res[4];        // &Ccedil;&agrave;&eth;&aring;&ccedil;&aring;&eth;&acirc;&egrave;&eth;&icirc;&acirc;&agrave;&iacute;&icirc;
    WORD e_oemid;         // OEM identifier (for e_oeminfo)
    WORD e_oeminfo;       // OEM information; e_oemid specific
    WORD e_res2[10];      // &Ccedil;&agrave;&eth;&aring;&ccedil;&aring;&eth;&acirc;&egrave;&eth;&icirc;&acirc;&agrave;&iacute;&icirc;
    DWORD   e_lfanew;        // &agrave;&auml;&eth;&aring;&ntilde; &acirc; &ocirc;&agrave;&eacute;&euml;&aring; &iacute;&icirc;&acirc;&icirc;&atilde;&icirc; .exe &ccedil;&agrave;&atilde;&icirc;&euml;&icirc;&acirc;&ecirc;&agrave;
  } DOS_HEADER, *PDOS_HEADER;


typedef struct _OBJECT_ENTRY
{
  char Object_Name[8];
  union {DWORD PhisicalAddress;
         DWORD VirtualSize;
  }Misc;
  DWORD   VirtualAddress;
  DWORD   SizeOfRawData;
  DWORD   PointerToRawData;
  DWORD   PointerToRelocations;
  DWORD   PointerToLinenumbers;
  WORD    NumberOfRelocations;
  WORD    NumberOfLinenumbers;
  DWORD   Characteristics;

}OBJECT_ENTRY , *POBJECT_ENTRY;

typedef struct _IMPORT_DIRECTORY_ENTRY
{
  DWORD ImportLookUp;
  DWORD TimeDateStamp;
  DWORD ForwardChain;
  DWORD NameRVA;
  DWORD AddressTableRVA;
}IMPORT_DIRECTORY_ENTRY , *PIMPORT_DIRECTORY_ENTRY;
 

typedef struct _PEEXE_header
{
DWORD    PE_IDENTIFICATOR;
WORD     Machine ;                  //   4c 01       ; i386
WORD     NumberOfSections ;         //   00 00 00 00 ; who cares?
DWORD    DateTimeStamp;
DWORD    PointerToSymbolTable ;     //   00 00 00 00 ; unused
DWORD    NumberOfSymbols  ;         //   00 00 00 00 ; unused
WORD     SizeOfOptionalHeader ;     //   e0 00       ; constant
WORD     Characteristics  ;         //   02 01       ; executable on 32-bit-machine
WORD     Magic ;                      //0b 01       ; constant
BYTE     MajorLinkerVersion;          //00          ; I'm version 0.0 :-)
BYTE     MinorLinkerVersion;          //00          ;
DWORD    SizeOfCode         ;         //20 00 00 00 ; 32 bytes of code
DWORD    SizeOfInitializedData ;      //?? ?? ?? ?? ; yet to find out
DWORD    SizeOfUninitializedData;     //00 00 00 00 ; we don't have a BSS
DWORD    AddressOfEntryPoint ;        //?? ?? ?? ?? ; yet to find out
DWORD    BaseOfCode     ;             //?? ?? ?? ?? ; yet to find out
DWORD    BaseOfData     ;             //?? ?? ?? ?? ; yet to find out
DWORD    ImageBase      ;             //00 00 10 00 ; 1 MB, chosen arbitrarily
DWORD    SectionAlignment ;           //20 00 00 00 ; 32-bytes-alignment
DWORD    FileAlignment     ;          //20 00 00 00 ; 32-bytes-alignment
WORD     MajorOperatingSystemVersion ; //04 00      ; NT 4.0
WORD     MinorOperatingSystemVersion ; //00 00      ;
WORD     MajorImageVersion         ;  //00 00       ; version 0.0
WORD     MinorImageVersion         ; // 00 00       ;
WORD     MajorSubsystemVersion     ; // 04 00       ; Win32 4.0
WORD     MinorSubsystemVersion     ; // 00 00       ;
DWORD    Win32VersionValue         ; // 00 00 00 00 ; unused?
DWORD    SizeOfImage               ; // ?? ?? ?? ?? ; yet to find out
DWORD    SizeOfHeaders             ; // ?? ?? ?? ?? ; yet to find out
DWORD    CheckSum                  ; // 00 00 00 00 ; not used for non-drivers
WORD     Subsystem                 ; // 03 00       ; Win32 console
WORD     DllCharacteristics        ; // 00 00       ; unused (not a DLL)
DWORD    SizeOfStackReserve        ; // 00 00 10 00 ; 1 MB stack
DWORD    SizeOfStackCommit         ; // 00 10 00 00 ; 4 KB to start with
DWORD    SizeOfHeapReserve         ; // 00 00 10 00 ; 1 MB heap
DWORD    SizeOfHeapCommit          ; // 00 10 00 00 ; 4 KB to start with
DWORD    LoaderFlags               ; // 00 00 00 00 ; unknown
DWORD    NumberOfRvaAndSizes       ; // 10 00 00 00 ; constant
DWORD    ExportTableRVA            ;
DWORD    ExportTableRVASize        ;
DWORD    ImportTableRVA            ;
DWORD    ImportTableRVASize        ;
DWORD    ResourceTableRVA          ;
DWORD    ResourceTableRVASize      ;
DWORD    ExceptionTableRVA         ;
DWORD    ExceptionTableRVASize     ;
DWORD    SecurityRVA               ;
DWORD    SecurityRVASize           ;
DWORD    FixUPRva                  ;
DWORD    FixUPRVASize              ;
DWORD    DebugTableRVA             ;
DWORD    DebugTableSize            ;
DWORD    ImageDescriptionRVA       ;
DWORD    ImageDescriptionSize      ;
DWORD    MachineSpecificRVA        ;
DWORD    MachineDataSize           ;
DWORD    TlsRva                    ;
DWORD    TlsSize                   ;
DWORD    LoadConfigRVA             ;
DWORD    ConfigSize                ;
BYTE     RESERVED0[8]              ;
DWORD    IATRVA                    ;
DWORD    IATSize                   ;
BYTE     RESERVED1[8]              ;
BYTE     RESERVED2[8]              ;
BYTE     RESERVED3[8]              ; 

}PEHeader, *PPEHeader; 


int main(int argc, char* argv[])
{
    int LibCount =0;
    IMPORT_LOOKUP il;
    DOS_HEADER ImageDos;
    char LibName[MAX_PATH];   
    unsigned int ImportCount = 0;
    int i = 0;
    DWORD Pe;
    FILE *f;
    PEHeader hpe;
    int offset_pe = 0;
    int step_next = 0;
    
    ZeroMemory(&Pe,2);
    f = fopen(argv[1],"r");
    fseek(f,0,SEEK_SET);
    fread(&ImageDos,sizeof(DOS_HEADER),1,f);
    fseek(f,0,SEEK_SET);
    fseek(f,ImageDos.e_lfanew,SEEK_SET);
       fread(&hpe,sizeof(PEHeader),1,f);
    unsigned long CounterSections = ImageDos.e_lfanew+sizeof(PEHeader);
    POBJECT_ENTRY obj_sections = new OBJECT_ENTRY [hpe.NumberOfSections];
    ZeroMemory(obj_sections,sizeof(OBJECT_ENTRY)*hpe.NumberOfSections);
    for (i=0;i<=hpe.NumberOfSections;i++)
    {
    fseek(f,0,SEEK_SET);
    fseek(f,CounterSections,SEEK_SET);
    fread(&obj_sections[i],sizeof(OBJECT_ENTRY),1,f);
    CounterSections = CounterSections + sizeof(OBJECT_ENTRY);
    }
    printf("::Sections Count::\n");
    printf("%d\n",hpe.NumberOfSections);
    printf("::Sections Names::\n");
    for (i=0;i<=hpe.NumberOfSections-1;i++)printf("%s\n",obj_sections[i].Object_Name);
    fseek(f,0,SEEK_SET);
    fseek(f,hpe.ImportTableRVA,SEEK_SET);
    ImportCount = hpe.ImportTableRVASize/sizeof(IMPORT_DIRECTORY_ENTRY);
    IMPORT_DIRECTORY_ENTRY *ide = new IMPORT_DIRECTORY_ENTRY[ImportCount] ;
    ZeroMemory(ide,hpe.ImportTableRVASize);
    fread(ide,hpe.ImportTableRVASize,1,f);
    printf("::Library list::\n");
    for (i=0;i<=ImportCount-1;i++)
    {
     if (ide[i].NameRVA)
     {
     ++LibCount;
     fseek(f,0,SEEK_SET);
     fseek(f,ide[i].NameRVA,SEEK_SET);
     fread(&LibName,MAX_PATH,1,f);
     printf("%s\n",LibName);
     printf("import address table:%d\n",ide[i].AddressTableRVA);
     }
    }
    

   printf("::Import LookUp ::\n");
   DWORD *Addr_Ptr =new  DWORD[LibCount];
   ZeroMemory(Addr_Ptr,sizeof(DWORD) * LibCount);
   for (i=0;i<=LibCount - 1;i++)
   {
   fseek(f,0,SEEK_SET);
   fseek(f,ide[i].ImportLookUp,SEEK_SET);
  DWORD Counter_Ptr = ide[i].ImportLookUp;
  
  do{
     fseek(f,0,SEEK_SET);
     fseek(f,Counter_Ptr,SEEK_SET);
     fread(&Addr_Ptr[i],sizeof(DWORD),1,f);
     fseek(f,Addr_Ptr[i],SEEK_SET);
     ZeroMemory(&il,sizeof(IMPORT_LOOKUP));
     fread(&il,sizeof(IMPORT_LOOKUP),1,f);
     Counter_Ptr = Counter_Ptr + sizeof(DWORD);
     printf("%s :: %d\n ",il.HintName,il.HINT);
  }
  while (Addr_Ptr[i]);
  } 
 

    
    fclose(f);

с помощью этого примитива можно запросто считать OptionalHeader mscode.dll и т.д.
Откомпилировать или слинковать секции и куски можно где угодно, лишь бы компилятор был.
Все что можно прочитать можно и записать.Другое дело что приложение откомпилированное под DOS-oм (для примера) но предназначенное для W2k нельзя будет исполнить и отладить.Но откомпилировать можно.
Re[12]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:20
Оценка:
Здравствуйте, OldDino, Вы писали:

OD>Здравствуйте, Edvard Grieg, Вы писали:


EG>>Что меня интересует:

EG>>1) Исчезнут ли win32 api с появлением .net.
EG>>2) Изменится ли объкт ядра "process"
EG>>3) что станет с system и idle
EG>>4) Зачем .NET испозьзует win32 , а не к примеру Native API.
EG>>Ответ на эти вопросы для меня многое бы прояснил.

OD>Думаю, Вы делаете ту же ошибку, какую когда-то сделал я, а именно — роетесь в мелочах, не понимая даже предназначения .NET'а. Другими словами, за деревьями не видите леса. Поэтому позволю себе дать Вам совет — постарайтесь всё же понять идеологию .NET в целом. Просто почувствовать её. Многое, наверное, станет на свои места.


Это я и так буду делать. В мелочах роюсь. Всегда. Привычка такая. Просто думаю что в мелочах всегда скрывается чтото важное. Есть ла в нете какиенибудь описания .NET на русском языке? Описания clr pe exe на русском,
самой архитектуры? Есть ли disassembler-ы? Отладчики?
Re[14]: Чтоже такое dot.net??
От: OldDino Россия  
Дата: 07.07.04 14:21
Оценка:
Здравствуйте, Edvard Grieg, Вы писали:


EG>я конечно понимаю что новички всегда всех смешат но

EG>Описать секции кода, данных и т.д. соответствующими структурами,
EG>Описать Optional Header со всеми причиндалами.
EG>Заполнить LookUp Table, и т.д.
EG>вот пример того как можно прочитать PEEXE структуры,

EG>с помощью этого примитива можно запросто считать OptionalHeader mscode.dll и т.д.

EG>Откомпилировать или слинковать секции и куски можно где угодно, лишь бы компилятор был.
EG>Все что можно прочитать можно и записать.Другое дело что приложение откомпилированное под DOS-oм (для примера) но предназначенное для W2k нельзя будет исполнить и отладить.Но откомпилировать можно.

Ну, здесь ты меня точно насмешил. Я тебе уже сбросил линк на свою статью. Посмотри заодно и программу к ней...
Re[11]: Чтоже такое dot.net??
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.07.04 14:21
Оценка: 1 (1)
Здравствуйте, Edvard Grieg, Вы писали:
http://www.rsdn.ru/forum/Message.aspx?mid=709280&amp;only=1
Автор: akasoft
Дата: 07.07.04
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[13]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:25
Оценка:
OD>Что сказать... http://www.rsdn.ru/article/dotnet/phmetadata.xml
Автор(ы): Павел Румянцев
Дата: 06.12.2002
В статье описываются таблицы метаданных, правила вычисления их размеров, показывается, каким образом от таблиц можно перейти к логической организации данных. В частности, в статье показано, каким образом можно получить доступ к управляемому коду, что невозможно при использовании Reflection.
— может, это поможет...


Спасибо вроде полегчало, заметно полегчало
Re[13]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:31
Оценка: :))
Здравствуйте, OldDino, Вы писали:

OD>Здравствуйте, Edvard Grieg, Вы писали:


OD>Что сказать... http://www.rsdn.ru/article/dotnet/phmetadata.xml
Автор(ы): Павел Румянцев
Дата: 06.12.2002
В статье описываются таблицы метаданных, правила вычисления их размеров, показывается, каким образом от таблиц можно перейти к логической организации данных. В частности, в статье показано, каким образом можно получить доступ к управляемому коду, что невозможно при использовании Reflection.
— может, это поможет...


Просто супер огромное спасибо помогло!
Действительно классно.
Re[15]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 14:44
Оценка:
OD>Ну, здесь ты меня точно насмешил. Я тебе уже сбросил линк на свою статью. OD>Посмотри заодно и программу к ней...
Спасибо очень классная статья
Действительно классная
А сразу нельзя было ее кинуть?
Re[15]: Чтоже такое dot.net??
От: Edvard Grieg http://www.angelfire.com/rpg2/e_grig
Дата: 07.07.04 15:09
Оценка:
OD>Ну, здесь ты меня точно насмешил. Я тебе уже сбросил линк на свою статью. OD>Посмотри заодно и программу к ней...
Извините если Вас обидел своим незнанием
Ваша статья просто замечательна
Большое спасибо за статью и за программу
Теперь весь этот топик считаю просто ненужным
Желаю Вам еще больших успехов
Re: Чтоже такое dot.net??
От: Mikluho Россия  
Дата: 08.07.04 05:53
Оценка: :)
Здравствуйте, Edvard_Grieg, Вы писали:

E_G>Извините что беспокою с довольно глупыми вопросами НО:

E_G>Мне интнересно следующее:
E_G>1) Как мелкомягкие будут отказываться от вин32, если
E_G>mscodee.dll в полный рост импортирует в себя:
-- skip --
E_G>Практически все функции kernel32.dll,advapi32.dll ???
E_G>Т.е. не работает в режиме ядра а находится в самом что ненаесть пользовательском режиме , и является лишь надстройкой над kernel32.dll,advapi32.dll.
E_G>Я проанализировал формат CLR PE EXE и пришел к выводу что любое net приложение может
E_G>запросто работать как с управляемым так и с неуправляемым кодом????
E_G>Кроме всего прочего мне кажется что мелкомягкие библиотеку Runtime включаемую в проекты MSVC просто перенесли в mscoree.dll.
E_G>Как мелкомягкие будут избегать работы в "куче" управляемого кода? Они предоставят интерфейс для работы с кучей(инкапсулировать те самые :HeapFree :: 501
E_G> HeapAlloc :: 495 !kernel32.dll) а сама куча будет выполнятся в mscoree.dll?
E_G>И еще ведь mscoree.dll будет исполняться в контексте вызвавшего ее процесса а ненаоборот. Какой тогда вообще смысл от этой надстройки. Заранее извиняюсь за глупые вопросы.

E_G>with best regards Edvard Grieg http://www.angelfire.com/rpg2/e_grig



Сразу скажу, что я не претендую на истину, но вот мое ИМХО:


  1. Microsoft .NET является по сути платформенно-независимой средой исполнения. Т.е. программа, написанная под .NET может исполняться на любой системе, где стоит .NET, и это может быть не WIN-система. Если конечно, программа не использует платформенно-зависимые средства (такие как непосредственный импорт или обращение к ситемным библиотекам). Ближайший аналог — JAVA.
  2. Программа для .NET компилируется во внутренний язык (IL) и при запуске компилируется в исполняемый код средой исполнения, что обеспечивает такие возможности как:
    кроссплатформенная переносимость кода
    оптимизация средой исполнения
    вызокая безопасность управляемого кода
    и пр.
  3. Естественно, что такая исполняющая среда должна иметь внутри себя интерфейсы к системному API или реализовывать свои Native API. На данный момент Microsoft решили упростить себе жизнь реализовав оболочку для WIN32 API. По моему мнению тут сыграло роль то, что переход сразу к новому API был бы слишком сложен для программистов, т.к. большинству проще воспользоваться чем-то похожим на привычное, чем совсем новым.
  4. Насколько я понимаю, в Longhorn системное API будет новым и для совместимости будет сохранен WIN32 API, который станет оболочкой над системным API Longhorn. Соответственно в .NET системные библиотеки будут реализованы на основе системного API, а не WIN32.
Re[2]: Чтоже такое dot.net??
От: Nuald Россия http://nuald.blogspot.com
Дата: 08.07.04 07:00
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>Все очень просто Просто никто не будет отказываться от WinAPI (кстати откуда дровишки?). WinAPI жил живет и будет жить. Вот то что в следующей ОС — Longhorn часть возможностей будет доступна только через управляемый код — это да, это есть. Но WinAPI никуда не денется


Не могли бы вы указать первоисточник? Неужели нельзя будет полноценно программировать под Longhorn без управляемого кода? Что-то не верится...
Re[13]: Чтоже такое dot.net??
От: Gust Россия  
Дата: 08.07.04 07:13
Оценка:
Здравствуйте, Edvard Grieg, Вы писали:

EG>Это я и так буду делать. В мелочах роюсь. Всегда. Привычка такая. Просто думаю что в мелочах всегда скрывается чтото важное. Есть ла в нете какиенибудь описания .NET на русском языке? Описания clr pe exe на русском,

EG>самой архитектуры? Есть ли disassembler-ы? Отладчики?

Все есть в Джери Рихтер "Программирование на платформе Microsoft .NET Framework" у меня книжка печатная. А вот электронный вариант видел кажется видел на ftp://ftp.runnet.ru/BOOKS/ но не факт, что русский.
... << RSDN@Home 1.1.3 stable >>
Тише едешь — дело мастера боиться.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.