示例#1
0
void CCOF2OMF::Convert() {
   // Do the conversion
   if (WordSize != 32) {
      err.submit(2317, WordSize);                // Wrong word size
      return;
   }

   // Allocate variable size buffers
   SectionBuffer.SetNum(NSections + 2);          // Allocate buffer for section translation list
   SectionBuffer.SetZero();                      // Initialize
   SymbolBuffer.SetNum(NumberOfSymbols + 1);     // Allocate buffer for symbol translation list
   SymbolBuffer.SetZero();                       // Initialize
   NameBuffer.Push(0, 1);                        // Make first entry in NameBuffer empty

   // Call the subfunctions
   ToFile.SetFileType(FILETYPE_OMF);             // Set type of output file
   MakeSegmentList();                            // Make temporary segment conversion list
   MakeSymbolList();                             // Make temporary symbol conversion list
   MakeRelocationsList();                        // Make temporary list of relocations (fixups) and sort it
   MakeLNAMES();                                 // Make THEADR and LNAMES records
   MakeSEGDEF();                                 // Make SEGDEF and GRPDEF records
   MakeEXTDEF();                                 // Make EXTDEF records
   MakePUBDEF();                                 // Make PUBDEF records
   MakeLEDATA();                                 // Make LEDATA, LIDATA and FIXUPP records
   MakeMODEND();                                 // Finish output file
   *this << ToFile;                              // Take over new file buffer containing the converted file
}
示例#2
0
void CELF2ASM<ELFSTRUCTURES>::Convert() {
    // Do the conversion

    // Find image base and executable type
    FindImageBase();

    // Tell disassembler
    Disasm.Init(ExeType, ImageBase);                       // Set image base

    // Make Sections list in Disasm
    MakeSectionList();

    // Make Symbols list in Disasm
    MakeSymbolList();

    // Make relocations for object and executable files
    MakeRelocations();

    if (ImageBase) {
        // Executable file
        MakeImportList();                          // Make imported symbols for executable files
        MakeExportList();                          // Make exported symbols for executable files
        MakeListLabels();                          // Put labels on all image directory tables
    }
    Disasm.Go();                                  // Disassemble
    *this << Disasm.OutFile;                      // Take over output file from Disasm
}
示例#3
0
void CCOF2ASM::Convert() {
   // Преобразовать
   if (ImageBase) Disasm.Init(2, ImageBase);     // Исполнимый файл или DLL. Установить основание имиджа
   MakeSectionList();                            // Создать список секций и Релокаций в Disasm-е
   MakeSymbolList();                             // Сделать список символов в Disasm-е
   if (ImageBase) {
      // Исполнимый Файл
      MakeDynamicRelocations();                  // Make dynamic base relocations for executable files
      MakeImportList();                          // Make imported symbols for executable files
      MakeExportList();                          // Make exported symbols for executable files
      MakeListLabels();                          // Put labels on all image directory tables
   }
   Disasm.Go();                                  //Дизассемблировать
   *this << Disasm.OutFile;                      // Вывесть выходной файл из Disasm-а
}