Помогите с трейнером

Тема в разделе "WASM.BEGINNERS", создана пользователем DimP, 15 ноя 2009.

  1. DimP

    DimP New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2009
    Сообщения:
    5
    Я ассемблер почти не знаю, но нашел в сети код простейшего трейнера, думаю это гораздо эффективнее чем писать такое же на delphi , но у меня этот код выдает ошибку в 5 строке и не находит окно программы, wHANDLE всегда = 0, Помогите пожалуйста , думаю это не сложно.
    Код (Text):
    1. format PE GUI 4.0 at 7000000h
    2. include 'WIN32AX.inc'
    3.  
    4. .data
    5.  
    6. CLASSNAME DB 'xxx',00h
    7.  
    8. Bytes DD 50 00 00 ; oshibka "extra characters in line"
    9.  
    10. wHANDLE DD ?
    11. pHANDLE DD ?
    12. pID DD ?
    13. LENS DD ?
    14.  
    15. .code
    16.  
    17. start:
    18. invoke FindWindow,addr CLASSNAME,addr CLASSNAME
    19. push eax
    20. pop [wHANDLE]
    21. .if [wHANDLE] = 0
    22. invoke MessageBox,HWND_DESKTOP,'okno ne naideno',0,MB_ICONERROR
    23. .else
    24. invoke GetWindowThreadProcessId,[wHANDLE],addr pID
    25. invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,[pID]
    26. push eax
    27. pop [pHANDLE]
    28. invoke WriteProcessMemory,[pHANDLE],0047829Ch,addr Bytes,3,[LENS]
    29. invoke CloseHandle,pHANDLE
    30. .endif
    31. invoke ExitProcess,0
    32. .end start
     
  2. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Bytes DD 500000
     
  3. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    invoke MessageBox,HWND_DESKTOP,'okno ne naideno',0,MB_ICONERROR

    ассемллер без макросов нак не умеет

    .data
    error1 db "okno ne naideno",0
    ...
    invoke MessageBox,0,offset error1 ,0,MB_ICONERROR

    wHANDLE всегда = 0

    дак нет неаверно окна с именем класса и окна 'xxx' :)
     
  4. DimP

    DimP New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2009
    Сообщения:
    5
    JCronuz, спасибо.

    FLASH300
    invoke MessageBox,HWND_DESKTOP,'okno ne naideno',0,MB_ICONERROR
    или с
    error1 db "okno ne naideno",0
    ...
    invoke MessageBox,0,offset error1 ,0,MB_ICONERROR

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

    пробовал разные программы запускать и писать названия их окон вместо xxx =), потом запускать этот трейнер.
    При любом названии окна пишет, что оно не найдено
     
  5. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    а пардон это же FASM
     
  6. FLASH300

    FLASH300 New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2008
    Сообщения:
    72
    а так пробовал
    invoke FindWindow, addr ClassName,0
     
  7. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Можно искать: по классу или по заголовку.
    И огласите название игры, а мы может быть поможем
     
  8. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    т.е. использовать класс и заголовок не правильно ---> ваш код
    Код (Text):
    1. invoke FindWindow,addr CLASSNAME,addr CLASSNAME
     
  9. DimP

    DimP New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2009
    Сообщения:
    5
    FLASH300
    invoke FindWindow, addr ClassName,0

    так тоже пробовал.
    JCronuz
    Название игры?, я пробовал этот код на разных играх все они win32 полноэкранные.
    Мне бы хотелось получить доступ к процессу по названию окна.
    Код (Text):
    1. ...
    2. .data
    3.  
    4. ClassName DB 'GTA: San Andreas',00h ; например ГТА
    5.  
    6. error1 db 'okno ne naideno',0
    7. wHANDLE DD ?
    8. pHANDLE DD ?
    9. pID DD ?
    10. LENS DD ?
    11.  
    12. .code
    13.  
    14. start:
    15. invoke FindWindow, addr ClassName, 0
    16. push eax
    17. pop [wHANDLE]
    18. .if [wHANDLE] = 0
    19. invoke MessageBox,0,error1,0,MB_ICONERROR
    20. .else
    21. invoke GetWindowThreadProcessId,[wHANDLE],addr pID
    22. invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,[pID]
    23. push eax
    24. pop [pHANDLE]
    25. invoke CloseHandle,pHANDLE
    26. .endif
    27. invoke ExitProcess,0
    28. .end start
    Пишет окно не найдено, хотя подобная программа на дельфи окно находит.
    Может быть есть какие то тонкости?, просто я ассемблер еще пока плохо знаю =(
     
  10. VaZoNeZ

    VaZoNeZ New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2009
    Сообщения:
    121
    Это случаем не загаловок окна?
     
  11. DimP

    DimP New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2009
    Сообщения:
    5
    VaZoNeZ
    ну это рядом с кнопкой пуск название =)
     
  12. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    Тогда передавайте ваше название вторым параметром в функцию FindWindow! Естественно, что окно не найдено, его просто нет с таким классом. Если у вас такие проблемы с окнами, создавайте процесс через CreateProcess по имени екзешника, получайте ID а потом работайте с ним.
     
  13. DimP

    DimP New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2009
    Сообщения:
    5
    Mankubus
    invoke FindWindow,0,addr ClassName
    Спасибо большое так все работает! =)
     
  14. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    сделайте вариант с ToolHelp32
    Код (Text):
    1. CreateToolHelp32SnapShot(...)
    2. {
    3.   Process32First(...)
    4.   {
    5.    
    6.   }
    7.   Process32Next(...)
    8.   {
    9.  
    10.   }
    11. }
    12. CloseHandle(...)
     
  15. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    У меня глупый вопрос, а разве класс и имя окна всегда совпадают ?
     
  16. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    valterg, это абсолютно разные вещи!
    Код (Text):
    1. invoke FindWindow,addr CLASSNAME,addr WINDOWNAME
    Вот правильный прототип. Подробнее, как всегда, MSDN : http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx