Как выгрузить модуль (дллку и тп) из памяти с целью ее удаления?

Тема в разделе "WASM.WIN32", создана пользователем Weberd, 31 июл 2007.

  1. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    сабж
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    через инжект
     
  3. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    ух, а попроще нет способа?
     
  4. Termo_in_work

    Termo_in_work TermoSINteZ

    Публикаций:
    0
    Регистрация:
    31 июл 2007
    Сообщения:
    20
    Адрес:
    на работе
    Weberd
    Пометь файл для удаления. При следующей загрузке системы он удалится.
     
  5. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Как вариант - через bat файл. Хотя некрасиво конечно же.
     
  6. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    спасибо, за советы. мне нравится вариант с помечиванием файла.
     
  7. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    А на каком этапе система проверяет этот флаг? Может быть уже после того, как файл снова будет занят.
     
  8. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Код (Text):
    1. InjectStop STRUCT
    2.     PushFreeLibrary BYTE ?
    3.     FreeLibraryArg DWORD ?
    4.     CallFreeLibrary WORD ?
    5.     CallFreeLibraryAddr DWORD ?
    6.     PushExitThread BYTE ?
    7.     ExitThreadArg DWORD ?
    8.     CallExitThread WORD ?
    9.     CallExitThreadAddr DWORD ?
    10.     AddrExitThread DWORD ?
    11.     AddrFreeLibrary DWORD ?
    12. InjectStop ENDS
    13.  
    14.  
    15. InjectStopCode proc lpPID:DWORD
    16. local EP: dword
    17. local Memory: dword
    18. local e_lfanew: dword
    19. local ThID:DWORD
    20. local Inj: InjectStop
    21.  
    22.     invoke OpenProcess, PROCESS_ALL_ACCESS, 0, lpPID
    23.     test eax,eax
    24.     je @f
    25.     mov Handle,eax
    26.  
    27.     mov edi,hInstDll ; hInstance удаляемого модуля
    28.     add edi,3Ch
    29.     invoke ReadProcessMemory,Handle, edi, addr e_lfanew, 4, addr BytesWritten
    30.     mov edi,hInstDll
    31.     add edi,e_lfanew
    32.     lea eax,(IMAGE_NT_HEADERS ptr [edi]).OptionalHeader.AddressOfEntryPoint
    33.     mov Memory,eax
    34.     invoke ReadProcessMemory,Handle, Memory, addr EP, 4, addr BytesWritten
    35.     mov edi,hInstDll
    36.     add edi,EP
    37.     invoke VirtualAllocEx, Handle, 0, sizeof InjectStop, MEM_COMMIT, PAGE_EXECUTE_READWRITE
    38.     mov Memory,eax
    39.    
    40.     mov Inj.PushFreeLibrary,68h
    41.     push hInstDll
    42.     pop Inj.FreeLibraryArg
    43.     mov Inj.CallFreeLibrary,15FFh
    44.     mov Inj.CallFreeLibraryAddr,eax
    45.     add Inj.CallFreeLibraryAddr,1Ah
    46.    
    47.     mov Inj.PushExitThread,68h
    48.     mov Inj.ExitThreadArg,0
    49.     mov Inj.CallExitThread,15FFh
    50.     mov Inj.CallExitThreadAddr,eax
    51.     add Inj.CallExitThreadAddr,16h
    52.     invoke GetModuleHandle, $CT0("kernel32.dll")
    53.     push eax
    54.     invoke GetProcAddress, eax, $CT0("ExitThread")
    55.     mov Inj.AddrExitThread,eax
    56.     pop eax
    57.     invoke GetProcAddress, eax, offset FreeLib ; имя dll
    58.     mov Inj.AddrFreeLibrary,eax
    59.    
    60.     invoke WriteProcessMemory,Handle, Memory, addr Inj, sizeof InjectStop, addr BytesWritten
    61.     test eax,eax
    62.     je @f
    63.     invoke CreateRemoteThread, Handle, NULL, 0, Memory, NULL, 0, addr ThID
    64.     test eax,eax
    65.     je @f
    66.     invoke CloseHandle,eax
    67.     mov eax,1
    68.     ret
    69.     @@:
    70.     xor eax,eax
    71.     ret
    72. InjectStopCode endp
     
  9. Termo_in_work

    Termo_in_work TermoSINteZ

    Публикаций:
    0
    Регистрация:
    31 июл 2007
    Сообщения:
    20
    Адрес:
    на работе
    W4FhLF
    Читаем МСДН - флаг MOVEFILE_DELAY_UNTIL_REBOOT:
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Не обязательно. Можно воспользоваться функцией SetThreadContext