Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (2): [1] 2 »   

> Описание: внутри...
ivantu
Отправлено: 04 Июня, 2019 - 14:12:40
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Уважаемый друзья, подскажите пожалуйста, есть ли возможность отправлять как то через кибор команды для "Командной строки" извиняюсь за тавтологию, очень нужно, это поможет многим кто пишет ботов по эмуляторы андроид делать ботов скрытими, как это работает?

Есть такая чтука как ADB работает оно через командную строку, скачал архив, извлек три файла, через командную строку windows "win+r" - > cmd открываем скаченный файлик, и нам запускаем эмулятор затем в коммандной строке пишем adb devices , если все хорошо то покапжет список подключенных устройств, дальше все просто, нам открывается практический полный контроль над андроидом, от установки и удалением программ, создание скриншотов (даже если эмулятор СВЕРНУТ), что дает нам 100% работу бота в фоне, если не ошибаюсь даже можо делать тапы(нажатия) по экрану програмно, проще говоря вещь полезная, у меня полукчилось запустить поделать скриншоты, но через командную строку windows, вот я и хотел узнать можно как то это дело подружить с кибор, или как то подавать команды чтоб пользователь не видел командную строку, Спасибо.

Вот ссылка откуда обучался этому делу.
http://xakep.ru/2016/05/12/android-adb/#toc01.

(Отредактировано автором: 04 Июня, 2019 - 14:17:10)

 
 Top
Kibor
Отправлено: 04 Июня, 2019 - 14:21:09
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




 ivantu пишет:
или как то подавать команды чтоб пользователь не видел командную строку

Не знаю такого способа.
Командную строку вызвать не проблема
start("%SystemRoot%\System32\cmd.exe");
Или батник записать кибором и запустить.

Как ее скрыть не знаю. Вернее можно по всякому, но мелькать будет по любому.
 
 Top
Zireael
Отправлено: 04 Июня, 2019 - 14:47:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




CODE:
#define SW_HIDE 0
#define SW_SHOW 5
external(INT, "ShowWindow", "ShowWindow", "User32.dll");

win cmd=window (-1, "ConsoleWindowClass", -1); // окно cmd
if(cmd)
{
ShowWindow(formatwi(cmd), SW_HIDE); // скрыть окно cmd

// дальше любые команды
command("HELP"); // показать список команд
command("start %SystemRoot%\System32\calc.exe"); // открыть калькулятор
sleep(2000);

ShowWindow(formatwi(cmd), SW_SHOW); // показать окно cmd если надо
}
else messagebox("Окно не найдено");


function command(string s)
{
sendkey(s, cmd);
sendkey(RETURN, cmd);
sleep(200);
}
 
 Top
Kibor
Отправлено: 04 Июня, 2019 - 14:56:17
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




CODE:
win cmd;
if (window (-1, "ConsoleWindowClass", -1)!=0)
{
sendmessage(WM_CLOSE, 0, 0, window (-1, "ConsoleWindowClass", -1));
}
start("%SystemRoot%\System32\cmd.exe");
while(window (-1, "ConsoleWindowClass", -1)==0)sleep(1);
cmd=window (-1, "ConsoleWindowClass", -1); // окно cmd
transparency (0, cmd);

// дальше любые команды
//command("HELP"); // показать список команд
command("start %SystemRoot%\System32\calc.exe"); // открыть калькулятор
sendmessage(WM_CLOSE, 0, 0, cmd);


function command(string s)
{
sendkey(s, cmd);
sendkey(RETURN, cmd);
sleep(200);
}
 
 Top
ivantu
Отправлено: 04 Июня, 2019 - 16:05:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Вот такое еще решение, работает, я проверил:
Создать блокнот с содержимым:

CODE:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "ваш файл", 0, false

сохраните с расширением .vbs и запустить.

Мне вот интересно, а как то можно из cmd отправить в кибор какую то информацию, или результат выполнения какой то команды?
 
 Top
ivantu
Отправлено: 05 Июня, 2019 - 00:59:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Друзья, а можно как то чтоб побыстрее вводились команды, пробовал через
sendtext("");

у меня заголовок CMD меняется... а строка не хочет вводиться.
 
 Top
Zireael
Отправлено: 05 Июня, 2019 - 01:31:28
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
а можно как то чтоб побыстрее вводились команды

В настройках уменьшить паузу в нажатии и отпускании кнопок.
 Цитата:
как то можно из cmd отправить в кибор какую то информацию, или результат выполнения какой то команды?

Разве что через буфер обмена или через txt файл.

(Отредактировано автором: 05 Июня, 2019 - 01:39:35)

 
 Top
ivantu
Отправлено: 05 Июня, 2019 - 08:39:57
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




У меня еще вопрос, этот метод ввода чувствителен к расскладке, если в данный момент раскладка русская в командную строку вводятся русские символы, есть какое то решение?
(Добавление)
еще нашел на просторах интернета, что можно команду вот так отправить, но это С++

CODE:

C++

system( "cls" );


Вот еще одна реализация:
 Цитата:
Вот реализация функции DosExec, которая позволяет (молча) выполнять любую команду DOS и извлекать сгенерированный вывод в виде строки в Юникоде.

CODE:
// Convert an OEM string (8-bit) to a UTF-16 string (16-bit)
#define OEMtoUNICODE(str) CHARtoWCHAR(str, CP_OEMCP)
/* Convert a single/multi-byte string to a UTF-16 string (16-bit). We take advantage of the MultiByteToWideChar function that allows to specify the charset of the input string.
*/
LPWSTR CHARtoWCHAR(LPSTR str, UINT codePage) { size_t len = strlen(str) + 1; int size_needed = MultiByteToWideChar(codePage, 0, str, len, NULL, 0); LPWSTR wstr = (LPWSTR) LocalAlloc(LPTR, sizeof(WCHAR) * size_needed); MultiByteToWideChar(codePage, 0, str, len, wstr, size_needed); return wstr;
}
/* Execute a DOS command. If the function succeeds, the return value is a non-NULL pointer to the output of the invoked command. Command will produce a 8-bit characters stream using OEM code-page. As charset depends on OS config (ex: CP437 [OEM-US/latin-US], CP850 [OEM 850/latin-1]), before being returned, output is converted to a wide-char string with function OEMtoUNICODE. Resulting buffer is allocated with LocalAlloc. It is the caller responsibility to free the memory used by the argument list when it is no longer needed. To free the memory, use a single call to LocalFree function.
*/
LPWSTR DosExec(LPWSTR command){ // Allocate 1Mo to store the output (final buffer will be sized to actual output) // If output exceeds that size, it will be truncated const SIZE_T RESULT_SIZE = sizeof(char)*1024*1024; char* output = (char*) LocalAlloc(LPTR, RESULT_SIZE); HANDLE readPipe, writePipe; SECURITY_ATTRIBUTES security; STARTUPINFOA start; PROCESS_INFORMATION processInfo; security.nLength = sizeof(SECURITY_ATTRIBUTES); security.bInheritHandle = true; security.lpSecurityDescriptor = NULL; if ( CreatePipe( &readPipe, // address of variable for read handle &writePipe, // address of variable for write handle &security, // pointer to security attributes 0 // number of bytes reserved for pipe ) ){ GetStartupInfoA(&start); start.hStdOutput = writePipe; start.hStdError = writePipe; start.hStdInput = readPipe; start.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW; start.wShowWindow = SW_HIDE;
// We have to start the DOS app the same way cmd.exe does (using the current Win32 ANSI code-page).
// So, we use the "ANSI" version of createProcess, to be able to pass a LPSTR (single/multi-byte character string)
// instead of a LPWSTR (wide-character string) and we use the UNICODEtoANSI function to convert the given command if (CreateProcessA(NULL, // pointer to name of executable module UNICODEtoANSI(command), // pointer to command line string &security, // pointer to process security attributes &security, // pointer to thread security attributes TRUE, // handle inheritance flag NORMAL_PRIORITY_CLASS, // creation flags NULL, // pointer to new environment block NULL, // pointer to current directory name &start, // pointer to STARTUPINFO &processInfo // pointer to PROCESS_INFORMATION )){ // wait for the child process to start for(UINT state = WAIT_TIMEOUT; state == WAIT_TIMEOUT; state = WaitForSingleObject(processInfo.hProcess, 100) ); DWORD bytesRead = 0, count = 0; const int BUFF_SIZE = 1024; char* buffer = (char*) malloc(sizeof(char)*BUFF_SIZE+1); strcpy(output, ""); do { DWORD dwAvail = 0; if (!PeekNamedPipe(readPipe, NULL, 0, NULL, &dwAvail, NULL)) { // error, the child process might have ended break; } if (!dwAvail) { // no data available in the pipe break; } ReadFile(readPipe, buffer, BUFF_SIZE, &bytesRead, NULL); buffer[bytesRead] = '\0'; if((count+bytesRead) > RESULT_SIZE) break; strcat(output, buffer); count += bytesRead; } while (bytesRead >= BUFF_SIZE); free(buffer); } } CloseHandle(processInfo.hThread); CloseHandle(processInfo.hProcess); CloseHandle(writePipe); CloseHandle(readPipe); // convert result buffer to a wide-character string LPWSTR result = OEMtoUNICODE(output); LocalFree(output); return result;
}


Помогите как то грамотно отправлять команды, полезная же штука то.
(Добавление)
Еще одна на С#, помогите как то адаптировать под Кибор.

Для начало потребуется подключить пространство имён
C#:

CODE:
using System.Diagnostics;


Код для выполнения:
C#:

CODE:
ProcessStartInfo psi = new ProcessStartInfo();
//Имя запускаемого приложения
psi.FileName = "cmd";
//команда, которую надо выполнить
psi.Arguments = @"/k ping 127.0.0.1";
// /c - после выполнения команды консоль закроется
// /к - не закрывать консоль после выполнения команды
Process.Start(psi);


В результате Вы увидите всё то же самое, что и на последней картинке выше.
Класс ProcessStartInfo имеет перегруженный конструктор, в который сразу же можно передать имя запускаемого приложения и аргументы.
C#:

CODE:
ProcessStartInfo psi;
psi = new ProcessStartInfo("cmd", @"/k ping 127.0.0.1");
Process.Start(psi);


Для запуска приложений может потребоваться указание полного пути к файлу запуска, например: запуск браузера opera.
C#:

CODE:
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"C:\Program Files\Opera\opera.exe";
Process.Start(psi);
 
 Top
Zireael
Отправлено: 05 Июня, 2019 - 11:02:28
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4397
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
если в данный момент раскладка русская в командную строку вводятся русские символы, есть какое то решение?

code (Отобразить)

 Цитата:
system( "cls" );

cls очистит консоль.
 
 Top
ivantu
Отправлено: 05 Июня, 2019 - 11:23:42
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Спасибо Уважаемый Zireael, последний вариант уже имеет место на существование, только я заметил что иногда, по не понятным причинам строка полностью не успевает дописатьсяв консоль, и происходит перенос строки вводом Enter, что влечет за сабой непредсказуемые последствия, это можно как то отконтролировать?

Код (Отобразить)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by