|
You last visited: Today at 20:20
Advertisement
Rus. server
Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.
01/14/2010, 06:28
|
#1246
|
elite*gold: 0
Join Date: Apr 2009
Posts: 237
Received Thanks: 403
|
Quote:
а с чем же здесь помогать? $005B7B00 – позволяет поднять лут, возле которого надо стоять; она не обеспечивает движение к цели. При использовании данной функции, вначале надо организовать движение чара по координатам лута
|
|
|
01/14/2010, 07:06
|
#1247
|
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
|
Все равно не поднимает!
Стою прям на луте, жму и не как!
ID и SN хоть верно ли получаю, и туда ли вставляю?
|
|
|
01/14/2010, 07:17
|
#1248
|
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
|
Побывал поменять местами Sn и ID эффект прикольный, вешь исчезает в инвентаре не появляется, а при пере заходе лежит там где лежала!
|
|
|
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 перед помещением в стек записать в регистр
|
|
|
01/14/2010, 08:19
|
#1250
|
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
|
Quote:
Originally Posted by dwar
[BA] + $1C + $8 + $28 + $18 + $i*4 + $4 : Loot desk
$10C WID ( dword, 4)
$110 Id ( dword, 4)
+ Стоит ItemSn и ItemID перед помещением в стек записать в регистр
|
Спс за подсказку!
Можно еще одну в какой регистр стоит записывать ItemSn и ItemID чтобы не нарушить стек, а лучше, если можно, готовый кусок асма, а то я с ним как то на ВЫ.
|
|
|
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, надо еще и пакет отправить, сказав серверу – «такой-то предмет поднят»
|
|
|
01/14/2010, 09:14
|
#1252
|
elite*gold: 0
Join Date: Dec 2009
Posts: 31
Received Thanks: 3
|
Или я туплю или лыжи не едут 
Не хочет подбирать, уже кидаю лут себе под ноги и пытаюсь поднять его!
инжект функцию брал отсюда
|
|
|
01/14/2010, 10:24
|
#1253
|
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
|
Quote:
Originally Posted by dj_al
Приведи код инжекта, что у тебя получился, после убирания 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;
}
Вот последний вариант. все-равно клиент валится
|
|
|
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
}
|
|
|
01/15/2010, 06:04
|
#1255
|
elite*gold: 0
Join Date: Jul 2008
Posts: 43
Received Thanks: 16
|
Quote:
Originally Posted by dwar
не знаю насчет всего остального, но вот в ассме ошибка:
mov edi, [edi]
В стек надо помещать MonsterID, а не содержимое ячейки по адресу MonsterID
|
У него тама всё нормально идёт с этим вроде как... Посмотри на передачу параметров.
DWORD MonsterID = (DWORD)lpParam; - это не взятие значения по указателю, а смена типа, в результате MonsterID перед асмовским кодом - фактически содержит указатель на блок памяти.
Хотя тут в связи с этим возникла идея. Мил человек, а покажи как ты вызываешь: bool CbotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
|
|
|
01/15/2010, 07:09
|
#1256
|
elite*gold: 0
Join Date: Nov 2009
Posts: 12
Received Thanks: 1
|
А что передаётся как MonsterID?
Адреса то верные?
|
|
|
01/15/2010, 08:29
|
#1257
|
elite*gold: 0
Join Date: Nov 2009
Posts: 8
Received Thanks: 0
|
Ребят, влезу со своим немного нестандартным вопросом. А именно никак не могу выцепить все pointer'ы для того чтобы получать название местности где сейчас находится персонаж. с помощью CE дохожу где-то до 4го уровня и стопорюсь. до какого либо статического адреса добраться так и не могу(((
Если у кого-то есть опыт получения текстовых значений, подскажите, пожалуйста в каком направлении копать.
|
|
|
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). адреса думаю верные, так как вся инфа по мобу считывается правильно.
|
|
|
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 миражей.
Надеюсь это будет для вас не слишком сложным.
Так же возможно стоит попробовать с посылкой заточки, впаивания камней.
|
|
|
01/15/2010, 10:33
|
#1260
|
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, насколько я потом понял, но менять уже не стал.
|
|
|
All times are GMT +1. The time now is 20:21.
|
|