Показать сообщение отдельно

  #20  
Старый 18.04.2010, 14:11
norway
Новичок
Регистрация: 03.12.2008
Сообщений: 3
С нами: 9176886

Репутация: 0
По умолчанию

В коде морфнаха заметил очень интересные строки
Код:
mov eax,[edi+IMAGE_OPTIONAL_HEADER32.ImageBase] ; закидываем в eax адрес имейдж базы
....
add eax,[FileSize] ; прибавляем к адресу имейджбазы размер файла
.....
cmp eax,1314BBB9h; производим сравнение пинч ли это
   jnz fornexta
   mov [RB_is],2
   fornexta:
cmp eax,1314C600h ; производим сравнение пинч ли это
   jnz fornexta2
   mov [RB_is],2
   fornexta2:   
....
    mov edx,[edi+IMAGE_SECTION_HEADER.PointerToRawData]; закидываем в edx смещение в файле
                       add edx,[hMap]  ; плюсуем с началом файла в памяти    
....
mov eax,[RB_is] 
        .if eax = 2; если у нас пинч... 
         add edx,512; добавляем 512 к смещению+началу файла в памяти
         .endif
          mov ecx,[edi+IMAGE_SECTION_HEADER.SizeOfRawData]; закидываем в eсx физический размер секции на диске 
          .if eax = 2 ; если у нас пинч... 
          sub ecx,512; уменьшаем на 512
         .endif      

...
       mov edx,[edi+IMAGE_SECTION_HEADER.VirtualAddress];закидываем в edx виртуальный адрес
                                 add edx,[dwImageBase]; складываем с имейдж базой
                                 mov eax,[RB_is] 
                         .if eax = 2 ; если у нас пинч... 
                         add edx,512; добавляем к виртуальному адресу 512
                         .endif     
....
После этих преобразований у нас получиться что первые 512байт секции уйдут и в память грузиться не будут...
Загрузил пинча в иде и заметил что в этих сегментах расположены данные которые выкидывать нельзя...

вот отрывок из секции данных в первых 512 байтах

Код:
.data:1314B0D2; char aSoftwareMicr_1[]
.data:1314B0D2 aSoftwareMicr_1 db 'SOFTWARE\Microsoft\Windows\CurrentVersion',0
.data:1314B0D2                                        ; DATA XREF: sub_13141780+Ao
.data:1314B0D2                                        ; sub_13141780+30o
.data:1314B0FC; char aProgramfilesdi[]
.data:1314B0FC aProgramfilesdi db 'ProgramFilesDir',0 ; DATA XREF: sub_13141780+2Bo
.data:1314B10C                 dd 6 dup(0)
Сей код размещен специально чтобы морфнахом не криптовали пинчи? или есть какой то сокральный смысл?))
 
Ответить с цитированием