Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Perfect World
You last visited: Today at 20:20

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Rus. server

Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.

Reply
 
Old 01/14/2010, 06:28   #1246
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Quote:
а он не бежит до лута
а с чем же здесь помогать? $005B7B00 – позволяет поднять лут, возле которого надо стоять; она не обеспечивает движение к цели. При использовании данной функции, вначале надо организовать движение чара по координатам лута
dwar is offline  
Old 01/14/2010, 07:06   #1247
 
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
Все равно не поднимает!
Стою прям на луте, жму и не как!
ID и SN хоть верно ли получаю, и туда ли вставляю?
Barmank is offline  
Old 01/14/2010, 07:17   #1248
 
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
Побывал поменять местами Sn и ID эффект прикольный, вешь исчезает в инвентаре не появляется, а при пере заходе лежит там где лежала!
Barmank is offline  
Old 01/14/2010, 07:51   #1249
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Quote:
ID и SN хоть верно ли получаю, и туда ли вставляю?
[BA] + $1C + $8 + $28 + $18 + $i*4 + $4 : Loot desk
$10C WID ( dword, 4)
$110 Id ( dword, 4)

+ Стоит ItemSn и ItemID перед помещением в стек записать в регистр
dwar is offline  
Thanks
1 User
Old 01/14/2010, 08:19   #1250
 
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
Quote:
Originally Posted by dwar View Post
[BA] + $1C + $8 + $28 + $18 + $i*4 + $4 : Loot desk
$10C WID ( dword, 4)
$110 Id ( dword, 4)

+ Стоит ItemSn и ItemID перед помещением в стек записать в регистр
Спс за подсказку!
Можно еще одну в какой регистр стоит записывать ItemSn и ItemID чтобы не нарушить стек, а лучше, если можно, готовый кусок асма, а то я с ним как то на ВЫ.
Barmank is offline  
Old 01/14/2010, 08:43   #1251
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
Code:
 procedure PickItem(aPParams: PParams); stdcall;
var
  Pa1,Pa2       : DWORD;
  PW_Call       : DWORD;
  PW_BASE_ADDR  : DWORD;
begin
  Pa1:=aPParams^.Param1;
  pa2:=aPParams^.Param2;
  PW_Call := $005B7B00;
  PW_BASE_ADDR  := $0098ADDC;
  asm
    pushad
    mov   edx, PW_BASE_ADDR
    mov   edx, DWORD PTR [edx]
    mov   eax, Pa1
    push  eax                  // Item SN
    mov   ecx, Pa2
    push  ecx                  // Item ID
    mov   ecx, DWORD PTR [edx+$20]
    add   ecx, $EC
    call  PW_Call
    popad
  end;
end;
Added:
С подбором лута, скорее всего, надо вопрос по-другому ставить: а будет ли чар вообще что-либо поднимать посредством данной инъекции? Где-то на 80 страницах был приведен пример, взятый с китайских форумов, по «полному» поднятию лута: помимо вызова функции 005B7B00, надо еще и пакет отправить, сказав серверу – «такой-то предмет поднят»
dwar is offline  
Old 01/14/2010, 09:14   #1252
 
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
Или я туплю или лыжи не едут
Не хочет подбирать, уже кидаю лут себе под ноги и пытаюсь поднять его!
инжект функцию брал отсюда
Barmank is offline  
Old 01/14/2010, 10:24   #1253
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
Quote:
Originally Posted by dj_al View Post
Приведи код инжекта, что у тебя получился, после убирания try except.
static DWORD WINAPI SelectMonster(LPCVOID lpParam )
{
DWORD BaseAddress = 0x0098ADDC;
DWORD CallAddress = 0x005B7B70;
DWORD MonsterID = (DWORD)lpParam;
__asm
{
mov eax, BaseAddress
mov eax, dword ptr[eax]
mov edi, MonsterID
mov edi, [edi]
push edi
mov ecx, dword ptr[eax+0x20]
add ecx, 0xEC
mov edx, CallAddress
call edx
}

return 0;
}

bool CbotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
{
HANDLE hThread = NULL;
LPVOID ThreadCodeAddr = NULL; //Inject Fuction Address after allocate
LPVOID ThreadDataAddr = NULL; //Inject Fuction Stack Address after allocate
LPVOID Func = SelectMonster; //Inject Function
DWORD ThreadID; //
DWORD dwWritten; //
ThreadCodeAddr=VirtualAllocEx(hProcess,NULL,256,ME M_COMMIT,PAGE_READWRITE);
ThreadDataAddr=VirtualAllocEx(hProcess,NULL,64,MEM _COMMIT,PAGE_READWRITE);

WriteProcessMemory(hProcess,ThreadCodeAddr,Func,25 6,&dwWritten);
WriteProcessMemory(hProcess,ThreadDataAddr,lpParam ,64,&dwWritten);

hThread = CreateRemoteThread(hProcess,NULL,NULL,(LPTHREAD_ST ART_ROUTINE)ThreadCodeAddr,ThreadDataAddr,NULL,&Th readID);
if (!hThread) return false;
else WaitForSingleObject(hThread,INFINITE);
CloseHandle(hThread);
VirtualFreeEx(hProcess,ThreadCodeAddr,256,MEM_RELE ASE);
VirtualFreeEx(hProcess,ThreadDataAddr, 64,MEM_RELEASE);
//CloseHandle(hProcess);
return true;
}

