Можно ли отследить такую ситуацию ?

Тема в разделе "WASM.RESEARCH", создана пользователем ivans77, 21 июл 2007.

  1. ivans77

    ivans77 New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    2
    Всем привет! Образовалась у меня проблемка. Ковыряю сейчас одного виря, залезшего ко мне.
    Практически весь разобрал, но осталась одна проблемка.
    Итак, вирь, под конец своей работы в функции start делает следующее:

    Код (Text):
    1. .......................................
    2. .text:00401DEF                 call    WriteProcessMemory
    3. .text:00401DF5                 push    CONTEXT_FULL    ;
    4. .text:00401DFA                 pop     struct_Context.ContextFlags
    5. .text:00401E00                 push    offset struct_Context
    6. .text:00401E05                 push    struct_ProcInfo.hThread
    7. .text:00401E0B                 call    GetThreadContext ; получили контекст потока struct_ProcInfo.hThread
    8. .text:00401E0B                                         ;
    9. .text:00401E11                 mov     struct_Context.Eip, offset loc_4018AC; <<<<----- Вот эта метка
    10. .text:00401E1B                 push    offset struct_Context
    11. .text:00401E20                 push    struct_ProcInfo.hThread
    12. .text:00401E26                 call    SetThreadContext
    13. .text:00401E2C                 push    struct_ProcInfo.hThread
    14. .text:00401E32                 call    ResumeThread
    15. .......................................
    Вот тута показана метка, адрес которой передается в Eip. И как я понимаю, после ResumeThread начинает работат код, идущий с этой метки!
    Вот начало содержимой этой метки:

    Код (Text):
    1. ............................
    2. .text:004018A9 func_UrlDownloadAndRun endp
    3. .text:004018A9
    4. .text:004018AC ; ---------------------------------------------------------------------------
    5. .text:004018AC
    6. .text:004018AC loc_4018AC:                             ; DATA XREF: start+17Bo
    7. .text:004018AC                 push    0
    8. .text:004018AE                 pop     dword_4113E6
    9. .text:004018B4                 push    offset CryptUser32_dll ; "user32.dll"
    10. .text:004018B9                 call    func_Uncrypt
    11. .text:004018BE                 push    offset UncryptBuf
    12. .text:004018C3                 call    LoadLibrary
    13. .text:004018C9                 call    FreeConsole
    14. .text:004018CF                 push    offset unk_4111D8
    15. .text:004018D4                 push    105h
    16. .text:004018D9                 call    GetTempPathA
    17. .text:004018DF                 push    offset CryptUrlmon_dll ; "urlmon.dll"
    18. .text:004018E4                 call    func_Uncrypt    
    19. .text:004018E9                 push    offset UncryptBuf
    20. .text:004018EE                 call    LoadLibrary
    21. ..........................................................
    Вопрос:
    Как можно в OllyDbg пройти на эту метку и посмотреть что будет делать данный код? Т.е там пройтись пошагово!
    И возможно ли это вообще?
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ну так что мешает поставить туда бряк?
    Ctrl-G -> 4018AC -> F2
     
  3. _SLV_

    _SLV_ New Member

    Публикаций:
    0
    Регистрация:
    22 фев 2007
    Сообщения:
    19
    после ResumeThread EBFE и CC на новый eip..
     
  4. ivans77

    ivans77 New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2007
    Сообщения:
    2
    ставил.. вирус запускается и функционирует, но я туда не проваливаюсь..

    Можно ли расшифровать что здесь хотели сказать?:)))
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    бесконечно зациклить текущий тред и поставить бряк в начало того, чей контекст модифицировали :)

    Думаю, это правильный совет. Ведь не текущий тред будет там выполнятся, а какой-то другой. Поэтому, напиши в ольке jmp $ (ну это образно) в тек. треде. А еще лучше, просто приостанови этот поток (в окне с потоками олька позволяет это делать). А в ком. строке введи bp 4018AC - так поставишь бряк. Потом жми F9 и попадешь в нужное место.