Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI Переменные среды windows Я только начинаю изучать, для меня все очень сложно. Есть такой код #include <iostream> #include <conio.h> #include <windows.h> using namespace std; int main(int argc, char* argv) { setlocale(LC_ALL, "Russian"); https://www.cyberforum.ru/ win-api/ thread1772538.html Проверить, пустой ли Editbox C++ WinAPI
пишу простенькое приложение на винапи. возникла проблема. мне нужно проверить форму на наличие незаполненных editbox'ов и в случае их наличия вывести окно, которое укажет пользователю на необходимости заполнения этих полей. подскажите идею, как можно такое реализовать, пожалуйста. мб какие функции есть для проверки? заранее спасибо!
C++ WinAPI Не работает проекция файла https://www.cyberforum.ru/ win-api/ thread1771881.html
Привет всем. Проблема такая: COM порт принимает байты, и поток пишет их в файл. Если в функции write() использовать дескриптор "физического" файла, то данные в файл пишутся. Если использую дескриптор файла-проекции, то файл остается чистым. Не уверен, что вообще правильно произвел проекцию. Код прилагаю: //Объявляем переменные: static int file; //дескриптор физического файла для работы...
C++ WinAPI Проект для упражнения https://www.cyberforum.ru/ win-api/ thread1771751.html
Давно ничего не делал толком на практике.И чтобы подтянуть навыки думаю сделать какой-нибудь проект, что бы подтянуться. Просто хочется поупражняться, с потоками,базовыми паттернами, указателями(для себя недавно открыл умные указатели :D), устойчивостью программы и прочее(ибо все это у меня знатно хромает). И собственно говоря вопрос: может кто подсказать проект, игру, или книжку где есть...
C++ WinAPI Идентификатор не определён - C++ WinAPI
#include "stdafx.h" #include "5 лаба" #include <queue> #include <windows.h> using namespace std; #define MAX_LOADSTRING 100 HINSTANCE hInst;
C++ WinAPI Предел выделения памяти (VirtualAlloc) https://www.cyberforum.ru/ win-api/ thread1771475.html
Вот рабочий код: #include <Windows.h> #include <iostream> using namespace std; void main() {
C++ WinAPI Рандомный генератор Написать рандомний генератор чисел диапазона 1188 - 8813 в котором с вероятностью 11.88% от 100% число будет либо больше 8813, либо меньше 1188. как такой зделать ??? напишите плизззз..... https://www.cyberforum.ru/ win-api/ thread1771386.html C++ WinAPI Внедрение DLL через реестр
Пытаюсь внедрить DLL через реестр, как это описано у Рихтера. Сюда HKEY_LOCAL_MACHINE\Software\Microsoft\Windows_NT\CurrentVersion\Windows\AppImt_DLLs прописываю полный адрес своей DLL (C:\Mydll.dll). Поменял флажок LoadAppInit_DLL на 1. В DllMain создаю поток, в нем пытаюсь сделать простые действия: окошко выдать или звуковой сигнал (Beep). Но после перезагрузки ничего не происходит, хотя мне...
C++ WinAPI Разработать класс, содержащий указатель на хранимую строку https://www.cyberforum.ru/ win-api/ thread1771131.html
#include "buf_class.h" buf_class::buf_class() { str=new char; memset(str,0,1024); } buf_class::~buf_class(){
C++ WinAPI Запрет на редактирование .txt файла https://www.cyberforum.ru/ win-api/ thread1770817.html
С помощью WinAPI можно написать программу для запрета редактирования .txt файла?
C++ WinAPI Сторонний процесс не видит мьютекс
Добрый день. Мой процесс, используя манифест, запускается "как от Администратора". Затем он активирует встроенную админку и запускает сам себя через CreateProcessWithLogonW уже под Администратором. Проблема в том, что получается цикл, бесконечно запускающий процессы. Я вычитал у Рихтера, как этого можно избежать, используя CreateMutex. Сначала создается мьютекс "testMUT" и если этого объекта нет,...
C++ WinAPI Написание бота для автоматизации процессов Здравствуйте, однофорумчане) Учусь на программиста и возник вопрос. А как можно создать бота? Не для игры какой-то, а для начала попроще, ну, скажем, чтоб почту за меня открывал, html код парсил,где письмо и выводил куда нибудь в свое окошечко. Или сообщал о новых сообщениях в вк, например. Или по системному времени отметить ему, во сколько отправить почту и он отправлял бы, в общем, что-то в... https://www.cyberforum.ru/ win-api/ thread1770400.html
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
29.06.2016, 06:08 0

По перехвату API - C++ WinAPI - Ответ 9324264

29.06.2016, 06:08. Показов 1895. Ответов 10
Метки (Все метки)

Лучший ответ Сообщение было отмечено NatiF как решение

Решение

Цитата Сообщение от NatiF Посмотреть сообщение
1. SetWindowLongPtr давно не работает, майкрософт закрыл возможность замены процедуры окна другого процесса. Об этом прямо у Рихтера написано.
Да, SetWindow/ClassLongPtr используется для "патчинга" окна, но только
внутри своего процесса.

Цитата Сообщение от NatiF Посмотреть сообщение
2. Начиная с 8-й винды, APPInit в реестре игнорируется, если включен Secure Boot. А включается/отключается он только из BIOS. Так что тут дорога закрыта.
Угу.

Цитата Сообщение от NatiF Посмотреть сообщение
3. CreateRemoteThread, конечно, может внедрять DLL, после чего можно осуществить перехват, но этот перехват будет локальный, перехватываться будут только функции, используемые сторонним процессом, а не всеми другими процессами, т.е. такой перехват не глобален. Проблема в том, как перехватить API в процессе, который не дает в себя внедрять DLL?
Внедрять код по-другому, без dll.
Правда, некоторые процессы на Windows 8 и выше не дадут выделить у
себя память с правами на выполнение (ибо защита 'DisableDynamicCode').

Цитата Сообщение от NatiF Посмотреть сообщение
И вот тут у меня, походу, пробелище в знаниях огромное. Предположим, что процесс А обращается по адресу 0х00034 в своем адресном пространстве. А процесс В тоже обращается по адресу 0х00034 в своем адресном пространстве. Правильно я понимаю, что значения по одному и тому же адресу у этих процессов будут разные, потому что в винде каждому процессу отводится свои 4ГБ (на 10-ке, видимо больше) адресного пространства, и его использование напрямую зависит от контекста?
Да, так и есть. У каждого процесса свое адресное пространство и
содержимое по одним и тем же адресам разное.

Цитата Сообщение от NatiF Посмотреть сообщение
Правильно ли я понимаю, что несмотря на то, что kernel32 или user32 грузятся по статичным адресам в памяти, "память" эта у каждого процесса своя, даже несмотря на то, что нумерация ячеек там одинаковая, и поэтому нельзя перехватить API в одном процессе и думать, что это будет перехват и для других процессов?
Все верно. Перехват API - штука локальная, распостраняется только на тот
процесс, в котором этот перехват делается.

Цитата Сообщение от NatiF Посмотреть сообщение
Рихтер описывал глобальную систему перехвата через тотальное внедрение DLL во все доступные процессы. Но можно ли перехватить API в процессе, который не дает внедрить в себя DLL?
Все можно. Систем перехвата функций много, есть очень сложные, построенные,
например, на использовании виртуализации (VT-x) и "обмане" системной защиты.
Весь вопрос в трудозатратах.

Цитата Сообщение от NatiF Посмотреть сообщение
Только вот я прикидываю, насколько защищена эта библиотека от стороннего влезания, если я из Админа с дебагерскими привилегиями не могу открыть хэндлы даже на Windows Defender.
Защита kernel32 и защита процесса Windows Defender - это совсем разные вещи.
В общем случае, kernel32.dll - это всего лишь dll, которая болтается на диске.
Никто не мешает, если у тебя есть хэндл процесса с достаточными правами,
сделать в него инжект и пропатчить нужные функции в этой dll.
Другое дело в том, что для некоторых процессов (smss.exe, csrss.exe, services.exe и
некоторые другие на Windows 8.1 и выше) никто таких прав тебе не даст, потому
что эти процессы защищенные. Обойти их защиту можно только через драйвер.

Цитата Сообщение от NatiF Посмотреть сообщение
Неужели тут единственный путь лежит через написание системного драйвера?
Не единственный. Но один из самых надежных и эффективных.
Например, в драйвере можно почти беспрепятственно открывать процессы,
писать и читать в память процессов, а еще делать всякие интересные штуки
вроде снятия разнообразных защит...

Цитата Сообщение от NatiF Посмотреть сообщение
Ведь все "верхние" API в том или ином виде вызывают Native API, так? А чем отличается тогда перехват? Ведь Native таким же образом проецируются в адресное пространство процессов, только через ntdll.dll. Или нет? Если "перехватить" Native API в каком-то "одном месте", то это и будет глобальный перехват?
Перехват Native API принципиально ничем не отличается от перехвата Win32 API,
просто другие функции и все. И результат тоже локальный, для одного процесса.

Цитата Сообщение от NatiF Посмотреть сообщение
Те же антивирусы их как то перехватывают, или они тоже внедряют DLL во все запущенные процессы?
Антивирусы в большинстве случаев вообще не хукают Win32 API, потому что у них
есть более секьюрные, надежные и эффективные средства: для фильтрации файловой системы
используются минифильтры, для реестра - CmCallbacks, для доступа к процессам и
потокам - ObRegisterCallbacks, ELAM, сеть фильтруется через WFP и NDIS...
Ну а системные функции (SSDT и все такое) сейчас модно перехватывать через
технологию виртуализации: ОС запускается как бы внутри гипервизора и "не видит",
что она похукана.

Цитата Сообщение от NatiF Посмотреть сообщение
Помогите разобраться. Может почитать где-нибудь про это можно более-менее доступным языком?
Внедрение в процесс с перехватом API в том виде, который был описан у Рихтера,
сейчас уже не работает. Некоторые процессы запущены на Low или Untrusted Integrity, в
них просто так не влезешь, то же самое справедливо для "плиточных" процессов на
Windows 8 и выше, еще есть Vista-защищенные и PPL-защищенные процессы, которые
не дают открывать себя никому, даже администраторам, а также процессы, у которых
включены различные политики безопасности - restricted token, disable dynamic code,
ms/store-only signature и т.д. и в которых нельзя ни исполняемый код выделять,
ни свои dll загружать. Большую часть этих защит можно обойти, но только в ядре.
В юзермоде мы против них бессильны.

P.S. Кстати, а тебе обязательно надо внедрить свою dll во все без исключения процессы?
Обычно ведь в этом нет необходимости и достаточно обойтись весьма скромненьким списочком.
Например, внедриться в какой-нибудь MS Office, explorer.exe или Skype проблем не составит,
защиты у них нет.

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

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

Android SDK Manager не отображает платформы 2.3.3 (API 10), 2.3.1 (API 9). Как быть?
Добрый день! Использую Android Studio под Windows 7. Из-за несовместимости с операционной системой...

Steam API - как можно получить медиану цен через API?
Ребят, как можно получить медиану цен через API ? Интересует количество продаж за последний день....

Android Studio не дает работать с API 8 без установленного API 21
Удалил все не интересующие меня библиотеки и поставил только API Level 8. Но при создании...

10
29.06.2016, 06:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2016, 06:08
Помогаю со студенческими работами здесь

WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)
WIN API устарел как начать программировать на C++ .NET API (Без VisualStudio)

Как обратиться к api из программы , запущенной на том же сервере, где расположена api
Доброго времени суток Есть программа и api написанные на Blazor, которые работают под iis на...

VK API как обойти ограничение api vk.com в 1000 человек?
Добрый день. У меня есть вопрос - как получить больше 1000 человек в запросе на поиск людей? ...

Как верно использовать JavaScript native Fetch API вместо jQuery для опроса данных из API
Я разбираюсь в js, и на данный момент понял что метод из js Fetch может сам отправлять запросы на...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru