Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ WinAPI Сменить цвет чужого окна https://www.cyberforum.ru/ win-api/ thread994397.html
Всем привет. Собственно надо сменить цвет чужого окна.
::TextOut выводит символ в позицию, смещенную влево C++ WinAPI
Есть окно. Есть hdc окна.(BeginPaint). Я беру шрифт с помощью ChooseFont(). Устанавливаю этот шрифт в этот hdc с помощью SelectObject(). В позицию 0 0 вывожу символ (выводятся по одному всегда, но да...
C++ WinAPI удаление файлов https://www.cyberforum.ru/ win-api/ thread994287.html
Хочу написать программу с удалением файлов без возможности восстановления С чего начать?Что посоветуете?? Книги , если известны , по этой тематике
C++ WinAPI Получить цвет пикселя https://www.cyberforum.ru/ win-api/ thread994255.html
Имеется указатель на массив битов, полученный, например, функцией GetDIBits. Собственно вопрос: как из этого массива получить RGB пикселя с координатами x, y? Вариант с использованием StretchDIBits,...
C++ WinAPI в чем ошибка?
#include <windows.h> #include <stdlib.h> #include <string.h> #include <tchar.h> #include <time.h> HWND hWnd,hWnd1,hWnd2,hWnd3,hWnd4,hWnd5; #include "resource.h" static TCHAR szWindowClass =...
C++ WinAPI Как запустить Release проект на Windows XP https://www.cyberforum.ru/ win-api/ thread993905.html
Программа хорошо отрабатывает на Win 8/7. На XP выдает вот такое сообщение "точка входа в процедуру RegGetValueA не найдена в библиотеке dll advapi32.dll". Я знаю, что функция RegGetValueA не...
C++ WinAPI Вставить картинку Добрый день пишу свои часы , вопрос как каждую секунду делать loadimage ? Если вставляю в функцию WM_TIMER ничего не происходит LRESULT CALLBACK MainWinProc(HWND hw,UINT msg,WPARAM wp,LPARAM lp) {... https://www.cyberforum.ru/ win-api/ thread993482.html C++ WinAPI RichEdit сокрытие текста без потери формата
Всем привет. Делаю красивую консоль для вывода сообщений на основе RichEdit. Добрался до сортировки и фильтрации сообщений и решил с кем-нибудь обсудить эту тему. Для фильтрации будут...
C++ WinAPI Отправить команду в фоне cmd и получить результат https://www.cyberforum.ru/ win-api/ thread993335.html
всем привет. задача следующая. необходимо отправить команду (или сразу несколько команд, ну то есть батник) cmd.exe причем в фоне и затем в буфер записать ответ от команды (если превышает буфер то...
C++ WinAPI Перехват оконного сообщения Добрый день. Описание проблемы: При перемещении окна необходимо выполнять определённые операции, их результат отображается в режиме реального времени. Использую перехват оконного сообщения... https://www.cyberforum.ru/ win-api/ thread993112.html
C++ WinAPI Несколько опросов по работе с COM портами через CreateFile и WriteFile
Привет! И так: 1. Все современные :D COM порты поддерживают полную дуплексную связь? 1.1. Если так, то получается у контроллеров COM портов есть два буфера, входной и выходной? 1.2. Если так...
C++ WinAPI Мониторинг реестра WinAPI + логирование (С++) Здравствуйте! Передо мной стоит задание написать утилитку на С++, которая бы осуществляла мониторинг по интервальному признаку со снятием снимков с системных файлов и реестра, производила бы их... https://www.cyberforum.ru/ win-api/ thread992736.html
Студент
121 / 132 / 39
Регистрация: 07.04.2011
Сообщений: 503
0

Перехват API - C++ WinAPI - Ответ 5269919

01.11.2013, 12:38. Показов 1132. Ответов 2
Метки (Все метки)

Сразу код )

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
DWORD dwProtect = PAGE_READWRITE;
 
BYTE old[5];
 
BYTE * fPtr;
 
#pragma pack(push, 1)
struct jump_near
{
    BYTE opcode;
    DWORD relativeAddress;
};
#pragma pack(pop)
 
 
#pragma pack(push, 1)
struct org
{
    char old[5];
    struct jump_near jump;
};
#pragma pack(pop)
 
 
struct org oPtr;
 
size_t _CalculateDispacement(void* lpFirst, void* lpSecond)
{
    return reinterpret_cast<char*>(lpSecond) - (reinterpret_cast<char*>(lpFirst) + 5);
}
 
void splice()
{
    MessageBox(0, "Hello from splice", "OK", MB_OK);
 
    VirtualProtect(&oPtr, sizeof(oPtr), dwProtect, &dwProtect);
 
    BYTE * go = (BYTE*)&oPtr;
 
    __asm
    {
        jmp go
    }
}
 
 
 
void WINAPI start()
{
    
    MessageBox(0, "Ready!?", "", MB_OK);
    
    struct jump_near jump;
 
    fPtr = (BYTE * )GetProcAddress(GetModuleHandle(TEXT("*******")), "*******");
 
    jump.relativeAddress = _CalculateDispacement(fPtr, splice);
 
    jump.opcode = 0xE9;
 
    memcpy(old, fPtr, 5);
    
    VirtualProtect(fPtr, sizeof(jump_near), dwProtect, &dwProtect);
    
    WriteProcessMemory(GetCurrentProcess(), (void*)fPtr, (void*)&jump, 5, 0);
    
    memcpy(oPtr.old, old, 5);
 
    oPtr.jump.opcode = 0x9E;
    oPtr.jump.relativeAddress = (unsigned long)(fPtr + 6);
    
    MessageBox(0, "Finish", "OK", MB_OK);
}
 
 
 
 
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
 
 
switch (ul_reason_for_call) 
{ 
    case DLL_PROCESS_ATTACH: 
    {
        CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start, NULL, NULL, NULL); 
    }
    break; 
 
    case DLL_THREAD_ATTACH: break; 
    case DLL_THREAD_DETACH: break;
    case DLL_PROCESS_DETACH: break; 
} 
 
    return TRUE;
}
Перехват выполняется, срабатывает.
C++
1
MessageBox(0, "Hello from splice", "OK", MB_OK);
А дальше вылетает программа, просьба если кто может подсказать правильно ли реализован трамплин. Буду признателен за любые подсказки.

Добавлено через 28 минут
Поменял это:
C++
1
oPtr.jump.opcode = 0x9E;
На это:
C++
1
oPtr.jump.opcode = 0xEA;
Тоже самое

Вернуться к обсуждению:
Перехват API C++ WinAPI
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2013, 12:38
Готовые ответы и решения:

Перехват API функции
Доброго времени суток всем! Уважаемые форумчене помогите решить задачу, я взял функцию MessageBox и...

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

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

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

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2013, 12:38

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

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

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

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

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.