Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Объясните про потоки (stream) C++ WinAPI
Здравствуйте. Помогите разобраться с потоками(не Thread, а Stream). У меня знания очень поверхностные, представляю как непрерывный поток информации, вроде еще можно написать функцию, которая будет... "Основная задача потоковых средств ввода-вывода - это процесс преобразования объектов определенного типа в последовательность символов и наоборот. Существуют и другие схемы ввода- вывода, но...
C++ WinAPI Как работать с ключом реестра типа REG_BINARY?
Привет, ребятки! Не знаю, в ту ли я тему пишу, но у меня возникла следующая проблема. Мне в коде необходимо менять настройки безопасности сервиса путем изменения значения, хранящегося в ключе реестра... Ну тогда в чем проблема ? Я не понимаю. У вас есть буфер энной длины, считанный из REG_BINARY соответствующего ключа. Устанавливать и сбрасывать биты можно с помощью операторов "|=" и "&=" языка....
C++ WinAPI Не могу найти ListView https://www.cyberforum.ru/ win-api/ thread1189034.html
Я что-то никак не могу понять или нагуглить, как создать ListView. Как пользоваться куча всего есть, а создать шиш. Я уже даже студию Ultimate скачал, толку ноль. В программе с #include <Windows.h>... Приветствую! Есть пример, смотрите:
C++ WinAPI Завершение процесса
Доброго времени суток. Вот такой вопрос: bool answer; HWND name_of_debug_window; LPDWORD exit_code; if (result == true) { answer=GetExitCodeProcess(name_of_debug_window,exit_code);... bool answer; HWND name_of_debug_window; DWORD exit_code; if (result == true) { answer=GetExitCodeProcess(name_of_debug_window, &exit_code); ExitProcess(exit_code); }
C++ WinAPI Зарегистрировать ловушку для всех оконных сообщений в системе. Выводить на печать информацию о сообщениях Здравствуйте ув. форумчане! Прошу у вас помощи! Будьте добры помочь написать неграмотному программисту программу на курсовую работу, очень нужно срочно! Задание: Зарегистрировать ловушку для... https://www.cyberforum.ru/ win-api/ thread1189241.html C++ WinAPI Получение информации о выделенном элементе TreeView WinAPI
Доброго времени суток; Не могу получить структуру из поля lParam структуры TV_ITEM; Делаю следующим образом: case WM_NOTIFY: lpnmhdr = (LPNMHDR) lParam; if(lpnmhdr->hwndFrom ==... Если я правильно понял... В добавлении, после присвоения должно быть что-то подобное: SendMessage(hWnd, TVM_SETITEM, 0, (LPARAM)&item);
C++ WinAPI Работа с файлом или добавить теги Есть файл x.txt В нем примерно 100 строк Нужно начиная со 2 строки добавлять теги. Пример: x.txt: test 123 hello system char result; char gline; ... s.getline(gline, 50, '\n'); sprintf(result,"<p>%s</p>",gline); ... s.getline(gline, 50, '\n'); sprintf(result,"%s\r\n<p>%s</p>",result,gline); ...... https://www.cyberforum.ru/ win-api/ thread1187348.html C++ WinAPI Каково назначение функции GetConsoleAlias? https://www.cyberforum.ru/ win-api/ thread1189506.html
Первый же параметр описан так: The console alias whose text is to be retrieved., Консоль псевдоним которого текст должен быть восстановлен.....
C++ WinAPI Получение хэндэла и завершение процесса Всем привет :) Вот есть такой код: name_of_debug_window = FindWindow(NULL, "OllyDbg - "); if (result == true) { printf("Victory\n"); answer =... почему переменная answer == Null и в чём может быть ошибка? name_of_debug_window - это хэндл окна. А функции GetExitCodeProcess нужен хэндл процесса, а не окна. И вообще, здесь нужна другая... https://www.cyberforum.ru/ win-api/ thread1189080.html C++ WinAPI Сервер - клиент. Mapped file. Перемещение квадрата https://www.cyberforum.ru/ win-api/ thread1188654.html
Первая программа отображает 4 кнопки – «вверх», «вниз», «вправо», «влево». При нажатии на них должен двигаться в соответствующую сторону квадрат, рисуемый в окне второй программы. собственно...
C++ WinAPI С#, Передача данных по сокетам с разных компьютеров Помогите! Надо сделать так чтобы программа отравляла сообщение по сокету на другой комп на котором стоит сервер этой проги. Скажите как реализовать это ведь у меня просто работает но не отравляет... https://www.cyberforum.ru/ win-api/ thread1187206.html C++ WinAPI VK_OEM_n на "неастандартной" клавиатуре https://www.cyberforum.ru/ win-api/ thread1187696.html
Добрый день ув. форумчане. MSDN нам гласит, что скан-код VK_OEM_1 есть ";:" for US. Помимо ;: на клав. имеется также буква русского алфавита "ж". Каким образом можно получить этот эквивалент?...
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
0

Перехват API функции - C++ WinAPI - Ответ 6232683

27.05.2014, 12:09. Показов 5468. Ответов 3
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток всем! Уважаемые форумчене помогите решить задачу, я взял функцию MessageBox и перехватил её. Объясните нубу как перехватить любую другую функцию API, с этой я разобрался, а другие не как не выходит реализовать, кому не сложно, подскажите как изменить участок когда внизу так, чтобы осуществлялся перехват функции EditBox или любой другой. Если не затруднит, выложите пожалуйста скрин работы программы перехвата функции EditBox.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#undef UNICODE // позволяет сделать не Unicode-проект
#include <windows.h> //WinAPI совокупность библиотек Windows
#include <cstdio> //содержит константы, объявления функций и типов, используемых для различных операций стандартного ввода и вывода.
 
#defineSIZE 6 //Число байт, необходимое для перенаправления
 
typedef int (WINAPI *pMessageBoxW)(HWND, LPCWSTR, LPCWSTR, UINT);// объявление которое начинается спецификатором typedef и состоит из последовательностей разнообразных спецификаторов объявления и описателей
int WINAPI MyMessageBoxW(HWND, LPCWSTR, LPCWSTR, UINT);
 
void Begin Redirect(LPVOID);
 
pMessageBoxWpOrigMBAddress = NULL;
BYTEoldBytes[SIZE] = {0}; //Здесть будут размещены перезаписанные байты
BYTEJMP[SIZE] = {0};    //Это справедливо JMP для нашего кода
DWORD oldProtect, myProtect = PAGE_EXECUTE_READWRITE; /*Параметры защиты памяти*/
chardebugBuffer[128]; //Used for DbgView
 
INT APIENTRY DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved)
{
    switch(Reason)
    {
    case DLL_PROCESS_ATTACH:
        pOrigMBAddress = (pMessageBoxW) //Get MessageBoxW pointer
            GetProcAddress(GetModuleHandle("user32.dll"), "MessageBoxW");
        if(pOrigMBAddress != NULL)
            BeginRedirect(MyMessageBoxW);   //Valid? Redirect
        break;
    case DLL_PROCESS_DETACH:
        memcpy(pOrigMBAddress, oldBytes, SIZE);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
        break;
    }
    return TRUE;
}
 
voidBeginRedirect(LPVOID newFunction)
{
    sprintf_s(debugBuffer, 128, "pOrigMBAddress: %x", pOrigMBAddress);
    OutputDebugString(debugBuffer);
    BYTE tempJMP[SIZE] = {0xE9, 0x90, 0x90, 0x90, 0x90, 0xC3}; //JMP <NOP> RET for now
    memcpy(JMP, tempJMP, SIZE); //Копируемдляудобства
    DWORD JMPSize = ((DWORD)newFunction - (DWORD)pOrigMBAddress - 5); //Получимадресразницы
    VirtualProtect((LPVOID)pOrigMBAddress, SIZE, PAGE_EXECUTE_READWRITE, &oldProtect);
            /*Меняем настройки памяти, чтобы убедиться, что мы можем записать в JMP*/
    memcpy(oldBytes, pOrigMBAddress, SIZE); /*КопируемстарыебайтыпередтемкакписатьJMP*/
    sprintf_s(debugBuffer, 128, "Old bytes: %x%x%x%x%x", oldBytes[0], oldBytes[1],
        oldBytes[2], oldBytes[3], oldBytes[4], oldBytes[5]);
    OutputDebugString(debugBuffer);
    memcpy(&JMP[1], &JMPSize, 4); //Пишем обращение к JMP
    sprintf_s(debugBuffer, 128, "JMP: %x%x%x%x%x", JMP[0], JMP[1],
        JMP[2], JMP[3], JMP[4], JMP[5]);
    OutputDebugString(debugBuffer);
    memcpy(pOrigMBAddress, JMP, SIZE); //Пишем в память процессора
    VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL);
}
 
int  WINAPIMyMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uiType)
{
    VirtualProtect((LPVOID)pOrigMBAddress, SIZE, myProtect, NULL); /*Сновазаписываемичитаем*/ memcpy(pOrigMBAddress, oldBytes, SIZE); //ОтцепимАпи
    MessageBoxW(NULL, L"HOOK Complete", L"Hooked MBW", MB_ICONEXCLAMATION);
    intretValue = MessageBoxW(hWnd, lpText, lpCaption, uiType); /*Получаемзначениепрерывания*/
    memcpy(pOrigMBAddress, JMP, SIZE); //Rehook API
    VirtualProtect((LPVOID)pOrigMBAddress, SIZE, oldProtect, NULL); //Нормальные настройки
    returnretValue; //Вернуть то что должно быть возвращено 
 
Пп


Вернуться к обсуждению:
Перехват API функции C++ WinAPI
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2014, 12:09
Готовые ответы и решения:

Перехват API
Сразу код ) DWORD dwProtect = PAGE_READWRITE; BYTE old; BYTE * fPtr; #pragma pack(push, 1)

Перехват API, Рихтер
Всем доброго времени суток! Собственно такой вопросик... я вот читаю сейчас Рихтера и мне интересен его перехват. Захотелось проделать то...

Перехват API вызовов
Здравствуйте! Пытаюсь перехватить вызов функции CreateFileW и заменить на свою MyCreateFileW. Для этого в процесс(тестовая программа,...

3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.05.2014, 12:09
Помогаю со студенческими работами здесь

Перехват API функций
Разработать программу, которая запускает приложение, переданное программе на вход. После запуска приложения должна выполняться...

Перехват API с возвратом значения
Я тут решил разобраться в перехвате API с помощью инжектированной dll. Спустя 2 дня написал перехват openProcess для диспетчера задач. Всё...

Перехват API функций. Таблица импорта
Необходимо лoггиpoвaть вызовы некоторых API-шных функций (для примера CloseHandle) в заданном процессе. После прочтения материала из...

Перехват API вызовов через таблицу импорта
Доброго времени суток. Есть следующая задача. Нужно перехватить вызов некоторых определённых функций из определённого приложения и заменить...

Перехват api-вызова. Ошибка при выполнении
Здравствуйте, есть dll-ка, которая успешно внедряется во все(или почти все) оконные приложения с помощью хуков. Суть ее в том, что она...

0
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru