PDA

Просмотр полной версии : Книги, статьи, инфа и т.д. маст рид


Jok3r666
02.02.2012, 10:28
Просто подумал что тема имеет место быть.
Когда только пришел в этот раздел даже не знал с чего начать, что читать, куда рыть и т.д.

Давайте будем выкладывать ссылки на интересные материалы, кому что помогло в усвоении чего либо и т.д.
Надеюсь что получится неплохой мануал "Помощь в создании бота с ноля"

Что бы понять о чем речь, нужно узнать как читать информацию из памяти клиента.
Не помню откуда именно я это выхватил по этому напишу сам.


Во первых нам пригодится список текущих офсетов руофа [Ссылки могут видеть только зарегистрированные и активированные пользователи] и
function ConnectToPw: dword; //функция возвращает handle окна пв
var
WndHndl:Thandle;
PID,hprocess : dword;
begin
WndHndl:=findwindow(nil, pchar('Perfect World')); //Вписываем название окна клиента
GetWindowThreadProcessId(WndHndl, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
if hprocess<>0 then Result:=hprocess
else Result:=0; //Возвращаем 0 так как подключение не удалось.
end;


Для примера разберем структуру персонажа, будем искать текущее ХП перса.

Берем из статьи цепочку BaseAdress +0x1C +0x34 - это структура перса
+0x0490 HP, dword /Жизненная сила/ - это оффсет текущего значения ХП

0x - обозначает что значение в HEX

Как же нам прочитать эту цепочку и получить значение ХП в какую нибудь переменную?

Принцип получения информации в том, что нужно прочитать значение по первому адресу (BA так как он статичен), записать в переменную.
Потом к полученному значению прибавить оффсет, прочитать и снова записать в переменную, так мы и будем продолжать до конца цепочки.

BA сейчас = 00B27A04;
Пример на Delphi:


Procedure GetCurHp;
var
PwHandle : Dword;
BytesCount, ipbuf : Dword;
Hp:integer;
begin
//Поехали читать:
PwHandle:=ConnectToPW; //Получили Handle PW через функцию подключения

ReadProcessMemory(PwHandle, ptr($B27A04), @ipbuf, sizeof(ipbuf), BytesCount); //BaseAdress
ReadProcessMemory(PwHandle, ptr(ipbuf+$1c), @ipbuf, sizeof(ipbuf), BytesCount); //+0x1C
ReadProcessMemory(PwHandle, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount); // +0x34
ReadProcessMemory(PwHandle, ptr(ipbuf+$490), @HP, sizeof(HP), BytesCount); //+0x490
... //Делаем что нибудь с переменной (выводим, записываем и т.д.)
ShowMessage(inttostr(HP)); //Проверяем))
CloseHandle(PwHandle); //Закрываем Handle

Теперь в переменной HP лежит текущее значение ХП Персонажа



Поиск BA(можно искать любые офсеты по этой схеме): [Ссылки могут видеть только зарегистрированные и активированные пользователи]

"Патчер памяти" или "Пишем флайхак" [Ссылки могут видеть только зарегистрированные и активированные пользователи]

"Патчер памяти 2" или "Пишем Джампхак" [Ссылки могут видеть только зарегистрированные и активированные пользователи]

"Поиск инжектов" или "Наш код в чужом процессе" [Ссылки могут видеть только зарегистрированные и активированные пользователи]

Инжекты: [Ссылки могут видеть только зарегистрированные и активированные пользователи]

Если все это изучить и понять, то можно уже написать простенького бота, а дальше лучше.)


---------------------------------------------------------
ЗЫ По стандарту: Тапками не кидать/problem
ЗЫЫ Приму любую адекватную критику
ЗЫЫЫ Надеюсь вы мне поможете с добавлениями материалов в эту тему:z:

Добавлено через 21 минуту
Может кто знает где найти статью по виртуальной памяти приложения, растолкованную на пальцах? Где, что, куда, как все устроено и т.д.

