Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 30.06.2016
Сообщений: 2
1

Хук на Апи функцию CharToOem

30.06.2016, 10:32. Показов 819. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Изучаю что такое хук.
Написал программу конвертер из анси в оем и обратно
Хочу научиться перехватывать вызовы апи функции

Везде написано много про хуки но вот вкурить информацию не получается



Покопался на просторах нашел Пример хука на мессаджбокс
На основе него попытался сделать хук на CharToOem, но ничего не вышло.

Delphi
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
var
  PCharToOemA: function(lpszSrc: LPCSTR; lpszDst:LPSTR): BOOL; stdcall;
 
function NewCharToOem(lpszSrc: LPCSTR; lpszDst:LPSTR): BOOL; stdcall;
begin
  MessageBeep(0);
  Result := PCharToOemA('Hooked Text!!!', 'Hooked Text!!!');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Status: DWORD;
begin
  Memo2.Text:=WinToDos(Memo1.Text);
 
  ShowMessage('Первичные данные '+Memo1.Text);
 
  Status := HookFunction('user32.dll', 'CharToOemA', @PCharToOemA, @NewCharToOem);
  if Status <> ERROR_SUCCESS then
    Exit;
 
  ShowMessage('Вторичные данные '+Memo2.Text);
  UnHookFunction(@PCharToOemA);
 
end;
 
function WinToDos(ASource: String): AnsiString;
var
  Ch: PAnsiChar;
begin
  Ch := AnsiStrAlloc(Length(ASource) + 1);
  CharToOem(PChar(ASource), Ch);
  Result := StrPas(Ch);
  StrDispose(Ch)
end;
Пытаюсь реализовать следующую последовательность
1. Из мемо1 читается текст и выдается в месаджбокс
2. Происходит перехват преобразования CharToOem
3. в мемо2 выводится текст "блаблабла" или оригинальный текст мемо1 без преобразования CharToOem

Подскажите что и как лучше сделать или что почитать, желательно примеры с полным описание той или иной строчки кода.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2016, 10:32
Ответы с готовыми решениями:

Глобальный хук апи функций - первый вызов всегда пропускается
Нашел несколько кодов с установкой глобальной ловушки. Пытаюсь отловить вызов функции MessageBoxA,...

Как подключить API-функцию CharToOem ?
Как мне подключить API-функцию CharToOem ? Напишите пример, пожалуйста. А то я не знаю, что такое...

Не получается поставить хук на функцию через запись в код
Прошу помочь, сижу уже несколько часов. До этого нормально писал такой хук, только на один раз,...

Хук на функцию TextOutW - получение текста метки другого приложения
Приветствую господа, Есть у меня стороннее приложение, написанное на С++ в среде Qt. Я хочу...

3
49 / 49 / 34
Регистрация: 16.02.2016
Сообщений: 277
30.06.2016, 11:33 2
какой смысл перехватывать внутри своего приложения? на то он и хук, чтобы делать перехват в других приложениях
Миниатюры
Хук на Апи функцию CharToOem  
0
0 / 0 / 0
Регистрация: 30.06.2016
Сообщений: 2
30.06.2016, 11:43  [ТС] 3
Цитата Сообщение от VyachNik Посмотреть сообщение
какой смысл перехватывать внутри своего приложения? на то он и хук, чтобы делать перехват в других приложениях
Смысл в том что бы научиться это делать для начала в своем приложении, а потом изучать проес выдергивания определенного приложения сравнивая пид, имя процесс и прочее
Да и в своей программе происходит вызов внешней dll, так что мы перехватываем ее

Я привык изучать постепенно, а не сразу в омут

P.S.
1. Перехват в своей самописной программе
2. Перехват в своей самописной программе используя внедрение dll
3. Перехват в любой программе используя dll

Считаю такой подход оптимальным, если не прав то киньте камень желательно с блекджекомишлю ссылками )))
0
49 / 49 / 34
Регистрация: 16.02.2016
Сообщений: 277
30.06.2016, 11:52 4
Цитата Сообщение от Dark_Ph0eNix Посмотреть сообщение
Считаю такой подход оптимальным
ну тогда удачи!
0
30.06.2016, 11:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2016, 11:52
Помогаю со студенческими работами здесь

CharToOem. Помогите!
Создаю текстовый файл в Пенсионный Фонд. Проблема: Получается в DOS вот, что:...

Функция CharToOem
Объясните пожалуйста, в чем тут ошибка? #include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include...

трудности с CharToOem
есть код: char* Rus(char* text) { char* buf = new char(600); CharToOem(text, buf); ...

VS C++ Не работает CharToOem
#include &lt;iostream&gt; #include&lt;Windows.h&gt; using namespace std; void reversit(char); int main() {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru