Access violation when writing to [00000000]

Тема в разделе "WASM.BEGINNERS", создана пользователем Denek, 28 июн 2009.

  1. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    Есть программа без отладчика она запускается норм, с отладчиком OllyDbg (plugin Phantom 1.54 со всеми включенными опциями) после отладки вываливается в Access violation when writing to [00000000], вот собственно не хитрый участок кода:

    MOV EAX,DWORD PTR SS:[EBP+8]
    MOV EDX,DWORD PTR SS:[EBP-20]
    MOV ECX,EAX
    POP EDI
    POP ESI
    POP EBX
    MOV DWORD PTR DS:[ECX],EDX
    MOV EDX,DWORD PTR SS:[EBP-1C]
    MOV DWORD PTR DS:[ECX+4],EDX
     
  2. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    останавливается на MOV DWORD PTR DS:[ECX],EDX (ECX = 00000000)
     
  3. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    Кто-то может подсказать что искать, или что в таких случаях делать, и как запуск с отладчиком и без отладчика влияет на работу программы, в инете искал но там не то всё.
     
  4. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    В твою ф-цию передается нулевой указатель.
     
  5. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    в общем надо "раньше" искать все возможные исходные ситуации которые могут повлиять так?
     
  6. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Denek
    Ага. Кстати если лень анализировать код можешь попробовать другие плагины для защиты ольки.
     
  7. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    привыкать надо если хочу научиться ))
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Влияет следующим образом. Прежде чем поток вернётся в юзермод для обработки исключения на отладочный порт доставляется сообщение, которое дебуггер должен обработать. Вот видимо криво обрабатывает.
    Оля это лучший дизассемблер, ида рядом с олей не стояла. Но как дебуггер это гуан, не потомучто реализация такая, а так как сам механизм дебугапи не позволяет исполнить полноценную отладку. В таком случае берём ядреный дебуггер, ставим условный останов на ISR. В случае страничного нарушения все доступные дебуггеры идут лесом, сисер и виндбг криво #PF обрабатывают, что нормально отладку не позволяет исполнить, только посредством хака.
     
  9. Denek

    Denek New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2008
    Сообщения:
    14
    Clerk

    Видно так и получилось, поставил BP на write, access значений EBP+8(0012FA60), EBP-20(0012FA38), что-то побрейкало, потом нормально стало BP убрал ничего не менял, щас нормально стал работать, то есть под отладчиком стартует прога. =\