![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Кибор - интегрированная среда разработки ботов.
Кибор - среда, специально заточенная для удобного написания скриптов для автоматизации действий на компьютере. В частности написания ботов к различным онлайн играм. Си образный синтаксис довольно прост для понимания и гибок. Кибор имеет два антиантикликера для обхода защит GameGuard, Frost и других. Имеет сервисы для защита авторских прав разработчиков скриптов и удобного управления лицензированием пользователей. Форум Кибор Скачать Кибор vt ![]() ![]() |
|
#2
|
|||
|
|||
|
Список функций Кибор
Указатель на окно или контролл, привязка потока, определение курсораwindow - Получает указатель на окно или контрол getwindow - Позволяет получить указатель на окно или контролл по указанным координатам attach - Привязывает поток для определения типа курсора getcursor - Определение типа курсора Управление окнами movewindow - Переименование, сдвиг и изменение размеров окон moveclient - Переименование окна, сдвиг и изменение размеров окон (клиентские координаты, без оконтовки окна) activate - Активировать окно start- Открытие файлов и запуск программ sendlanguage- Меняет раскладку языка в окне Отправка любых сообщений в систему sendmessage - Отправляет заданное сообщение окну или окнам с ожиданием postmessage - Отправляет заданное сообщение окну или окнам без ожидания Управление клавиатурой key - Нажать и отпустить клавиатурную клавишу keydown - Нажать клавиатурную клавишу keyup - Отпустить клавиатурную клавишу В не активное окно sendkey - Отправить нажатие клавиатуры в не активное окно напрямую sendtext - Отправить текст окну или контролу Управление мышью mouse - Клик кнопкой мыши mousedown - Нажать кнопку мыши mouseup - Отпустить кнопку мыши mousedbl - Двойной клик мышью mousemove - Переместить мышь на новые координаты mousetransfer - Плавное перетаскивание мыши с зажатыми или нет кнопками В не активное окно sendmouse - Делает клик мышки в не активном или свернутом окне или контроле sendmousedown - Делает нажатие мышки в не активном или свернутом окне или контроле sendmousetransfer - Перетаскивание мышки в не активном или свернутом окне или контроле sendmouseup - Отпускает зажатую кнопку мыши в не активном или свернутом окне или контроле sendmousedbl - Двойной клик мышки в не активном или свернутом окне или контроле sendmousemove - Переместить мышь на новые координаты в не активном или свернутом окне или контроле Управление контроллами в приложениях button- Отправить нажатие на кнопку в другой программе Загрузка изображений в память Кибор, определение размера loadimage- Загрузить изображение в память программы с файла imagewidth- Получить ширину загруженного в память Кибор изображения imageheight- Получить высоту загруженного в память Кибор изображения Сканирование изображения экрана finddynamic- Искать динамично меняющиеся области экрана findimage- Искать изображение на экране по маске изображения загруженного в память Кибор findheapcolor- Ищет области на которых есть скученности пикселей определенных цветов getcolor- Получить цвет пикселя scanpixel- Сравнивает введенный цвет с цветом пикселя в веденных координатах ориентируясь на разбежности в цветах RGB findcolor- Найти все координаты всех пикселей указанного цвета Получение скриншотов, сохранение их в файл и в памяти Кибор screen- Делает скрин окна и записывает его в память Кибор в двухмерный массив int savescreen- Делает скрин окна и сохраняет его на диск файлом .bmp .png .jpg saveimage- Сохраняет на диск файлом .bmp .png .jpg загруженный ранее или созданный программно двухмерный массив int в котором хранится изображение Получение информации о нажатых кнопках и координатах мыши getkeystate- Определение статуса (нажата-не нажата) клавиша клавиатуры или кнопки мышки (коды клавиш) getmouse- Получить текущие координаты мышки Открытие процессов. Чтение и запись в память других программ openprocess- Открыть процесс для чтения или записи в его память findmemory- Поиск любых данных в памяти процесса findmemorymask- Поиск данных в памяти процесса по маске (не учитывая некоторые байты в поиске) readmemory- Читает байты с памяти процесса writememory- Записывает байты в память процесса freezememory- Записывает в память процесса по указанному адресу набор байт и замораживает их (то есть не дает программе изменить их) freememory- Размораживат замороженные данные Работа с интернетом opensocket- Откывает сокет sendhtml- Отправляет байты на сервер recvhtml- Принимает ответ от сервера closesocket- Закрыть сокет |
|
#3
|
|||
|
|||
|
Чтение и запись в файлы
fopen- Открыть файл для чтения или записи (текстовый и бинарный режим) fclose- Закрыть открытый ранее файл fwrit- Запись в открытый файл (текстовый и бинарный режим) fread- Читает с открытого файла (текстовый и бинарный режим) freadline- Чтение строки с файла Работа с временем, паузы sleep- Приостановить выполнение скрипта на время с заморозкой Кибор pause- Приостановить выполнение скрипта на время без заморозки Кибор gettime- Получить время в милисекундах прошедшее с запуска компьютера getlocaltime- Получить локальное время в формате Год - ... - милисекунды Работа с буфером обмена writeclipboard- Запись в буфер обмена readclipboard- Чтение с буфера обмена Вывод текста на экран textbkcolor- Установка цвета текста и фона для вывода его непосредственно на экран textout- Вывод текста на экран enabletextout- Отключить показ текста на экране disabletextout- Включить показ текста на экране resettextout- Сбросить текст Преобразование одного типа данных к другому format- Привод целго число int или дробного double к string formatsn- Преобразование строк в которых записаны числа в натуральное число int или double formatci- Возвращает int char'а значения в параметре formatic- Возвращает char чисового значения в параметре strcpy- Копирование string в массив char codhex- Переводит целые или дробные числа (до 4 байт) в HEX (справа на лево) Математические и геометрические функции pow- Вычисление возведения в степень sqrt- Вычисление корня cos- Возвращает косинус угла в градусах sin- Возвращает синус угла в градусах tan- Возвращает тангенс угла в градусах acos- Возвращает акосинус asin- Возвращает асинус atan- Возвращает атангенс Сортировка sort- Сортирует данные в массиве. Так же сортирует координаты в двухмерном массиве по расстоянию от указанной точки Определение размера данных size- Возвращает количество элементов массива char до первого нуля Звук beep- Звучит звуковой сигнал Рандом rand- Получение рандомного числа keymouserand- Рандомизирует паузу между нажатиями клавиш mousedblrand- Рандомизирует паузу мыши между двойным кликом Работа с экраном getdisplay- Получить данные о цветности и разрешение экрана senddisplay- Изменить цветность или разрешение экрана update- Обновить окно Ввод данных в процессе работы скрипта input- Вывод диалогового окна для ввода данных Вывод сообщений messagebox- Вывод текстового сообщения messageboxyn- Вывод текстового сообщения с кнопками (Да Нет) messageboxync- Вывод текстового сообщения с кнопками (Да Нет Отмена) Интерфейс Кибор и графическая оболочка и управление контроллами создаваемого EXE. sendcontrol- Отправляет данные контролу созданному в Кибор getcontrol- Считывает данные с контрола созданного в Кибор close- Программное закрытие Кибор или собранного EXE rename - Переименовать окно Кибор - rename("Новое имя") Антиантикликер antianticlicker- Программное выключение и включение антиантикликера Получение индивидуального ключа компьютера individualcode - возвращает string в котором находится индивидуальный ключ машины на котором запущен. Тот который можно узнать в окне О программе. Программная установка настроек options - позволяет программно настроить программу как в меню - настройки. Использовать для изменения настроек в собранном EXE |
|
#4
|
||||
|
||||
|
1. Если это серьезный игровой проект, то так просто доступ к процессам, окнам вы не получите.
2. Действия такого бота достаточно несложно вычисляются, т.к. как правило имеют одинаковые интервалы между действиями и ненормально высокую реакцию на них. Если же умышленно вносить в код разные замедлители, то такой бот становится хуже игрока и смысл в нем напрочь теряется. |
|
#5
|
|||
|
|||
|
Цитата:
Вот видео бота написанного в Кибор для линейки где стоит защита http://youtu.be/yaKTWaArQgk Цитата:
Вот видео бота сделанного в Кибор для DarkOrbit http://youtu.be/9PpTVUeGuKs Посмотрите где там одинаковые действия? Этот бот работает уже более 8 месяцев и ни разу никого не спалили и он не потерял работоспособность при обновлениях.. Кроме одного раза когда перестал видеть коробки из за того что изменили их вид. Поправил и все. |
|
#6
|
|||
|
|||
|
Несколько примеров скриптов и видео работы ботов..
Реализация бота игры Три В Ряд (Анализ экрана. Кликер) Скачать там рисунки надо.. Видео работы https://youtu.be/9PkE5rO6ZUM Скрипт Код:
int r=55, p=70, r1=10, p1=90;
int start_game[14][8], fishki[8][25][25], screen_game[182][182];
int X, Y, col, xe, ye, stx, sty, fx, fy, rx, ry;;
int Xk[7][7], Yk[7][7], Nk[7][7], KL[7][7], Xf[49], Yf[49];
if (load_image()==-1){messagebox ("Ошибка загрузки рисунка."); goto er;}
getdisplay(col, xe, ye);
sleep(500);
if (findimage(1, #start_game[0][0], 0, #X, #Y, 0, 0, xe, ye, r1, r1, r1, r1, r1, r1, p1, 1, -1)!=1){messagebox ("Не нашли игру."); goto er;}
stx=X+68; sty=Y+3; fx=X+237; fy=Y+173;
rx=fx-stx; ry=fy-sty;
Xk[0][0]=14; Yk[0][0]=14;//24
mouse (LEFT, X-50, Y+50);
for (int nx=0; nx<7; nx++)
{
for (int ny=0; ny<7; ny++)
{
Xk[nx][ny]=Xk[0][0]+nx*24;
Yk[nx][ny]=Yk[0][0]+ny*24;
}
}
loop:
if (find()==-1) goto er;
hod();
sleep (100);
mouse (LEFT, X-50, Y+50);
jh: finddynamic(0, #Xf[0], #Yf[0], 0, 0, 0, 0, stx, sty, fx, fy, -1);
sleep(150);
if (finddynamic(1, #Xf[0], #Yf[0], 1, 1, 5, 5, stx, sty, fx, fy, -1)==1){sleep(50); goto jh;}
goto loop;
er:;
function find()
{
int kol=0, k, k1;
ss: screen (#screen_game[0][0], stx, sty, fx, fy, -1);
k=0; k1=0;
for (int n=0; n<8; n++)
{
k=findimage(-1, #fishki[n][0][0], -1, #Xf[0], #Yf[0], 0, 0, rx, ry, r, r, r, r, r, r, p, 1, #screen_game[0][0]);
k1=k1+k;
for (int a=0; a<k; a++)
{
for (int nx=0; nx<7; nx++)
{
for (int ny=0; ny<7; ny++)
{
if (Xk[nx][ny]-(Xf[a]+10)<10 && (Xf[a]+10)-Xk[nx][ny]<10 && Yk[nx][ny]-(Yf[a]+10)<10 && (Yf[a]+10)-Yk[nx][ny]<10)
{
Nk[nx][ny]=n;
goto df;
}
}
}
df:;
}
}
if (k1!=49)
{
sleep(100);
kol++;
if (kol<5)goto ss;
else return -1;
}
/*
finddynamic(0, #Xf[0], #Yf[0], 0, 0, 0, 0, stx, sty, fx, fy, -1);
sleep(300);
if (finddynamic(1, #Xf[0], #Yf[0], 1, 1, 5, 5, stx, sty, fx, fy, -1)==0)return 1;
else goto ss;
*/
return 1;
}
function hod()
{
for (nx=0; nx<5; nx++)
{
//for (ny=0; ny<6; ny++)
for (ny=5; ny>-1; ny--)
{
if (Nk[nx][ny+1]==Nk[nx+1][ny] && Nk[nx][ny+1]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny+1], sty+Yk[nx][ny+1]);
return;
}
/////
if (Nk[nx][ny]==Nk[nx+1][ny+1] && Nk[nx][ny]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx+1][ny+1], sty+Yk[nx+1][ny+1]);
return;
}
/////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+2][ny+1])
{
mouse_hod (stx+Xk[nx+2][ny+1], sty+Yk[nx+2][ny+1], stx+Xk[nx+2][ny], sty+Yk[nx+2][ny]);
return;
}
}
}
/////////////////////
for (nx=0; nx<5; nx++)
{
//for (ny=1; ny<7; ny++)
for (ny=6; ny>0; ny--)
{
if (Nk[nx][ny-1]==Nk[nx+1][ny] && Nk[nx][ny-1]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx][ny-1], sty+Yk[nx][ny-1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny-1] && Nk[nx][ny]==Nk[nx+2][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx+1][ny-1], sty+Yk[nx+1][ny-1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+2][ny-1])
{
mouse_hod (stx+Xk[nx+2][ny-1], sty+Yk[nx+2][ny-1], stx+Xk[nx+2][ny], sty+Yk[nx+2][ny]);
return;
}
///////
}
}
/////////////////////
for (nx=0; nx<4; nx++)
{
//for (ny=0; ny<7; ny++)
for (ny=6; ny>-1; ny--)
{
if (Nk[nx][ny]==Nk[nx+2][ny] && Nk[nx][ny]==Nk[nx+3][ny])
{
mouse_hod (stx+Xk[nx+1][ny], sty+Yk[nx+1][ny], stx+Xk[nx][ny], sty+Yk[nx][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny] && Nk[nx][ny]==Nk[nx+3][ny])
{
mouse_hod (stx+Xk[nx+2][ny], sty+Yk[nx+2][ny], stx+Xk[nx+3][ny], sty+Yk[nx+3][ny]);
return;
}
}
}
/////////////////////
////////////////??????????????????????????????
for (nx=0; nx<6; nx++)
{
//for (ny=0; ny<5; ny++)
for (ny=4; ny>-1; ny--)
{
if (Nk[nx+1][ny]==Nk[nx][ny+1] && Nk[nx+1][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx+1][ny], sty+Yk[nx+1][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx+1][ny+1] && Nk[nx][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx+1][ny+1], sty+Yk[nx+1][ny+1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx+1][ny+2])
{
mouse_hod (stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx+1][ny+2], sty+Yk[nx+1][ny+2]);
return;
}
///////
}
}
/////////////////////
////////////////??????????????????????????????
for (nx=1; nx<7; nx++)
{
//for (ny=0; ny<5; ny++)
for (ny=4; ny>-1; ny--)
{
if (Nk[nx-1][ny]==Nk[nx][ny+1] && Nk[nx-1][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny], sty+Yk[nx][ny], stx+Xk[nx-1][ny], sty+Yk[nx-1][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx-1][ny+1] && Nk[nx][ny]==Nk[nx][ny+2])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx-1][ny+1], sty+Yk[nx-1][ny+1]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx-1][ny+2])
{
mouse_hod (stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx-1][ny+2], sty+Yk[nx-1][ny+2]);
return;
}
///////
}
}
/////////////////////
//////////////>
for (nx=0; nx<7; nx++)
{
//for (ny=0; ny<4; ny++)
for (ny=3; ny>-1; ny--)
{
if (Nk[nx][ny]==Nk[nx][ny+2] && Nk[nx][ny]==Nk[nx][ny+3])
{
mouse_hod (stx+Xk[nx][ny+1], sty+Yk[nx][ny+1], stx+Xk[nx][ny], sty+Yk[nx][ny]);
return;
}
///////
if (Nk[nx][ny]==Nk[nx][ny+1] && Nk[nx][ny]==Nk[nx][ny+3])
{
mouse_hod(stx+Xk[nx][ny+2], sty+Yk[nx][ny+2], stx+Xk[nx][ny+3], sty+Yk[nx][ny+3]);
return;
}
}
}
//////////////
}
function mouse_hod(int x1, int y1, int x2, int y2)
{
mouse (LEFT, x1, y1);
sleep(500);
mouse (LEFT, x2, y2);
}
function load_image()
{
if (loadimage (#start_game[0][0], "C:\3_v_ryad\start_game.bmp")<1) return -1;
for (int n=0; n<8; n++)
{
if (loadimage (#fishki[n][0][0], "C:\3_v_ryad\"+format(n)+".bmp")<1) return -1;
}
return 1;
}============================================ Бот для На рыбалку в вк (Анализ экрана. Кликер) Скачать там рисунки надо.. Видео работы https://youtu.be/u4WYst6_rvA Скрипт Код:
win w;
int zabros[95][19];
int tyanut[60][18];
int zakrit[17][17];
int zakrit2[15][17];
int zakrit3[13][14];
int polosa[50][5];
int ok[31][20];
int x, y;
int xt, yt;
int r=10, p=90;
int zona_x1, zona_y1, zona_x2, zona_y2;
w=window ("На рыбалку - Mozilla Firefox");//изменить на свой указатель
if (w==0){messagebox ("не найденуказатель на браузер"); goto error;}
zona_x1=0; zona_y1=0; zona_x2=w.widthclient; zona_y2=w.heightclient;//установка зоны поиска весь браузер
if (load()==-1){messagebox ("не найдены рис в C:\fishing"); goto error;}//загрузка рис
pause(2000);
enabletimer(0);//включить таймер
//тут строим петлю работыц бота. с готовых функций.
//чем меньше тут кода тем понятнее логика
loop: if (zabrosit()==1)//заброс если есть кнопка такая
{
lov();//тянуть рыб
}
sleep(25);
goto loop;// идем на начало петли работы бота
error:;
//тут реализация функций с которых состоит сам бот
function zabrosit()//заброс если есть кнопка такая
{
if (findimage(1, #zabros[0][0], 0, #x, #y, 0, 0, w.widthclient, w.heightclient, w)==1)// если есть Забростиь жмем на нее и идем в цикл ловли
{
zona_x1=x-315; zona_y1=y-420; zona_x2=x+380; zona_y2=y+50;//установка зоны поиска только игра
mouse (LEFT, x, y, 0, w);
sleep(500);
return 1;//вернем 1 заброс был
}
return 0;//вернем 0 заброса не было
}
function lov()//тянуть рыб
{
lp: if (findimage(1, #tyanut[0][0], 0, #xt, #yt, zona_x1, zona_y1, zona_x2, zona_y2, w)==1)// если есть кнопка Тянуть продолжаем цикл ловли
{
disabletimer(0);//отключить таймер
if (findimage(1, #polosa[0][0], 0, #x, #y, zona_x1, zona_y1, zona_x2, zona_y2, w)==0)mousedown (LEFT, zona_x1+xt, zona_y1+yt, 0, w);//если середина полосы не окрашена жмем кнопку Тянуть
else mouseup (LEFT, zona_x1+xt, zona_y1+yt, 0, w);//если середина полосы окрашена отпускаем кнопку Тянуть
enabletimer(0);//включить таймер
}
goto lp;//идем на начало цикла ловли
}
function load()//загрузка рис
{
if (loadimage (#zabros[0][0], "C:\fishing\zabros.bmp")<1) return -1;//если не удача загрузки
if (loadimage (#tyanut[0][0], "C:\fishing\tyanut.bmp")<1) return -1;
if (loadimage (#zakrit[0][0], "C:\fishing\zakrit.bmp")<1) return -1;
if (loadimage (#zakrit2[0][0], "C:\fishing\zakrit2.bmp")<1) return -1;
if (loadimage (#zakrit3[0][0], "C:\fishing\zakrit3.bmp")<1) return -1;
if (loadimage (#polosa[0][0], "C:\fishing\polosa.bmp")<1) return -1;
if (loadimage (#ok[0][0], "C:\fishing\ok.bmp")<1) return -1;
return 1;//норм загрузка
}
CREATE_TIMER(0, 1000)//таймер каждую сек. проверка и закрытие табличек
{
//Добавление кода выполняемого по таймеру ......
if (findimage(1, #zakrit[0][0], 0, #x, #y, zona_x1, zona_y1, zona_x2, zona_y2, r, r, r, r, r, r, p, 1, w)==1)
{
mouse (LEFT, zona_x1+x+10, zona_y1+y+10, 0, w);
sleep(500);
goto loop;//если закрыли какое то окно лов закончен. идем на начало
}
if (findimage(1, #zakrit2[0][0], 0, #x, #y, zona_x1, zona_y1, zona_x2, zona_y2, r, r, r, r, r, r, p, 1, w)==1)
{
mouse (LEFT, zona_x1+x+10, zona_y1+y+10, 0, w);
sleep(500);
goto loop;//если закрыли какое то окно лов закончен. идем на начало
}
if (findimage(1, #zakrit3[0][0], 0, #x, #y, zona_x1, zona_y1, zona_x2, zona_y2, r, r, r, r, r, r, p, 1, w)==1)
{
mouse (LEFT, zona_x1+x+10, zona_y1+y+10, 0, w);
sleep(500);
goto loop;//если закрыли какое то окно лов закончен. идем на начало
}
if (findimage(1, #ok[0][0], 0, #x, #y, zona_x1, zona_y1, zona_x2, zona_y2, w)==1)
{
mouse (LEFT, zona_x1+x+10, zona_y1+y+10, 0, w);
sleep(500);
goto loop;//если закрыли какое то окно лов закончен. идем на начало
}
} |