Rus. server

12/02/2009 06:45 origmas#781
Вот кто не пробывал еще - поднятие камеры координатами перса (по XY тоже работает)
$Z = ($Z+5) * 10.0 ; число 5 это на сколько подняться можно хоть за облака
_MemoryPointerWrite($BASE, $PROCESS, $OFS_Z, $Z, "float")
ControlFocus($CLIENT, "", "")
а потом после любого движения перса она опять на месте - удобно использовать для визуального эффекта Сканирования территории .. или посмотреть на низких ЛВЛ как там на верху, процесс этот не виден серверу - перс на месте ..
самое интересное что можно камеру переместить в любую точку карты, только объектов там не будет - одни пейзажи дома .. города и конечно если не правильно поставите высоту то очутитесь (камерой) внутри горы например ..
12/02/2009 07:37 origmas#782
полюБому эту игру инопланетяне придумали, коэффициенты движений, горизонтальные углы затухания -(fhorizontalfadestartangle) ..))
12/02/2009 09:17 AlexGD#783
Quote:
Originally Posted by Biga73 View Post
выражусь еще проще, как найти эти гадские адреса по которым происходит инжект ? дело то в них все состоит, и копай хоть марсианские форумы , без адресов дела не будет... покажите мне как найти хоть один адрес для инжекта и я вам найду ВСЕ остальные !
Есть один сложный, но безошибочный метод. Берешь OllyDBG. Открываешь в нем клиента. Патчишь на JMP место, где он требует запуск из ланчера. Заходишь в игру. Проставляешь в начале процедур брейкпоинты (мнооого их - но мы же не ищем легких путей). Тыркаешь в кнопульки в игре - отлавливаешь адреса брейков. За пару суток все адреса пройти можно.
12/02/2009 11:18 AlexGD#784
Quote:
Originally Posted by origmas View Post
Вот кто не пробывал еще - поднятие камеры координатами перса (по XY тоже работает)
$Z = ($Z+5) * 10.0 ; число 5 это на сколько подняться можно хоть за облака
_MemoryPointerWrite($BASE, $PROCESS, $OFS_Z, $Z, "float")
ControlFocus($CLIENT, "", "")
а потом после любого движения перса она опять на месте - удобно использовать для визуального эффекта Сканирования территории .. или посмотреть на низких ЛВЛ как там на верху, процесс этот не виден серверу - перс на месте ..
самое интересное что можно камеру переместить в любую точку карты, только объектов там не будет - одни пейзажи дома .. города и конечно если не правильно поставите высоту то очутитесь (камерой) внутри горы например ..
Ну не обязательно ж "потом после любого движения перса она опять на месте". Есть параметр - максимальная дистанция камеры - поставь ему мульён и не будет возвращаться. Подсмотри поинтер у смурфина, например, или в любом другом ZoomHack'е.
12/02/2009 11:54 AlexGD#785
Судя по тому, что ты написал - ты просто не в ту степь роешь... Хотя... Я же твоего кода не видел )

Вот это работает на забугорском сервере:

Code:
  
  W2I_Walk_Call1        =$0045DE80;//45DE30;//45DC80  45DD60
  W2I_Walk_Call2        =$004618E0;//461880;//461740  461810
  W2I_Walk_Call3        =$0045E280;//45E230;//45E080  45E160

procedure WalkCall(aPParams:PParams); Stdcall;
var
  Address1:pointer;
  Address2:pointer;
  Address3:pointer;
  x,y,z:single;
  fly: Cardinal;
begin
  Address1:=Pointer(W2I_Walk_Call1);
  Address2:=pointer(W2I_Walk_Call2);
  Address3:=pointer(W2I_Walk_Call3);
  x:=aPParams^.Param3;
  y:=aPParams^.Param4;
  z:=aPParams^.Param5;
  //if r_POSITION1=0 then
      //fly:=0
      //else
      //fly:=1;
  asm
    pushad
      mov eax, dword ptr [W2I_BASE_Call]  //  92D534  929174
      mov eax, dword ptr [eax+$1C]
      mov esi, dword ptr [eax+$20]
      mov ecx, dword ptr [esi+$BD4]  //Bcc+8=BD4
      push 1
      call Address1
      mov edi, eax
      lea eax, dword ptr [esp+$18]
      push eax
      push 0   //r_POSITION1   //0µШГж 1їХЦР
      mov ecx, edi
      call Address2
      mov ecx, dword ptr [esi+$BD4]  //Bcc+8=BD4
      push 0
      push 1
      push edi
      push 1
      call    Address3
      mov eax, dword ptr [W2I_BASE_Call] // 92D534  00929174 929174
      mov eax, dword ptr [eax+$1C]
      mov eax, dword ptr [eax+$20]
      mov eax, dword ptr [eax+$BD4]  //Bcc+8=BD4
      mov eax, dword ptr [eax+$30]
      mov ecx, dword ptr [eax+4]
      mov eax, x
      mov dword ptr[ecx+$20], eax
      mov eax, z
      mov dword ptr[ecx+$24], eax
      mov eax, y
      mov dword ptr[ecx+$28], eax
    popad
  end;
end;
procedure TMan.WalkTo(x, y, z: single);
var
  aParams : TParams;  
  aParamsSize: DWORD;
begin
  aParams.Param3:=x;
  aParams.Param4:=y;
  aParams.Param5:=z;
  aParamsSize:=SizeOf(aParams);
  if GHwnd<>0 then
  begin
    injectfunc(@WalkCall, @aParams, aParamsSize);
  end;
end;
Есть очень явное подозрение, что нужно найти W2I_Walk_Call1, 2, 3 для нашего и заработает ) Хотя не факт... Нет времени рыть...
12/02/2009 11:58 AlexGD#786
Объясню в чем дело... Из кода явно видно, что для правильного смещения нужно сначала вызвать подпрограммы, которые скажут серваку, что перс сдвинулся (call Address1,2,3). А потом уже в клиенте переписать значения (mov dword ptr[ecx+$20], eax) (зачем? сервак их и так клиенту вернет и сдвинет его...)
12/02/2009 13:25 origmas#787
и так хорошо и так не плохо, а че-то не так ..

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

само собой все произойдет - только надо щелкнуть мышкой по тропинке (ВСЕ..)
как найти эту мишень типа в которую мы подставляем цели (точку щелчка мыши) -
там наверное надо переводить коорды экранные в коорды 3D сцены .. формулка может така нужна .. потом еще вид действия надо активировать Бег , Полет, Стоять.. но это уже другая история ..
12/02/2009 13:42 silkytail#788
сервер твоего перса не двигает, он только ресинки присылает, если ты пытаешься двигаться неправильно
12/02/2009 13:49 dwar#789
инжект для передвижения, что используют китайцы, т.е. который был приведен выше, аналогичен хорошо известному методу с заменой значений в памяти: переписать указатели текущего действия, снять с «ручника», задать конечные координаты… Оба варианта вполне рабочие, хотя инжект проще, ибо нет нужды контролировать достижение конечной точки и вовремя возвращать нужные указатели действия, дабы не было трудностей с графикой, клиент сам все сделает.
12/02/2009 14:05 muchenberg#790
Вы мне такую вещь скажите - при чём тут speedtree?
Всё для чего она нужна - это для рендера деревьев.
Камера тут не при чём. Не туда смотрите.
И всё что можно сделать толкового при помощи speedtree - это отключить отрисовку деревьев, по аналогу консольной команды d_render_forest. Остальное шелуха.
SDK на speedtree можно скачать с speedtree.com

Повеселил продавец крякнутого бота. Вобщемто так даже некрасиво делать. Для уважающего себя кодера такое действие просто мелкое.
Сломал - изволь выложить.
Глянул сайтец - имхо развод :D
12/02/2009 18:19 muzhig#791
Процедура нормального таргета, кому надо:
Quote:
procedure Target(aPParams:PParams); Stdcall;
var
P1: DWORD;
begin
//by muzhig
{
mov edx, DWORD PTR [BaseAddress]
push MonsterID
mov ecx, DWORD PTR [edx+0x20]
add ecx, 0xEC
mov edx, CallAddress
call edx
}
P1 := aPParams^.Param1; // номер моба
asm
pushad
mov ecx,dword ptr [PW_BASE_ADDRESS]

mov ecx,dword ptr[ecx+$20]
add ecx,$ec
mov eax, P1
push eax
mov edx, $005ae040
call edx
popad
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
aParams : TParams;
begin
aParams.Param1 := idmob;//где брать idmob читайте страниц эдак 10 назад
InjectFunc(hProcess, @Target, @aParams, SizeOf(aParams));
end;
ЗЫ: OllyDbg можно скачать с из сайта бесплатно.
12/02/2009 18:19 AlexGD#792
Quote:
Originally Posted by muchenberg View Post
Вы мне такую вещь скажите - при чём тут speedtree?
Всё для чего она нужна - это для рендера деревьев.
Камера тут не при чём. Не туда смотрите.
А фиг его знает при чем тут speedtree :) Увидел знакомые букамки. А что с elementskill.dll ? К ней можно подключится?
12/02/2009 18:29 AlexGD#793
Адресс иньекта для поднять айтем (скилл) $0044BF60. Иньект не писал еще :( Некогда :(
12/02/2009 19:37 AlexGD#794
Quote:
Originally Posted by dwar View Post
инжект для передвижения, что используют китайцы, т.е. который был приведен выше, аналогичен хорошо известному методу с заменой значений в памяти: переписать указатели текущего действия, снять с «ручника», задать конечные координаты… Оба варианта вполне рабочие, хотя инжект проще, ибо нет нужды контролировать достижение конечной точки и вовремя возвращать нужные указатели действия, дабы не было трудностей с графикой, клиент сам все сделает.
Тут есть загвоздка... Я не пишу бота в прямом смысле. Мне просто нужен помощник. Ну не хочу я следить за своим здоровьем ) Хочу чтобы макрос бота пинал, а хилер банки юзал ) И не мешал при этом чатиться. Или ЧСника по обнаружению брал в таргет, приближался и шандарахал по заданной программе. Ну и просто вариант подучиться тонкостям работы с другими приложениями тоже подначивает ) Тем более, что перехват/подмену/генерацию пакетов я в свое время уже изучил в достаточной степени и она мне неинтересна сейчас как факт.

Вот потому хочу реализовать оба способа ) Просто я такой - занимаюсь в свое удовольствие )
12/02/2009 19:40 origmas#795
Quote:
Originally Posted by muzhig View Post
Как смотрите на такое?
Конечно я не очень спец, но так думаю, что когда дополнительный код работает в чужем процессе - он использует регистры по своему усмртрению, а клиент по своему, разделение времени для скрытия значений регистров в стек потребует наверное че-то с прерываниями делать, просто может произойти сбой работы клиента. вот если-бы наш код был компилирован вместе с кодом клиента в одной завязке - другое дело, но не знаю .. пробывать надо.

другими словами не будет синхронизации ..