Перейти к содержанию

Помогите с адресами.


Рекомендуемые сообщения

Здравствуйте.Мне нужно написать такой скрипт.

У меня есть указатели на 3 координаты

И 3 строки,которые просто обращаются по адресам и изменяют эти координаты(типа телепортации)

Мне нужно,чтобы при нажатии клавиши эти 3 адреса(X,Y,Z) из указателей попадали в эти 3 строки.(Делать нужно как-то через автоассемблер наверное)

Помогите реализовать.В Cheat Engine не понимаю вообще почти.

Заранее спасибо за помощь.

Ссылка на комментарий
Поделиться на другие сайты

10 час назад, alkayde123 сказал:

Помогите реализовать.В Cheat Engine не понимаю вообще почти.

Для начала посмотри эти видео-уроки, если конечно хочешь сам разобраться.

 

Если после просмотра не сможешь разобраться, кидай сюда АА-скрипты с Логами (предварительно посмотри эту тему) из инструкций, работающих с координатами и свои найденные указатели на сами координаты, поможем написать скрипт - Телепорт.

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, Garik66 сказал:

Для начала посмотри эти видео-уроки, если конечно хочешь сам разобраться.

 

Если после просмотра не сможешь разобраться, кидай сюда АА-скрипты с Логами (предварительно посмотри эту тему) из инструкций, работающих с координатами и свои найденные указатели на сами координаты, поможем написать скрипт - Телепорт.

Вы возможно что-то не так поняли.У меня уже есть рабочие указатели с координатами.

Мне нужно сделать,чтобы при нажатии клавиши,адрес из указателя присваивался другому "полю" скажем так.

Т.к это онлайн игра,и там указатель автоматом переключается  на других игроков.Т.к при смерти адрес меняется.

Мне нужно,чтобы просто адрес из указателя брался и забивался в другое "поле".

Ссылка на комментарий
Поделиться на другие сайты

Это для телепатов.  

" Мне нужно,чтобы при нажатии клавиши эти 3 адреса(X,Y,Z) из указателей попадали в эти 3 строки "  В какие эти 3 строки  - догадайся сам. 

" Мне нужно,чтобы просто адрес из указателя брался и забивался в другое "поле". " В какое поле - догадывайся опять же сам.  

Через push тогда указатели в регистр засовывай, а эти регистры с уже загруженными координатами из указателей, суй в эти три строки или в поле :) о котором тут наверное не кто даже не догадывается.

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

В 17.08.2016в16:12, LIRW сказал:

Это для телепатов.  

" Мне нужно,чтобы при нажатии клавиши эти 3 адреса(X,Y,Z) из указателей попадали в эти 3 строки "  В какие эти 3 строки  - догадайся сам. 

" Мне нужно,чтобы просто адрес из указателя брался и забивался в другое "поле". " В какое поле - догадывайся опять же сам.  

Через push тогда указатели в регистр засовывай, а эти регистры с уже загруженными координатами из указателей, суй в эти три строки или в поле :) о котором тут наверное не кто даже не догадывается.

 

1a215155d164.png

Вот мне адреса из указателей X,Y,Z (Где P->"Адрес") надо при нажатии клавиши передать в поля адреса X,Y,Z(Не указателей).

теперь более менее должно быть понятно.

Ссылка на комментарий
Поделиться на другие сайты

12 часа назад, alkayde123 сказал:

Вот мне адреса из указателей X,Y,Z (Где P->"Адрес") надо при нажатии клавиши передать в поля адреса X,Y,Z(Не указателей).

По картинке - не кто не чего делать не будет. Нет не адресов не чего,а как сделать(раз адреса не даёшь) я уже написал. 

Ссылка на комментарий
Поделиться на другие сайты

alkayde123, на, пример кода, на PureBasic, по твоему запросу, если ты, пишешь на другом языке, на API Windows, FindWindow, GetWindowThreadProcessId, OpenProcess, GetAsyncKeyState, ReadProcessMemory, WriteProcessMemory . 

Скрытый текст

Structure XYZ
 x.f
 y.f
 z.f
EndStructure

