Исключения в упакованном файле

Тема в разделе "WASM.BEGINNERS", создана пользователем FedorShika, 25 июн 2010.

  1. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Здравствуйте!
    Пишу пакер. Он расположен по одному адресу, а пакуемое приложение выстраивает по другому.
    После того, как выстроил пакуемое приложение поправил
    PEB.ImageBaseAddress и
    LDR_MODULE.BaseAddress.

    В пакуемом приложении вызывается

    Под Win2k и WinXP работает нормально.
    А во
     
  2. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Здравствуйте!
    Пишу пакер. Он расположен по одному адресу, а пакуемое приложение выстраивает по другому.
    После того, как выстроил пакуемое приложение поправил
    PEB.ImageBaseAddress и
    LDR_MODULE.BaseAddress.

    Код падает, когда в пакуемом приложении вызывается исключение.

    Подскажите, с чем это может быть связано?
    Т.е. что нужно настроить, что бы исключения работали.
     
  3. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Да, забыл сказать, исключение вызывается так:
    try
    {
    throw 1;
    }
    catch(...)
    {
    cout << "exception\n";
    }

    В debug работает, а в release - нет.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    пример файла нужен.
     
  5. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Вот оригинальный и упакованный файлы.
     
  6. Phyber

    Phyber New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    всё работает.
     
  8. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    FedorShika
    Символы на сайте мс. Сурсы найдёте. Дать линк на олли ?
     
  9. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Прошу прощения, я не дописал в первом посте.
    Работает под win2k и winXP,
    а вот под winVista и win7 падает.
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    FedorShika
    Как падает ?
    Контекст, бактрейс где ??
    Ёпта найми гадалку.)
     
  11. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Прошу прощения, я пока далёк от системного программирования.

    Мне нужно установить символы для win7 (если я на ней тестирую)
    В OllyDbg попробовать подебагать оригинальную и упакованную версию
    таким образом найти различия в процессе выполнения кода?
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Предлагаю ввести бан за подобные вопросы, ибо уже надоело. Матчасть перед носом, вверх скролом листни. Символы - Грейт описал где их брать. Читайте.
     
  13. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Попробовал запустить программу под OllyDbg.
    Так вот, таким образом запущенная программа замечательно работает...
    Что мне можно попробовать сделать ещё...?
     
  14. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    Поставь в опциях Olly Just-In-Time Debugging, тогда в момент ошибки приложение будет загружено в отладчик автоматически.
     
  15. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Тем не менее, господа, может кто сможет просто взять мой код и продебагать его под win7 (Vista)?
    Буду премного благодарен, если поможете решить мою проблему.
    Из-за этой ошибки уже около месяца торчу на месте...
     
  16. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    чтож вы такое сотворили то :) разбирайтесь в коде всё есть.
    Код (Text):
    1. .text:77EE8DEE sub_77EE8DEE    proc near               ; CODE XREF: sub_77EE8D6C+21p
    2. .text:77EE8DEE
    3. .text:77EE8DEE var_20          = dword ptr -20h
    4. .text:77EE8DEE var_1C          = dword ptr -1Ch
    5. .text:77EE8DEE ms_exc          = CPPEH_RECORD ptr -18h
    6. .text:77EE8DEE addr_handler    = dword ptr  8
    7. .text:77EE8DEE arg_4           = dword ptr  0Ch
    8. .text:77EE8DEE arg_8           = dword ptr  10h
    9. .text:77EE8DEE
    10. ..............
    11. .text:77EE8E27
    12. .text:77EE8E27 @loop_check:                            ; CODE XREF: sub_77EE8DEE+69j
    13. .text:77EE8E27                                         ; sub_77EE8DEE+271j
    14. .text:77EE8E27                 cmp     esi, ebx
    15. .text:77EE8E29                 jl      @exit
    16. .text:77EE8E2F                 lea     ecx, [esi+ebx]
    17. .text:77EE8E32                 sar     ecx, 1
    18. .text:77EE8E34                 mov     eax, ecx
    19. .text:77EE8E36                 shl     eax, 4
    20. .text:77EE8E39                 add     eax, offset unk_77F9AC0C
    21. .text:77EE8E3E                 mov     edi, [eax+4]
    22. .text:77EE8E41                 mov     edx, [eax+8]
    23. .text:77EE8E44                 add     edx, edi
    24. .text:77EE8E46                 cmp     [ebp+addr_handler], edi ; > edi = imagebase module
    25. .text:77EE8E49                 jb      @next_module
    26. .text:77EE8E4F                 cmp     [ebp+addr_handler], edx ; > edx = imagebase + imagesize
    27. .text:77EE8E52                 jb      short loc_77EE8E59
    28. .text:77EE8E54                 lea     ebx, [ecx+1]
    29. .text:77EE8E57                 jmp     short @loop_check
    30. .text:77EE8E59 ; ---------------------------------------------------------------------------
    31. .text:77EE8E59
    32. .text:77EE8E59 loc_77EE8E59:                           ; CODE XREF: sub_77EE8DEE+64j
    33. .text:77EE8E59                 mov     ecx, edi
    34. .text:77EE8E5B                 mov     [ebp+var_1C], ecx
    35. .text:77EE8E5E                 mov     ecx, [eax+0Ch]
    36. .text:77EE8E61                 mov     edx, [ebp+arg_8]
    37. .text:77EE8E64                 mov     [edx], ecx
    38. .text:77EE8E66                 push    dword ptr [eax]
    39. .text:77EE8E68                 call    RtlDecodeSystemPointer ; > return -1
     
  17. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    А чего ж ты тогда взялся за пакер?
     
  18. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    прально что взялся ранно или поздно доделает и будет опыт. но вот читать много нада и меньше спрашивать в общем/
     
  19. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Чтоб был опыт надо было сразу начинать с написания OS.
     
  20. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    докопался до того, что судя по всему проблема происходит в _RtlIsValidHandler (в _RtlDispatchException)
    а возможно и в _RtlLookupFunctionTable

    скорее всего дело связано с тем, что я меняю ImageBase который для выстраиваемого файла отличается от ImageBase пакера

    косвенно это подтверждается тем, что если я не правлю peb->ImageBaseAddress и LDR_MODULE->BaseAddress, то проблема проявляется и под WinXP