RockHammer Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 (изменено) Пишу софт для себя. Так вот, почти завершил работу над софтом, но теперь мне нужно взаимодействовать с буфром обмена и, собственно, совершать запись в него.Искал инфу в интернете, но там путевого почти нет. Многие рассуждают на эту тему, но или вскользь или не в том направлении, в котором мне нужно.Итак, запись в буфер обмена. Текст. С++. Windows. Ночь. Улица. Фонарь. Аптека. Изменено 17 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 Уж как год наверное, если не больше - всё что то пытаешься изобрести, интересуешься подобными вещами в программировании,а не чем не делишься Или это ток для показухи ??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 В 17.04.2015 в 16:47, LIRW сказал: Или это ток для показухи ??? Не. Не для показухи, RockHammer, всё пытается взломать Пентагон. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 17 апреля, 2015 Автор Поделиться Опубликовано 17 апреля, 2015 (изменено) В 17.04.2015 в 16:47, LIRW сказал: Уж как год наверное, если не больше - всё что то пытаешься изобрести, интересуешься подобными вещами в программировании,а не чем не делишься Или это ток для показухи ??? Изобретаю. Но изобретаю для себя.Что касается читов... Они не доведены до совершенства. Я выкладывал сюда на форум свои работы вот тут (одна из них). Но... Я могу лучше. Правда. Это не предел. Я пытаюсь улучшить качество своих работ, ищу новые способы взлома, оптимизации всего приложения, в итоге дохожу до с++. На этом языке я уже научился работать с процессом и писать простейшие читы. Правда теперь у меня нет мощного пк, чтобы реверсить игры. Если бы кто-то щедрый поделился сигнатурами, масками, адресами, байтами и прочим прочим для взлома - я бы на с радостью сварганил что-нибудь, используя новые навыки.P.s. мой новый проект, где я применю все свои знания для взлома - будет взлом гта 5))))))) Я ооооочень давно об этом мечаю)) В 17.04.2015 в 16:54, Garik66 сказал: Не. Не для показухи, RockHammer, всё пытается взломать Пентагон. Этот проект процветает)))) Скоро мой связной выйдет на контакт, и я заполучу данные Пентагона)))) Изменено 17 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 (изменено) RockHammer, ты видел сколько у тебя сейчас сообщений. 666 - ничего не напоминает. Пора уже не Пентагон взламывать, а АД Изменено 17 апреля, 2015 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 17 апреля, 2015 Автор Поделиться Опубликовано 17 апреля, 2015 (изменено) В 17.04.2015 в 17:14, Garik66 сказал: RockHammer, ты видел сколько у тебя сейчас сообщений. 666 - ничего не напоминает. Пора уже не Пентагон взламывать, а АД АХАХАХАХАХХАХАХАХАХХАХАХАХАХХАХА Изменено 17 апреля, 2015 пользователем RockHammer 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 Привет! "Нет ничего путевого?" Ты [издеваешься]? Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 17 апреля, 2015 Автор Поделиться Опубликовано 17 апреля, 2015 (изменено) В 17.04.2015 в 18:21, keng сказал: Привет! "Нет ничего путевого?" Ты [издеваешься]?Я тоже натыкался на это, но тут все по-английски и не понятно куда жать. Что из этого списка должно мне помочь?Как это вообще использовать? Мб есть какой-нибудь алгоритм для работы с буфером? Поэтому и спросил тут. Изменено 17 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 Самый простой и один из самых эффективнейших алгоритмов - подучить английский. На уровне чтения он совсем легкий, зато какие же килотонны документации ты сможешь прочесть! Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 17 апреля, 2015 Автор Поделиться Опубликовано 17 апреля, 2015 (изменено) В 17.04.2015 в 19:30, keng сказал: Самый простой и один из самых эффективнейших алгоритмов - подучить английский. На уровне чтения он совсем легкий, зато какие же килотонны документации ты сможешь прочесть!Я же этого и пытаюсь избежать! И все же, как взаимодействовать с буфером (писать в него)? Изменено 17 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 Работа с буфером обмена (clipboard) / C++ для начинающих / C++ В Гугле поиск Цитата C++ clipboard для начинающихФункции для работы с буффером (в MSDN есть описание)OpenClipBoardEmptyClipboardSetClipboardDataCloseClipboardGetClipboardData Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 17 апреля, 2015 Поделиться Опубликовано 17 апреля, 2015 Пытаешься избежать изучения языка на минимально доступном уровне или пытаешься избежать чтения документации? А почему? Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 18 апреля, 2015 Автор Поделиться Опубликовано 18 апреля, 2015 (изменено) В 17.04.2015 в 20:22, keng сказал: Пытаешься избежать изучения языка на минимально доступном уровне или пытаешься избежать чтения документации? А почему?Уже не важно... Изменено 18 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 18 апреля, 2015 Автор Поделиться Опубликовано 18 апреля, 2015 (изменено) Эта функция внизу, что ей передавать? Там как-то смутно написано на msdn, тем более на английском.HANDLE WINAPI SetClipboardData(_In_ UINT uFormat,_In_opt_ HANDLE hMem); Показать контент Parameters uFormat [in] Type: UINT The clipboard format. This parameter can be a registered format or any of the standard clipboard formats. For more information, see Standard Clipboard Formats and Registered Clipboard Formats. hMem [in, optional] Type: HANDLE A handle to the data in the specified format. This parameter can be NULL, indicating that the window provides data in the specified clipboard format (renders the format) upon request. If a window delays rendering, it must process the WM_RENDERFORMAT and WM_RENDERALLFORMATS messages. If SetClipboardData succeeds, the system owns the object identified by the hMem parameter. The application may not write to or free the data once ownership has been transferred to the system, but it can lock and read from the data until the CloseClipboard function is called. (The memory must be unlocked before the Clipboard is closed.) If the hMem parameter identifies a memory object, the object must have been allocated using the function with the GMEM_MOVEABLE flag. Return valueType: HANDLEIf the function succeeds, the return value is the handle to the data.If the function fails, the return value is NULL. To get extended error information, call GetLastError. Изменено 18 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 18 апреля, 2015 Поделиться Опубликовано 18 апреля, 2015 Формат данных, который или один из стандартных, или же нестандартный (свой собственный), а так же указатель на кусок памяти с передаваемыми данными. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 18 апреля, 2015 Автор Поделиться Опубликовано 18 апреля, 2015 (изменено) В 18.04.2015 в 14:02, keng сказал: Формат данных, который или один из стандартных, или же нестандартный (свой собственный), а так же указатель на кусок памяти с передаваемыми данными.Я перевел это. Но я не знаю что это такое. Есть примеры работы с этой функцией? Показать контент Вывел, что ошибка на третьем шаге. В функции SetClipboardData. Вывел GetLastError, вывело цифру 6.#include <Windows.h>#include <WinUser.h>#include <TlHelp32.h>#include <iostream>#include <conio.h>#include <cmath>using namespace std;int main(){ setlocale(LC_ALL, "Russian"); printf("Приступаем... "); _getch(); BOOL WINAPI step1 = OpenClipboard(NULL); // открываем BOOL WINAPI step2 = EmptyClipboard(); // вычищаем HANDLE WINAPI step3 = SetClipboardData(CF_TEXT, "asdasdw34rsed"); //пишем (тут ошибка) BOOL WINAPI step4 = CloseClipboard(); // закрываем if (step1 != NULL && step2 != NULL &&step3 != NULL && step4 != NULL) { //если все ОК, то.. cout << "Успешная запись!" << endl; // сообщенька! } else //иначе... { cout << "Oops... Somethink went wrong..."; // костылек тот ещё, правда? if (step1 == NULL){ cout << "Error at step 1 !"; } else if (step2 == NULL) { cout << "Error at step 2 !"; } else if (step3 == NULL) { cout << "Error at step 3 !"; } // вот эту строку вывело else if (step4 == NULL) { cout << "Error at step 4 !"; } } _getch(); return false;} Изменено 18 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 18 апреля, 2015 Поделиться Опубликовано 18 апреля, 2015 буфер должен быть GMEM_MOVEABLE - юзай GlobalAlloc/malloc/HeapAlloc Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 18 апреля, 2015 Автор Поделиться Опубликовано 18 апреля, 2015 В 18.04.2015 в 17:18, gmz сказал: буфер должен быть GMEM_MOVEABLE - юзай GlobalAlloc/malloc/HeapAllocМожешь привести пример в коде? Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 18 апреля, 2015 Поделиться Опубликовано 18 апреля, 2015 зовешь GlobalAlloc,GMEM_ZEROINIT,размер_текста+1копируешь туда текстSetClipboardData тот буферps вместо GMEM_ZEROINIT можешь поставить 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 19 апреля, 2015 Автор Поделиться Опубликовано 19 апреля, 2015 В 18.04.2015 в 23:30, gmz сказал: зовешь GlobalAlloc,GMEM_ZEROINIT,размер_текста+1копируешь туда текстSetClipboardData тот буферps вместо GMEM_ZEROINIT можешь поставить 0char buffer[] = "THIS IS SPAARTA";GlobalAlloc(GMEM_MOVEABLE, sizeof(buffer));Я тебя правильно понял? Ссылка на комментарий Поделиться на другие сайты Поделиться
gmz Опубликовано 19 апреля, 2015 Поделиться Опубликовано 19 апреля, 2015 почти. так на С повтори:invoke GlobalAlloc,0,24mov esi,eaxcinvoke wcscpy,esi,blahinvoke OpenClipboard,0invoke EmptyClipboardinvoke SetClipboardData,CF_UNICODETEXT,esiinvoke CloseClipboardinvoke GlobalFree,esi....blah du 'qweqwe11212',0 Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 19 апреля, 2015 Автор Поделиться Опубликовано 19 апреля, 2015 В 19.04.2015 в 08:59, gmz сказал: почти. так на С повтори:invoke GlobalAlloc,0,24mov esi,eaxcinvoke wcscpy,esi,blahinvoke OpenClipboard,0invoke EmptyClipboardinvoke SetClipboardData,CF_UNICODETEXT,esiinvoke CloseClipboardinvoke GlobalFree,esi....blah du 'qweqwe11212',0Я не знаю асмы... Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 апреля, 2015 Поделиться Опубликовано 19 апреля, 2015 В 19.04.2015 в 09:06, RockHammer сказал: Я не знаю асмы...Тут WINAPI используется. Язык не важен. Повтори последовательно вызов этих функций. Только с учетом синтаксиса Си. Ссылка на комментарий Поделиться на другие сайты Поделиться
RockHammer Опубликовано 19 апреля, 2015 Автор Поделиться Опубликовано 19 апреля, 2015 (изменено) В 19.04.2015 в 18:13, Xipho сказал: Тут WINAPI используется. Язык не важен. Повтори последовательно вызов этих функций. Только с учетом синтаксиса Си.Оокеу...invoke GlobalAlloc,0,24mov esi,eaxcinvoke wcscpy,esi,blahinvoke OpenClipboard,0invoke EmptyClipboardinvoke SetClipboardData,CF_UNICODETEXT,esiinvoke CloseClipboardinvoke GlobalFree,esi....blah du 'qweqwe11212',0Мой перевод:GlobalAlloc(0,sizeof(buff));//что значит mov esi, eax ??????????//что значит wcscpy, esi, blah ???OpenClipboard(NULL);EmptyClipboard();SetClipboardData(CF_UNICODETEXT // что такое esi?CloseClipboardGlobalFree //что такое esi?//что значит blah du 'sdjfksdfjsdf', 0 ? Изменено 19 апреля, 2015 пользователем RockHammer Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 19 апреля, 2015 Поделиться Опубликовано 19 апреля, 2015 Вот она - очередная польза в хотя бы поверхностном знании ассемблера и устройства работы Windows! WinAPI-функции возвращают результат в регистр EAX. Мы выделяем 24 байта, используя GlobalAlloc, результат (адрес) получаем в EAX. Затем копируем его в ESI. Затем открываем и очищаем буфер обмена. После - копируем туда текст, используя его адрес, который у нас скопирован был в ESI. Закрываем буфер обмена и возвращаем выделенную память системе, опять же, указав адрес этой памяти. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения