Список элементов управления GUI Win

Тема в разделе "WASM.WIN32", создана пользователем skyproc, 20 дек 2011.

  1. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    SBM_GETRANGE
     
  2. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Мда походу Тупик!

    Если int2eh имеет это в виду
    :dntknw:

    Код (Text):
    1. push    offset nMax
    2. push    offset nMin
    3. push    SBM_GETRANGE
    4. push    hWnd
    5. call    SendMessageA
    она то работает и записывает Какуюто хрень уж точно не то что мне надо!
    Какой то мусор во всяком случае разность этих чисел достигает огромных значений...
    Всё таки правду пишут в MSDN
    Applications should not send this message directly
     
  3. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Понятно почему Какуюто хрень - это потому, что ты не из того адресного прост-ва, надо внедриться в тот процесс, ведь offset nMin и offset nMax из адресного простр-ва твоего процесса, а например у IE по этим адресам может быть записан пин код пластика... :)
     
  4. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Да! Забыл сказать, что выручить сможет VirtualAllocEx - ReadProcessMemory
     
  5. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Так а как это сделать то правильно

    Код (Text):
    1. push    1
    2. push    xThreadId
    3. push    CurThreadId
    4. call    AttachThreadInput
    Это я сделал,что дальше???
     
  6. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    1. GetWindowThreadProcessId(, &Id)
    2. hProcess = OpenProcess(PROCESS_VM_OPERATION, FALSE, Id)
    3. Mem = VirtualAllocEx(hProcess, 0, 4096, MEM_COMMIT, PAGE_READWRITE)
    4. SendMessage(hWnd, SBM_GETRANGE, (WPARAM)Mem, (LPARAM)((BYTE*)Mem + 4));
    5. ReadProcessMemory(hProcess, (LPVOID)Mem, Buf, 4096, )
    6. VirtualFreeEx()
    7. CloseHandle(hProcess)

    А если ничего не выйдет, то тогда внедряй в чужой процесс свою длл. Вот как-то так!
     
  7. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Код (Text):
    1. call    GetForegroundWindow
    2. mov hxWnd,eax
    3.  
    4.  
    5. push    offset xProcessId
    6. push    hxWnd
    7. call    GetWindowThreadProcessId
    8.  
    9.  
    10.  
    11. push    xProcessId
    12. push    0
    13. push    PROCESS_ALL_ACCESS
    14. call    OpenProcess
    15. mov hxProcess,eax
    16.  
    17. push    PAGE_READWRITE      ;DWORD flProtect        // тип доступа
    18. push    MEM_COMMIT      ;DWORD flAllocationType,    // способ получения
    19. push    4096            ;SIZE_T dwSize,     // размер
    20. push    0           ;offset lpAddress   ;LPVOID lpAddress,      // базовые адрес
    21. push    hxProcess
    22. call    VirtualAllocEx
    23. mov lpAddress,eax
    24.  
    25.  
    26.  
    27.  
    28. mov eax,lpAddress
    29. mov ebx,lpAddress
    30. add ebx,4
    31.  
    32.  
    33. push    ebx
    34. push    eax
    35. push    SBM_GETRANGE
    36. push    hxWnd;hxEdit
    37. call    SendMessageA
    38. call    GetLastError
    GetLastError = ERROR_NOACCESS

    А чё теперь не так то?
    Хочется биться головой о стенку.
     
  8. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Лучше PROCESS_VM_OPERATION, но это все равно не главное, - значит надо внедряться в чужой процесс, примеры кода есть у Рихтера. Вот как-то так!
     
  9. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Ссылку можно?
    Да и внедриться это в смысле инжект?
     
  10. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
  11. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    см. там у Рихтера пример \Ритхер Эффективные win приложения\examp\22-InjLib.zip
     
  12. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Спасибо
     
  13. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    просто добавь свою либу в таблицу импорта к браузеру для тестов
    Это умеют делать почти все PE-редакторы/эксплорерэ
    Отставить инжекы пока что)
     
  14. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Поздно
    Но всё равно полного эффекта нет
    Инжект либки выполнил тут всё OK

    Дальше, то что в либке

    Код (Text):
    1. EnumChildWindows(GetForegroundWindow(), EnumChildProc, 0);
    Код (Text):
    1. BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
    2. {
    3.  
    4.     UINT Resalt;
    5.  
    6.             GetScrollRange(hwnd, SB_VERT, (LPINT) &RangeMin, (LPINT) &RangeMax);
    7.             Resalt = GetLastError();
    8.  
    9.     return TRUE;
    10. }
    Ну по результату работы GetScrollRange и GetLastError я определяю есть здесь то что нужно или нет.

    Сей код находит скрол бар в большинстве приложений , ну к примеру в браузере хром, исключения составили:
    - IE
    - Акробат ридер

    Как устранить недочеты, что бы пахало и в IE?
     
  15. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    skyproc
    а почему было не послать главному окну браузера что мышка скролится????!
     
  16. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    ASMatic
    Потому что надо без рывков и менять скорость
     
  17. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    skyproc
    WM_MOUSEWHEEL - есть рывки оО?
    если вы о шаге, то думаю его изменить будет трудно, т.е. более универсально, наверно - инжектнуть жаваскрипт)
     
  18. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    какой жава из приложения Win надо прокручивать, прокручивать надо плавно с возможностью изменять скорость!!!
     
  19. ASMatic

    ASMatic New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2010
    Сообщения:
    233
    возьми хром - где у него там есть скрол бар как win контрол?
    -нету такова, потому что они сами его нарисовали и контролируют - можешь отреверсить (или сорсы почитать) - и найти решение под хром. а что с остальными?? - Ну мож там в ие используется стандартное окошко и ему можно слать чего хочешь - незнаю, но думаю что тож рисуют, т..к там все рисуют сами в соотвествии к html коду.
    То что не получится поскролать плавней чем ты мышаком можешь это сделать - 100% (это елси мессаги всякие юзать)
    выхода есть два:
    1. Шлешь мессаги что мышь нажалась на скроле и тащишь её мессагами вниз = плавно, но коряво до ужаса.
    2. инжектишь жава_скрипт код в страницы браузера которые нужно скролить, и тот уже сам все делает (там есть возможность поскролать плавненько, на сколько знаю)
     
  20. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    IE, FireFox, Chrome - у них у всех стандартные скролбары, и никто ничего там не отрисовывает
    Ибо это был бы страшный гемор неоправданная трата ресурсов и больше ненужного кода, то есть больше багов!!!
    Ось она засем и нужна что бы пользоваться её благами и не очем не заботиться...