а с чем же здесь помогать? $005B7B00 – позволяет поднять лут, возле которого надо стоять; она не обеспечивает движение к цели. При использовании данной функции, вначале надо организовать движение чара по координатам лута
+ Стоит ItemSn и ItemID перед помещением в стек записать в регистр
Спс за подсказку!
Можно еще одну в какой регистр стоит записывать ItemSn и ItemID чтобы не нарушить стек, а лучше, если можно, готовый кусок асма, а то я с ним как то на ВЫ.
Added:
С подбором лута, скорее всего, надо вопрос по-другому ставить: а будет ли чар вообще что-либо поднимать посредством данной инъекции? Где-то на 80 страницах был приведен пример, взятый с китайских форумов, по «полному» поднятию лута: помимо вызова функции 005B7B00, надо еще и пакет отправить, сказав серверу – «такой-то предмет поднят»
не знаю насчет всего остального, но вот в ассме ошибка: mov edi, [edi]
В стек надо помещать MonsterID, а не содержимое ячейки по адресу MonsterID, т.е.
не знаю насчет всего остального, но вот в ассме ошибка: mov edi, [edi]
В стек надо помещать MonsterID, а не содержимое ячейки по адресу MonsterID
У него тама всё нормально идёт с этим вроде как... Посмотри на передачу параметров.
DWORD MonsterID = (DWORD)lpParam; - это не взятие значения по указателю, а смена типа, в результате MonsterID перед асмовским кодом - фактически содержит указатель на блок памяти.
Хотя тут в связи с этим возникла идея. Мил человек, а покажи как ты вызываешь: bool CbotDlg::CallRemoteFunction(HANDLE hProcess, LPVOID lpParam)
Ребят, влезу со своим немного нестандартным вопросом. А именно никак не могу выцепить все pointer'ы для того чтобы получать название местности где сейчас находится персонаж. с помощью CE дохожу где-то до 4го уровня и стопорюсь. до какого либо статического адреса добраться так и не могу(((
Если у кого-то есть опыт получения текстовых значений, подскажите, пожалуйста в каком направлении копать.
CallRemoteFunction(Proc ,(LPVOID) MobID); где MobID- ReadProcessMemory(Proc,(LPCVOID)(Buf+_MobID),&MobI D,4,0). адреса думаю верные, так как вся инфа по мобу считывается правильно.
Ребя смотрю вы глубоко уже влезли в дебри инжектирования. Респект!
Так а теперь непосредственно что я хотел вас как гуру попросить.
Кому не сложно сделать небольшую программу.
Суть программы: должна цепляться к клиенту и инжектировать согласие на слом оружия. С возможностью регулировать количество инжектов и скорости отправки в ms непосредственно в самой программе а не в конфигурационном файле ( просто чтоб быстрее подобрать соотношения ).
Зачем мне это надо? Не помню тут встречал или на каком нить другом форуме. Но человек отписал что смог ломать одну и ту же пуху 5-8 раз. В итоге с 1-го фиолета имел 2*5 = 10 миражей.
Надеюсь это будет для вас не слишком сложным.
Так же возможно стоит попробовать с посылкой заточки, впаивания камней.
procedure TPW.Pick(wid:dword);
var
aParams : TParams;
begin
aParams.Param1 := wid;
InjectFunc(@PickCall, @aParams, SizeOf(aParams));
end;
Это у меня работает как часы. Но стоять надо около лута.
Первый CALL получает PTR на объект по WID, +110 это его SN, насколько я потом понял, но менять уже не стал.