VeTaL_UA
02.02.2012, 10:58
Приму любую адекватную критику
Зачем делать статью о том, что и так всем понятно по подсказкам компилятора? /horror

Jok3r666
02.02.2012, 13:08
Зачем делать статью о том, что и так всем понятно по подсказкам компилятора? /horror

Тут я хотел сделать основное направление поста "сбор статей" и т.д. что бы было удобнее изучать ботмейкерство пв.

ЗЫ Я знал минимальные основы делфи и что бы допереть что да как все статьи по 10 раз перечитал пока врубился как инфу читать из клиента.

ЗЫЫ А ты о чем конкретно?

VeTaL_UA
02.02.2012, 13:38
ЗЫЫ А ты о чем конкретно?
Об этом ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).

Jok3r666
02.02.2012, 14:02
Об этом ([Ссылки могут видеть только зарегистрированные и активированные пользователи]).

Да просто на всякий случай расписал /problem

Sirioga
02.02.2012, 15:10
Об этом.
Впервые используя winapi в теле FreeBASIC я пользовался редактором не поддерживающим подсказки как таковые вообще, и пользовался msdn для просвящения, а так же просматривал инклюд с объявлением winapi функций. Ботов пишут не только на Delphi;) За сим вопрос, разве плохо иметь наглядный пример на форуме?)

VeTaL_UA
02.02.2012, 15:11
разве плохо иметь наглядный пример на форуме?
Оно то не плохо, только пример этот ущербный ;)

Sirioga
02.02.2012, 15:21
Оно то не плохо, только пример этот ущербный
Может быть и так, ничто не мешает подсказать ТСу, как будет лучше описать пример, и возможно он отредактирует своё первое сообщение) Хотя в тех же ссылках под more с названием Delphi, Dinmaite ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) хорошо описывает эту и другие функции.

Jok3r666, а ты пожалуйста посвяти меня в тайну, как работать с памятью не открыв её?) Кстати, о открытии и закрытии по окончанию работы, msdn тоже предупреждает. Предоставить середину кода без начала и конца не есть хорошим примером.

VeTaL_UA
02.02.2012, 15:24
Хотя в тех же ссылках под more с названием Delphi, Dinmaite хорошо описывает эту и другие функции.

Jok3r666, а ты пожалуйста посвяти меня в тайну, как работать с памятью не открыв её?) Кстати, о открытии и закрытии по окончанию работы, msdn тоже предупреждает. Предоставить середину кода без начала и конца не есть хорошим примером.
Я об этом и хочу сказать. Надеюсь, что
ТС отредактирует своё первое сообщение)

Jok3r666
02.02.2012, 20:13
как работать с памятью не открыв её?
Как раз хотел вылажить функцию, но что т затушевался.

Ща займусь)

Choochoo
05.02.2012, 11:38
Мое мнение конечно.... но не зная тот же делфи на достаточном уровне нечего браться за написание бота вообще. Работа эта конечно очень интересная, но нетривиальная, со сложной логикой. В итоге или напишется очередной дерьмобот (прошу не банить ) каких много в интернете. Либо автор сам запутается в логике и бросит свое творение.

VeTaL_UA
05.02.2012, 12:03
Choochoo, полностью поддерживаю ваше мнение. Часто новички останавливаются на такой схеме бота:
_____________________
Tab => | Atack => MobHP=0 | => Tab
| || |
| \/ | => Цикл
| MobHP<>0 => Attack |
_____________________

Jok3r666
05.02.2012, 18:11
нечего браться за написание бота вообще
По моему нужно браться за все к чему лежит, пусть первый раз получится дерьмо бот, но это все же бесценный опыт, на второй раз будет уже лучше или может не будет, но опыт приобретен и возможно он пригодится в чем то другом. ИМХО

dobik
17.07.2012, 16:08
Подкиньте плиз еще хороших ссылок, у кого есть. Тоже только пришел, глаза разбегаются. Пишу бота на C# на инжектах.

vogel
18.07.2012, 01:44
Вот! ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) самая лучшая ссылка - там ты найдёшь ответы на все вопросы.