Вот последний вариант. все-равно клиент валится
gen-ostr is offline  
Old 01/15/2010, 04:01   #1254
 
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
не знаю насчет всего остального, но вот в ассме ошибка:
mov edi, [edi]
В стек надо помещать MonsterID, а не содержимое ячейки по адресу MonsterID, т.е.
Code:
 __asm 
{
pushad
   mov eax, BaseAddress 
   mov eax, dword ptr[eax] 
   mov edi, MonsterID 
   push edi 
   mov ecx, dword ptr[eax+0x20] 
   add ecx, 0xEC
   mov edx, CallAddress 
   call edx
popad
}
dwar is offline  
Old 01/15/2010, 06:04   #1255
 
elite*gold: 0
Join Date: Jul 2008
Posts: 43
Received Thanks: 16
Quote:
Originally Posted by dwar View Post
не знаю насчет всего остального, но вот в ассме ошибка:
mov edi, [edi]
В стек надо помещать MonsterID, а не содержимое ячейки по адресу MonsterID
У него тама всё нормально идёт с этим вроде как... Посмотри на передачу параметров.

DWORD MonsterID = (DWORD)lpParam; - это не взятие значения по указателю, а смена типа, в результате MonsterID перед асмовским кодом - фактически содержит указатель на блок памяти.

Хотя тут в связи с этим возникла идея. Мил человек, а покажи как ты вызываешь: bool CbotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
dj_al is offline  
Old 01/15/2010, 07:09   #1256
 
elite*gold: 0
Join Date: Nov 2009
Posts: 12
Received Thanks: 1
А что передаётся как MonsterID?
Адреса то верные?
muchenberg is offline  
Old 01/15/2010, 08:29   #1257
 
elite*gold: 0
Join Date: Nov 2009
Posts: 8
Received Thanks: 0
Ребят, влезу со своим немного нестандартным вопросом. А именно никак не могу выцепить все pointer'ы для того чтобы получать название местности где сейчас находится персонаж. с помощью CE дохожу где-то до 4го уровня и стопорюсь. до какого либо статического адреса добраться так и не могу(((

Если у кого-то есть опыт получения текстовых значений, подскажите, пожалуйста в каком направлении копать.
Alexhomp is offline  
Old 01/15/2010, 08:32   #1258
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
CallRemoteFunction(Proc ,(LPVOID) MobID); где MobID- ReadProcessMemory(Proc,(LPCVOID)(Buf+_MobID),&MobI D,4,0). адреса думаю верные, так как вся инфа по мобу считывается правильно.
gen-ostr is offline  
Old 01/15/2010, 10:13   #1259
 
elite*gold: 0
Join Date: Oct 2007
Posts: 11
Received Thanks: 3
Всем привет! Давненько я тут не появлялся)

Ребя смотрю вы глубоко уже влезли в дебри инжектирования. Респект!

Так а теперь непосредственно что я хотел вас как гуру попросить.
Кому не сложно сделать небольшую программу.
Суть программы: должна цепляться к клиенту и инжектировать согласие на слом оружия. С возможностью регулировать количество инжектов и скорости отправки в ms непосредственно в самой программе а не в конфигурационном файле ( просто чтоб быстрее подобрать соотношения ).

Зачем мне это надо? Не помню тут встречал или на каком нить другом форуме. Но человек отписал что смог ломать одну и ту же пуху 5-8 раз. В итоге с 1-го фиолета имел 2*5 = 10 миражей.

Надеюсь это будет для вас не слишком сложным.

Так же возможно стоит попробовать с посылкой заточки, впаивания камней.
ta2we4ka is offline  
Old 01/15/2010, 10:33   #1260
 
muzhig's Avatar
 
elite*gold: 0
Join Date: Sep 2009
Posts: 85
Received Thanks: 27
Quote:
PickCallAddr1=$42A790 ;
PickCallAddr2=$5B7B00;

procedure PickCall(aPParams: PParams);
var
p1: DWORD;

begin
p1:=aPParams^.Param1;
asm
pushad
mov ecx, dword ptr [PW_BASE_ADDRESS]
mov ecx, dword ptr [ecx + $1C] // +1c CECGameRun ; ecx=9771BC
mov ecx, dword ptr [ecx+$8]
push 0
mov eax,p1
push eax
mov edx, PickcallAddr1
call edx
mov eax, [eax+$110]
mov ecx, [PW_BASE_ADDRESS]
mov ecx, [ecx+$20]
add ecx, $EC
push eax
mov edx,p1
push edx
mov edx, PickcallAddr2
call edx
popad
end;
end;

procedure TPW.Pick(wid:dword);
var
aParams : TParams;
begin
aParams.Param1 := wid;
InjectFunc(@PickCall, @aParams, SizeOf(aParams));
end;
Это у меня работает как часы. Но стоять надо около лута.
Первый CALL получает PTR на объект по WID, +110 это его SN, насколько я потом понял, но менять уже не стал.
muzhig is offline  
Reply




All times are GMT +1. The time now is 20:21.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.