не более чем бред, для того чтобы впарить трояна не надо MHS. Надо желание, троян и не более того. У вас видимо сударь более глубокие главные причины.
P.S. вообще рассуждения о морали странно слушать от людей которые ковыряют защищенную законодательством программу - не надо ребята лицемерить........
Ну, блин, не думал, что такой гемор будет с отправкой кнопочек клиенту. Причем пока всякие циферки и Ф-ки отправлял - все отлично было. А вот захотелось мне сделать процедуру экстренного свала из под огня. Ну, говорю, клиент . Жмакни мне тильдочку. А он мне в ответ - ты чо - сдурел шоли? Я тебе чо - текстовый редактор тильдочки жмакать? И вот тут у танка отвалилась башня. То нажимает, то не нажимает, то язык ему не тот. и т.д. и т.п. Короче проимелся я более 10 часов...
Вот вам результат... Может кому полезно будет...
Code:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~ procedures to send key pressing to client
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TaPWT.SendKey(aWindowHandle: HWND; aPWThreadID: Cardinal; Key: Word; const Shift: TShiftState; SpecialKey, EngLayout: Boolean);
type
TBuffers = array [0..1] of TKeyboardState;
var
pKeyBuffers: ^TBuffers;
lParam: LongInt;
Layout, tLayout: Cardinal;
i: integer;
begin
if EngLayout then
begin
Layout := LoWord(GetKeyboardLayout(aPWThreadID));
PostMessage(aWindowHandle, WM_INPUTLANGCHANGEREQUEST, 0, $00000409);
end;
Sleep(20);
AttachThreadInput(aPWThreadID, GetCurrentThreadId, true);
sleep(20);
pKeyBuffers := nil;
lParam := MakeLong(0, MapVirtualKey(Key, 0));
if SpecialKey then
lParam := lParam or $1000000;
New(pKeyBuffers);
try
GetKeyboardState(pKeyBuffers^[1]);
FillChar(pKeyBuffers^[0], SizeOf(TKeyboardState), 0);
if ssShift in Shift then
pKeyBuffers^[0][VK_SHIFT] := $80;
if ssAlt in Shift then
begin
pKeyBuffers^[0][VK_MENU] := $80;
lParam := lParam or $20000000;
end;
if ssCtrl in Shift then
pKeyBuffers^[0][VK_CONTROL] := $80;
SetKeyboardState(pKeyBuffers^[0]);
if ssAlt in Shift then
begin
PostMessage(aWindowHandle, WM_SYSKEYDOWN, Key, lParam);
PostMessage(aWindowHandle, WM_SYSKEYUP, Key, lParam or $C0000000);
end
else
begin
PostMessage(aWindowHandle, WM_KEYDOWN, Key, lParam);
PostMessage(aWindowHandle, WM_KEYUP, Key, lParam or $C0000000);
end;
sleep(50);
Application.ProcessMessages;
SetKeyboardState(pKeyBuffers^[1]);
finally
if pKeyBuffers <> nil then
Dispose(pKeyBuffers);
end;
AttachThreadInput(aPWThreadID, GetCurrentThreadId, false);
sleep(20);
if EngLayout then
for I := 1 to 10 do
if Layout <> LoWord(GetKeyboardLayout(aPWThreadID)) then
begin
PostMessage(aWindowHandle, WM_INPUTLANGCHANGEREQUEST, 0, Layout);
Sleep(20);
end
else
break;
end;
procedure TCharForm.Button5Click(Sender: TObject);
begin
aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VK_ESCAPE, [], false, true);
aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VkKeyScan('~'), [ssShift], false, true);
aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VK_DOWN, [], false, true);
aPWT.TextToClipboard('exit');
aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VkKeyScan('v'), [ssCtrl], false, true);
aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VK_RETURN, [], false, true);
end;
Вот рабочий проект с MFC на VC++ 6.0
Таргет работает, остальное не доделано, поймешь думаю по листингам
.. главное все в файлах - BotDlg.h и BotDlg.cpp
Если в PickLoot() убрать Sleep(500) или поставить Sleep(100) (в Настройках количество повторов 4) - работает О!чень быстро - бъет ближайшие от Перса цели в радиусе(по настройкам), лечит Пета, себя (Медитация там закоментирована, но можно включить как по клавише так и инжектом), переберает Умения по их перезарядке..
кстати - посыл клавишь на применение умений ничем не хуже инжекта .. попробуй.
Занимаясь созданием Бота, все больше убеждаюсь в его бесполезности, прокачивать перса - это хорошо получается, но сценарий игры требует многих вещей - компьютерная модель программного кода - не может определить как приобретать знания, умения, повышать квалификацию, звание, проходить квесты ..
Раздутый с помощью Бота - Персонаж, даже если ему потом купить разные "Форпосты Заката" - ничем не будет хорош ..
Над этим Дядей - лет в 90 - будут все только смеятся.
Единственно - Бот может помочь только выбивать с определенных Мобов определенные Плюшки ..
Нифига не смеялись - бот до 92 лвл исправно делал свою работу - таскал каштаны из огня (как сумашедший фармил мобов). Единственно нужная вещь для бота это фармить сутками (если это делать вживую то можно сойти с ума). Так что origmas ты пришел к правильному выводу, не надо ему никаких плюшек, это забава для ума, как прикрутить к боту хитрое умение, но никак не для жизни......
хыхы ) А вот если не фармбота пишешь - то совсем другая картинка получается. Гео летать надо. Яшму летать надо. Супостатов искать надо. Анти-ПК - вкусно. Автопот - полезно. Автоторг - прибыльней фарма. И никакого смеха.
посыл клавишь на применение умений ничем не хуже инжекта .. попробуй.
А вот и ХУЖЕ!!!
хотя бы тем, что ты не можешь в чате нормально отписать че нибудь- циферки вставляться будут
Quote:
Единственно - Бот может помочь только выбивать с определенных Мобов определенные Плюшки ..
Я ресы собираю- за ночь и утро 1-4кк - с одного бота. У меня их уже три. Не смеюсь.
Ресы сливаю прямо котам, которые стоят около кузнеца и скупают.
Был печальный опыт самостоятельной торговли- удар по рынку. Цену на ресы заломал в 3 раза.
антипк, гео, автояшма, автоторг - я думаю никому не нужно.. если бы было нужно то уже б давно соотв. утилиты были бы, авто пот на рынке уже представлен - ниче экстраординарного - а кому сколько их боты приносят то уже ДАВНО не интересно....я бы тоже тут цифрами пораскидывался но нах я кому нужен с ними ???
Эх, давно я тут не появлялся... Хотелось бы починить своего "умного" бота, переделанного из МХС, который оказался не рабочим в связи с 91 обновлением. Смотрю тут на страницах 116-120 вроде как сделали выделение цели через инжект на автоите. Но что-то я не совсем понимаю, какой именно код инжекта использовался? Вот этот?
На сколько я понял функции ассемблера были взяты из автогео, но я там почему-то не нашёл функцию MOV_EDI_DWORD_PTR_EDI. Где её взять или как она выглядит, подскажите?
И ещё Shamanpovt писал, что нашёл ошибки в функциях из автогео и исправил их.
антипк, гео, автояшма, автоторг - я думаю никому не нужно.. если бы было нужно то уже б давно соотв. утилиты были бы, авто пот на рынке уже представлен - ниче экстраординарного - а кому сколько их боты приносят то уже ДАВНО не интересно....я бы тоже тут цифрами пораскидывался но нах я кому нужен с ними ???
Ну. А я о чем ) Я ж и пишу - вкусно - но необязательно ) Я это делаю для себя и своих друзей )
Кстати, по секрету, в крупных кланах давно юзаются автогео, антипк и персфайндеры. Даже ХХ фармера одного видел )
А для меня, как я и говорил, это все - зарядка для мозгов. Играть мне все равно некогда )
Мда, зря я вопросы задавал. Попробовал всё на деле - заработало. Только строчку MOV_EDI_DWORD_PTR_EDI() закоментировал. Одного теперь не понимаю, в чём разница адресов 0098ADDC и 0098B47C? Первый для инжектов, второй для обычной подмены значений?
Кстати не нашёл тут, как на автоите сделать воскрешение в ближний город инжектом, хотя писали, что оно здесь есть. Но зато нашёл тут адрес функции воскрешения и сделал рабочее, не знаю, на сколько правильное, воскрешение.
И ещё хотелось бы сделать атаку питомцем через инжект. Кто-нибудь знает, как это сделать? Нашёл в этой теме адрес функции (005B7ED0), но похоже он не для нашей версии игры, а если и подходит, то всё равно не понимаю, как эту функцию вызывать. Банальное подставление в код воскрешения не работает.
Фанк, инжекты отличаются не только адресами, но и функционально (разный асм, иногда достаточно длинный и сложный). К сожалению, я тебе помочь не смогу, потому что не реализовывал эту функцию, но может кто-то и может