Проверка pe на правильность

Discussion in 'WASM.BEGINNERS' started by asd, Nov 7, 2005.

  1. asd

    asd New Member

    Blog Posts:
    0
    Допустим мы промапили файл размером 5 кб.

    в eax - адрес образа

    cmp [eax],'ZM'

    jnz no_pe

    mov esi,[eax+3ch]

    cmp [esi],'EP'

    а теперь представим ситуацию: у нас программа у которой первые символы mz а по смещению 3сh допустим 10000000h

    в результате esi=10000000h+eax и cmp [esi],'EP' будет обращаться к области памяти к которой нам обращаться нельзя(map образ ведь всего 5 кб) со всеми вытекающими.

    Нигде не встречал описание такого случая. По моему надо проверять перед cmp [esi],'EP' попадает ли esi в нвш map образ или нет.
     
  2. Fry Chicken

    Fry Chicken New Member

    Blog Posts:
    0
    попробуй сравнивать поинтер с базой, если больше, то на выход
     
  3. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    А какие вытекающие могут быть? Поставь SEH и чуть что - "corrupted pe file".
     
  4. asd

    asd New Member

    Blog Posts:
    0
    Fry Chicken

    попробуй сравнивать поинтер с базой, если больше, то на выход

    "По моему надо проверять перед cmp [esi],'EP' попадает ли esi в нвш map образ или нет." - по-моему это и есть сравнение сбазой.

    IceStudent

    Поставь SEH и чуть что - "corrupted pe file".

    Я с SEH ещё не разбирался. Спасибо за совет.