Ошибка при добавлении секции в PE

Тема в разделе "WASM.BEGINNERS", создана пользователем Greedy_Fly, 1 апр 2011.

  1. Greedy_Fly

    Greedy_Fly New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    15
    Доброй ночи! подскажите почему секция создается, но файл в результате невалидный!??
    и как мне ее набить нулями?


    Код (Text):
    1.  
    2.     invoke MapFile, addr File
    3.     call CheckPE
    4.     .if eax == 0
    5.     invoke MessageBox, 0, addr error, 0, 0
    6.     .else
    7.     invoke MessageBox, 0, addr PE, 0, 0
    8.     .endif
    9.     push esi
    10.     invoke GetFileAlignment, esi
    11.     invoke GetAlign, 100h, eax
    12.     mov rs, eax
    13.    
    14.     invoke GetSectionAlignment, esi
    15.     push eax
    16.     invoke GetAlign, 100h, eax
    17.     mov vs, eax
    18.    
    19.     assume esi: ptr IMAGE_DOS_HEADER
    20.     add esi,[esi].e_lfanew
    21.     assume esi:ptr IMAGE_NT_HEADERS
    22.     movzx eax, word ptr [esi + 06h]
    23.     mov Sections, eax
    24.    
    25.    
    26.     mov edx, esi ; hMap
    27.     add edx, 248
    28.     mov eax, Sections
    29.     imul eax, 40
    30.     add edx, eax
    31.    
    32.     mov dword ptr [edx], 'set.'
    33.     mov dword ptr [edx + 4], 'gnit'
    34.     mov eax, vs
    35.     mov [edx + 8], eax
    36.     mov ecx, [edx - 32]
    37.     pop eax
    38.     invoke GetAlign, ecx, eax
    39.     mov ebx, [edx - 28]
    40.     add ebx, eax
    41.     mov dword ptr [edx + 0Ch], ebx
    42.     mov eax, rs
    43.     mov dword ptr [edx + 10h], eax
    44.     mov ecx, [edx - 18h]
    45.     mov eax, [edx - 14h]
    46.     add eax, ecx
    47.    
    48.     mov dword ptr [edx + 14h], eax ; PointerToRawData
    49.     mov dword ptr [edx + 24h], 0E0000020h
    50.    
    51.    
    52.     mov eax, dword ptr [esi + 050h]
    53.     add eax, vs
    54.     mov dword ptr [esi + 050h], eax
    55.    
    56.     inc Sections
    57.     mov eax, Sections
    58.     mov word ptr [esi + 06h], ax
    59.      
    60.     assume esi:nothing
    61.     pop esi
    62.     push esi
    63.     call UnMapFile
    64.     xor eax, eax
    65.     ret
    66. invoke ExitProcess,0
     
  2. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Хотелось бы взглянуть на невалидный файл. Имхо, у вас описание секции существует лишь в заголовке, но самой секции в файле нету.
     
  3. Greedy_Fly

    Greedy_Fly New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    15
    файл прекрепил!

    да я просто не догоняю, как создать саму секцию и забить ее нулями или ...
    через mov edi, roffset mov al, 0 mov ecx .... rep stosb не получается
     
  4. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Физически еще 200h байтов добавить надо и все.
     
  5. Sunzer

    Sunzer Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    256
    Ну как как, переместись в конце файла и запиши нули, апи не знаешь какие использовать или что?
     
  6. Greedy_Fly

    Greedy_Fly New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    15
    спасибо, разобрался!