forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   aimbot (http://forum.boolean.name/showthread.php?t=11560)

NitE 24.12.2009 17:13

aimbot
 
кто-нибудь знает как делать аимботов ? может у кого-то есть исходники ? или ссылки по теме ?

h1dd3n 24.12.2009 18:14

Ответ: aimbot
 
Тебе для игры что ли надо?

johnk 24.12.2009 19:15

Ответ: aimbot
 
http://www.gamerzplanet.net/forums/s...ot-by-dxt.html

NitE 24.12.2009 19:36

Ответ: aimbot
 
h1dd3n, а для чего ещё о0 ? (ну я естественно хочу сам сделать)
johnk, спасибо.

есть ещё че ?

NitE 25.12.2009 00:55

Ответ: aimbot
 
особенно интересует как в конкретной игре узнать где в памяти хранится позиция игрока (или чего либо)...

jimon 25.12.2009 03:34

Ответ: aimbot
 
NitE
так же как и узнать где хранятся хп и все остальное, посмотри прогу artmoney

NitE 25.12.2009 03:44

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

а как мне узнать координаты игрока ? с чего начать ? откуда мне знать какая система координать в игре ? и т.д.

impersonalis 25.12.2009 03:53

Ответ: aimbot
 
http://ru.wikipedia.org/wiki/ArtMoney
Цитата:

Допустим, пользователю нужно изменить в игре количество патронов, которое равно 100. Сначала нужно произвести поиск ячеек памяти, которые содержат значение «100», потом в игре изменить количество патронов, допустим до 80. После этого произвести поиск в сформированой базе тех ячеек, значение которых изменилось со 100 до 80. Если окончательных ячеек будет слишком много, процедуру нужно повторить сначала. Когда нужный адрес обнаружен и фиксирован, пользователь может изменить его в интерфейсе ArtMoney по своему усмотрению в любую сторону (в том числе «заморозить» или «разморозить»), изменения отобразятся в игре незамедлительно.

NitE 25.12.2009 03:55

Ответ: aimbot
 
....
Цитата:

через такие проги можно узнать например патроны - это просто переменная значение которой мне известно.

а как мне узнать координаты игрока ? с чего начать ? откуда мне знать какая система координать в игре ? и т.д.

johnk 25.12.2009 03:57

Ответ: aimbot
 
Цитата:

Сообщение от NitE (Сообщение 130980)
эмм, можно наглядный пример ?
через такие проги можно узнать например патроны - это просто переменная значение которой мне известно.

а как мне узнать координаты игрока ? с чего начать ? откуда мне знать какая система координать в игре ? и т.д.

Если игра на Source движке, то можно выйти в меню и нажать "Send bug-report", там написано не только положение игрока, но и его ориентация в пространстве.

Randomize 25.12.2009 03:59

Ответ: aimbot
 
Методом тыка (проб и ошибок)
По крайней мере я так делаю.

NitE 25.12.2009 04:02

Ответ: aimbot
 
да плохая идея была... как видно никого "в теме" тут нет, разве что johnk спасибо за ссылочку - всё остальное к сожалению полнейший кал не представляющий никакой ценности.

закройте тему.

Жека 25.12.2009 07:02

Ответ: aimbot
 
Насколько я понял мысль импера, он тебе предложил искать изменённые значения. Двигаешь нужный объект, говоришь проге - ищи значения, которые увеличились/уменьшились и т.д. после нескольких двиганий туда/сюда диапазон значений может оказаться мал, и в нём путём заморозки точно узнать.
Но если ты сам наглядно не видишь куда сдвинуть игрока чтобы его координаты уменьшились/увеличились или двигать его нельзя (какой-то объект), то фиг получится.

Alex.D. 25.12.2009 10:19

Ответ: aimbot
 
Цитата:

эмм, можно наглядный пример ?
через такие проги можно узнать например патроны - это просто переменная значение которой мне известно.
Можно не юзать ArtMoney, а написать свой велосипед :))
Код на ПуреБейсике, но прокомментировал я достаточно подробно, так что должно быть понятно. Основная идея - сканировать память процесса, для этого в WINAPI есть [Read\Write]ProcessMemory
Правда это может не понравиться антивирусам :)
Код:

; структура настроек запускаемого процесса
Define.STARTUPINFO StartupInfo

; структура информации о запущенном процессе
Define.PROCESS_INFORMATION ProcessInfo

; структура системой информации
Define.SYSTEM_INFO SystemInfo

; структура информации о блоке памяти
Define.MEMORY_BASIC_INFORMATION MemoryInfo

; обнуляем структуру запуска
RtlZeroMemory_(StartupInfo, SizeOf(StartupInfo))

; указываем ее размер
StartupInfo\cb = SizeOf(StartupInfo)

; указываем режим отображения окна запускаемого процесса
StartupInfo\wShowWindow = #SW_SHOW

; запускаем процесс в режиме сна
If CreateProcess_(0, "C:\test.exe", 0, 0, 0, #CREATE_SUSPENDED, 0, 0, StartupInfo, ProcessInfo)
   
    ; процесс удалось запустить, продолжаем
   
    ; создаем интерфейс
    OpenWindow(0, 0, 0, 110, 310, "", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
    StringGadget(0, 5, 5, 100, 20, "")
    ButtonGadget(1, 5, 30, 100, 20, "Найти")
    ButtonGadget(2, 5, 55, 100, 20, "Отсеть")
    ButtonGadget(3, 5, 80, 100, 20, "Записать")
    ListViewGadget(4, 5, 105, 100, 200)
   
    ; получаем системную информацию
    ; там нас интересует диапазон адресов, куда может быть отображен процесс приложения
    GetSystemInfo_(SystemInfo)
   
    ; пробуждаем главный поток процесса
    ResumeThread_(ProcessInfo\hThread)
   
    Repeat
        ; сообщения от интерфейса
        temp = WaitWindowEvent()
        Select temp
            ; сообщения от гаджетов
            Case #PB_Event_Gadget
                temp = EventGadget()
                Select temp
                   
                    ; нажата кнопка "найти"
                    Case 1
                       
                        ; берем введенное в поле поиска значение
                        temp = Val(GetGadgetText(0))
                       
                        ; очищаем список
                        ClearGadgetItems(4)
                        index = 0
                       
                        ; сканируем процесс
                       
                        ; начальный адрес сканирования
                        address = SystemInfo\lpMinimumApplicationAddress
                       
                        ; сканируем пока не достигнем конца диапазона
                        While address < SystemInfo\lpMaximumApplicationAddress
                           
                            ; запрашиваем информацию о блоке памяти
                            If VirtualQueryEx_(ProcessInfo\hProcess, address, MemoryInfo, SizeOf(MemoryInfo)) = SizeOf(MemoryInfo)
                               
                                ; блок памяти должен быть разрешен для чтения и записи
                                ; а также выделен для использования (некоторые блоки виртуальной памяти могут быть просто зарезервированы)
                                If MemoryInfo\State = #MEM_COMMIT And MemoryInfo\Protect = #PAGE_READWRITE
                                   
                                    ; на всякий случай проверяем что блок имеет какой-то размер (не обязательно)
                                    If MemoryInfo\RegionSize > 0
                                       
                                        ; начальный адрес сканирования блока
                                        scan = MemoryInfo\BaseAddress
                                       
                                        ; конечный адрес сканирования блока
                                        stop = scan + MemoryInfo\RegionSize
                                       
                                        ; сканируем блок
                                        While scan < stop
                                           
                                            ; читаем память процесса по сканируемому адресу (читаем 4 байта)
                                            ReadProcessMemory_(ProcessInfo\hProcess, scan, @value, 4, @length)
                                           
                                            ; сравниваем с введенным в поле поиска
                                            If value = temp
                                               
                                                ; если есть совпадение, добавляем в список адрес
                                                AddGadgetItem(4, index, Hex(scan, #PB_Long))
                                               
                                                ; запоминаем адрес в данных элемента (чтобы не переводить обратно из строки в число)
                                                SetGadgetItemData(4, index, scan)
                                                index + 1
                                               
                                            EndIf
                                           
                                            ; следующий адрес сканирования
                                            scan + 4
                                        Wend
                                       
                                    EndIf
                                EndIf
                               
                                ; следующий адрес блока памяти
                                address = MemoryInfo\BaseAddress + MemoryInfo\RegionSize
                            Else
                               
                                ; запрос не возможен, что-то не так, выходим :)
                                Break
                            EndIf
                        Wend
                   
                    ; нажата кнопка "отсеять"
                    Case 2
                       
                        ; берем кол-во элементов в списке
                        index = CountGadgetItems(4)
                        If index > 0
                           
                            ; берем значение введенное в поле поиска
                            temp = Val(GetGadgetText(0))
                           
                            ; проверяем значения по адресам, записанным в элементах
                            While index > 0
                                index - 1
                               
                                ; записанный адрес
                                address = GetGadgetItemData(4, index)
                               
                                ; читаем процесс
                                ReadProcessMemory_(ProcessInfo\hProcess, address, @value, 4, @length)
                               
                                ; сравниваем с введенным в поле поиска
                                If value <> temp
                                   
                                    ; значения не совпадают, удаляем элемент
                                    RemoveGadgetItem(4, index)
                                EndIf
                            Wend
                        EndIf
                       
                    ; нажата кнопка "запись"
                    Case 3
                       
                        ; берем индекс выбранного элемента в списке
                        index = GetGadgetState(4)
                        If index >= 0
                           
                            ; записаный адрес
                            address = GetGadgetItemData(4, index)
                           
                            ; берем значение введенное в поле поиска
                            temp = Val(GetGadgetText(0))
                           
                            ; пишем в память процесса новое значение
                            WriteProcessMemory_(ProcessInfo\hProcess, address, @temp, 4, @length)
                        EndIf
                EndSelect
               
            ; закрытие окна интерфейса
            Case #PB_Event_CloseWindow
                Break
        EndSelect
    Forever
    CloseWindow(0)
EndIf

; закрываем хендл процесса
CloseHandle_(ProcessInfo\hProcess)

End


NitE 25.12.2009 13:27

Ответ: aimbot
 
Вложений: 1
Alex.D., посмотреть память это не проблема, проблема - узнать где в памяти хранится инфа про объект.
Жека, с первого взгляда можно понять что ты даже не представляешь о чем речь.
у криворуких фиг получится - но нормальные люди както-же делают, вот мне и надо узнать как ?

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

товарищи которы заикались про артмани - скажите что мне вбивать в поиск чтобы начать искать и найти координату х игрока передомной ? не проходите мимо - теперь самое время показать вашу гениальность в данном вопросе. (нет, ксс тут не при чем - просто пример)


Часовой пояс GMT +4, время: 03:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot