Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 2
1

Разобрать код АнтиКейлоггера: проблема с SetWindowsHookEx()

22.10.2014, 17:50. Показов 1110. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нужно написать антикейлоггер на c#, есть несколько интересных ссылок по этому поводу, но как это реализовать просто не доходит. Помогите плиз!
http://bcb-games.narod.ru/articles/debug_hook.html

http://www.sources.ru/magazine... ogger.html
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 17:50
Ответы с готовыми решениями:

Разобрать код и создать приложение использующее этот код
ПОМОГИТЕ ПОЖАЛУЙСТА Option Explicit Private Sub Form_DragDrop(Source As Control, x As Single,...

Новичок. Прошу "бывалых" разобрать код подетально, код писал сам (рабочий)
Этот код моя первая самостоятельная работа. Писал его опираясь на уроки из интернета. Однако там...

Разобрать Код
В общем я уже давненько мечтаю написать свой билдер, Пробовал сам, ничего не получилось... В...

Разобрать код
Думал все просто тут, но выводит "A"... Почему? class Program { private...

2
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
22.10.2014, 19:40 2
Цитата Сообщение от Scrypt Посмотреть сообщение
но как это реализовать просто не доходит.
Что именно не доходит ? Там же порядок действий описан черным по белому.

Не по теме:

Да, и у меня такая "защита" вызывает лишь улыбку.

0
0 / 0 / 1
Регистрация: 22.10.2014
Сообщений: 2
22.10.2014, 22:59  [ТС] 3
Лучший ответ Сообщение было отмечено Scrypt как решение

Решение

Не очень хорошо разбираюсь. Вот такой код получился, но дальше строчки return SetWindowsHookEx(WH_DEBUG, proc, GetModuleHandle(curModule.ModuleName), 0); не идет. Что не так не пойму. Может Вы подскажете? Заранее спасибо.

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
using System;
using System.Net;
using System.Net.Mail;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.IO;
 
 
namespace AntiKeylogger
{
    class Program
    {
        #region API
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr SetWindowsHookEx(int idHook, DebugProc lpfn, IntPtr hMod, uint dwThreadId);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool UnhookWindowsHookEx(IntPtr hhk);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam);
 
        [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern IntPtr GetModuleHandle(string lpModuleName);
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern int GetWindowThreadProcessId(
            [In] IntPtr hWnd,
            [Out, Optional] IntPtr lpdwProcessId
            );
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr GetForegroundWindow();
 
        [DllImport("user32.dll", SetLastError = true)]
        static extern ushort GetKeyboardLayout(
            [In] int idThread
            );
        #endregion
 
        static void Main(string[] args)
        {
            _hookID = SetHook(_proc);
            
            UnhookWindowsHookEx(_hookID);
            Console.ReadKey();
        }
 
        private const int WH_KEYBOARD_LL = 13;
        private const int WH_DEBUG = 9;
        private const int WM_KEYDOWN = 0x0100;
        private static DebugProc _proc = HookCallback;
        private static IntPtr _hookID = IntPtr.Zero;
        private delegate IntPtr DebugProc(int nCode, IntPtr wParam, IntPtr lParam);
        private static IntPtr SetHook(DebugProc proc)
        {
            using (Process curProcess = Process.GetCurrentProcess())
            using (ProcessModule curModule = curProcess.MainModule)
            {
                
                return SetWindowsHookEx(WH_DEBUG, proc, GetModuleHandle(curModule.ModuleName), 0);
            }
        }
        
 
        private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
        {
            
            if (nCode == 0 && wParam == (IntPtr)WM_KEYDOWN)
            {
                return (IntPtr)1;
            }
            return CallNextHookEx(_hookID, nCode, wParam, lParam);
        }
        }
    }
0
22.10.2014, 22:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2014, 22:59
Помогаю со студенческими работами здесь

Разобрать код
Доброго времени суток. Прошу помочь разобрать код вируса он распространялся в вк и после запуска...

Разобрать код
Объясните пожалуйста кусочек кода... procedure TMainForm.FormMouseDown(Sender: TObject; Button:...

Разобрать код
Помогите пожулйста розобрать код програми struct node { int item; node* next; { item = x; next...

Разобрать код
#include <stdio.h> int main(int argc, const char * argv) { char a; int counter;...


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

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