Procedure FindWin(windowName.s)
 windHandle = FindWindow_(#Null, windowName)
 ProcedureReturn windHandle
EndProcedure

Procedure FindWin_Proces(windowName.s)
 windHandle = FindWindow_(#Null, windowName)
 GetWindowThreadProcessId_(windHandle, @pid)    
 handle = OpenProcess_(#PROCESS_ALL_ACCESS, #False, pid) 
 ProcedureReturn handle
EndProcedure 

sAdres_XYZ.l = $401000 ; вставить свой значение
eAdres_XYZ.l
PoiterXYZ.l = 4 ; вставить свой значение
EndAdres.l = $402000 ; вставить свой значение

nGameName.s = "Название игры"

hHandle.l = FindWin_Proces(nGameName)
While FindWin(nGameName)
 
 If GetAsyncKeyState_(#VK_SHIFT) = -32767 
  ReadProcessMemory_(hHandle, sAdres_XYZ, @eAdres_XYZ, 4, #Null) 
  ReadProcessMemory_(hHandle, (eAdres_XYZ+PoiterXYZ), XYZ.XYZ, SizeOf(XYZ), #Null)  
  WriteProcessMemory_(hHandle, EndAdres, XYZ.XYZ, SizeOf(XYZ), #Null) 
 EndIf
 
Wend
End

 

 

Ссылка на комментарий
Поделиться на другие сайты

В 18.08.2016в19:59, alkayde123 сказал:

Вот мне адреса из указателей X,Y,Z (Где P->"Адрес") надо при нажатии клавиши передать в поля адреса X,Y,Z(Не указателей).

теперь более менее должно быть понятно.

Вот теперь действительно стало понятнее - что именно ты хочешь сделать: 

Перезапись значений (в твоём случае значения - это адреса) из одних строк в таблице СЕ в другие. 

 

Можно написать такой скрипт на LUA.

Для этого:

1. Объявляй три переменных строкой, ну например:

pointerX = readInteger('[adress s ukazatelem1]')
pointerY = readInteger('[adress s ukazatelem2]')
pointerZ = readInteger('[adress s ukazatelem3]')

адреса с указателями нужно записать правильно.

2. Далее ещё три переменных, для определения строк, куда ты хочешь записать значения::

addresslist = getAddressList()
memoryrecX = addresslist_getMemoryRecordByDescription(addresslist, descriptionX)
memoryrecY = addresslist_getMemoryRecordByDescription(addresslist, descriptionY)
memoryrecZ = addresslist_getMemoryRecordByDescription(addresslist, descriptionZ)

для выполнения 2. посмотри эту тему (лично я предпочитаю не по названию строки в таблице СЕ делать, а по ID строки, так как название пользователь твоей таблицы может поменять, а ID останется одним и тем же).

3. Записываем новые значения (адреса) в нужную строку таблицы СЕ::

writeInteger('memoryrecX',pointerX)
writeInteger('memoryrecY',pointerY)
writeInteger('memoryrecZ',pointerZ)

4. Привязываем всё это к горячей клавише:

function PerezapisAdresov()
-- сюда вставь код из первых 3 пунктов
end
createHotkey(PerezapisAdresov,VK_F) -- выбери нужный тебе хоткей и запиши его вместо VK_F.

5. Если нужно что-бы LUA-скрипт был в таблице, то делаешь так:

[ENABLE]
{$LUA}
-- здесь весь код LUA-скрипта.
{$ASM}
[DISABLE]

 

Попробуй вначале сам, если не получиться, то всё-таки конкретизируй задачу (кинь сюда адреса с указателями и ID строк, куда нужно записать).

 

Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...
В 20.08.2016 в 07:40, Garik66 сказал:

Попробуй вначале сам, если не получиться, то всё-таки конкретизируй задачу (кинь сюда адреса с указателями и ID строк, куда нужно записать).

А не подскажешь, как именно записывается указатель в Lua?
Я пробовал через 0x и т.д.
Не вышло.

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, alkayde123 сказал:

Не вышло.

Для начала прочитай правила и Это

На первый раз сходи ка ты  "В угол"

В следующий раз будет пред.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Garik66 сказал:

В следующий раз будет пред.

Оу, извините пожалуйста. Я не знал.
Вы случайно не сможете мне помочь по моему вопросу?)

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, alkayde123 сказал:

А не подскажешь, как именно записывается указатель в Lua?

pointerX = readInteger('["Tutorial-i386.exe"+002015D0]+480')

если три

pointerX = readInteger('[["Tutorial-i386.exe"+002015D0]+480]+48')

и т.д.

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Garik66 сказал:

pointerX = readInteger('["Tutorial-i386.exe"+002015D0]+480')

А если у меня смещения три?)

Первое 0,
Второе с0, и третье снова 0.
"fbcmod_client.dll"+0090FC58
И потом три смещения.

Изменено пользователем alkayde123
Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Garik66 сказал:

Ожидал :D

уже ответил в предыдущем сообщении

Я только что пробовал вот так:
pointer = readFloat('[[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0]');
Не вышло.
А, все.
Вышло, спасибо.

Изменено пользователем alkayde123
Ссылка на комментарий
Поделиться на другие сайты

23 минуты назад, Garik66 сказал:

Лишние скобки - смотри внимательнее

pointer = readFloat('[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0)

Слушай, вопрос еще один есть.
Не подскажешь случайно, как обращаться к указателям через AA?

Либо как реализовать телепорт можно на Lua? На заранее сохраненную точку.

 

Ссылка на комментарий
Поделиться на другие сайты

Либо так 

Спойлер

push eax
lea eax,[[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0]
mov [pointer],eax
pop eax

 

Либо так

Спойлер

push eax
mov eax,"fbcmod_client.dll"+0090FC58
mov eax,[eax+0]
mov eax,[eax+c0]
mov eax,[eax+0]

mov [pointer],eax
pop eax

 

Но вообще-то вопросы эти давно рассмотрены в видео, статьях и топиках. 

10 минут назад, alkayde123 сказал:

Не подскажешь случайно, как обращаться к указателям через AA?

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

1 минуту назад, Garik66 сказал:

Но вообще-то вопросы эти давно рассмотрены в видео, статьях и топиках.

Спасибо еще раз)
Сейчас еще по форуму поброжу, на твое видео одно наткнулся, на схожую тематику.

Ссылка на комментарий
Поделиться на другие сайты

18 часов назад, Garik66 сказал:

Но вообще-то вопросы эти давно рассмотрены в видео, статьях и топиках. 

Блин, я уже все перепробовал.
Помоги написать телепорт для игры.
Я уже и на АА пытался, не выходит.

На Lua тоже... 

Ссылка на комментарий
Поделиться на другие сайты

@Garik66

Я на Lua писал так:

Спойлер

function SavePos()
   pX = readFloat('[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0')
   pZ = readFloat('[[["fbcmod_client.dll"+0090FC58]+4]+c0]+0')
   pY = readFloat('[[["fbcmod_client.dll"+0090FC58]+8]+c0]+0')
  end
  createHotkey(SavePos,VK_NUMPAD1)
  function LoadPos()
   tX = readFloat('[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0')
   tZ = readFloat('[[["fbcmod_client.dll"+0090FC58]+4]+c0]+0')
   tY = readFloat('[[["fbcmod_client.dll"+0090FC58]+8]+c0]+0')
   writeFloat(tX,pX)
   writeFloat(tZ,pZ)
   writeFloat(tY,pY)
  end
  createHotkey(LoadPos,VK_NUMPAD2)

 

И все равно ничего не выходит.
Координаты будто перезаписываются при вызове каждой функции
 

Ссылка на комментарий
Поделиться на другие сайты

26 минут назад, alkayde123 сказал:

Координаты будто перезаписываются при вызове каждой функции

Потому что ты не записываешь координаты. а снова читаешь их.

Первая часть скрипта правильная вторая:

Спойлер

function LoadPos()
   writeFloat('[[["fbcmod_client.dll"+0090FC58]+0]+c0]+0',pX)
   writeFloat('[[["fbcmod_client.dll"+0090FC58]+4]+c0]+0',pZ)
   writeFloat('[[["fbcmod_client.dll"+0090FC58]+8]+c0]+0',pY)
end
createHotkey(LoadPos,VK_NUMPAD2)

 

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, Garik66 сказал:

Потому что ты не записываешь координаты. а снова читаешь их.

Только что попробовал твой вариант.
Работает, но телепортирует немного не туда, не там где я сохранил координаты.

@Garik66

Все, я понял в чем была ошибка, смещение не так писал.
Спасибо большое за помощь.
Вопрос закрыт)

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, alkayde123 сказал:

не там где я сохранил координаты.

Ну это уже нужно смотреть у тебя. Я не экстрасенс - чтобы догадаться, где ты ошибся.

Может случайно нажал  второй раз NUMPAD1 и перезаписал координаты?

Может не верные указатели?

Для чистоты эксперимента выйди из игры и СЕ и по новой войди и  проверь.

Да и почему у тебя

1 час назад, alkayde123 сказал:

Я уже и на АА пытался, не выходит.

 

В чем проблема. У меня очень подробные уроки по телепорту. Смотри внимательнее их.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.