Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 24.07.2016
Сообщений: 5

Ошибки декларирования функций при компиляции DLL

24.02.2017, 19:20. Показов 959. Ответов 1
Метки dll (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, собрать dll, ссылка на проект MSVC++ ниже:
https://drive.google.com/open?... GFEZ0NnUFE

Это пример использования подмены вызова функции (api hooking) и внедрения своей dll в чужой процесс. Взято отсюда:
http://easyhook.github.io/tuto... ehook.html

Сами две программы собрал, а вот dll не компилируется. Вроде все нужные заголовки добавил, а не работает.
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
#include "pch.h"
#include "BeepHook.h"
#include "easyhook.h"
#include <string>
#include <iostream>
#include <Windows.h>
#include <stdlib.h>
#include <libloaderapi.h>
#include <utilapiset.h>
 
#if _WIN64
#pragma comment(lib, "EasyHook64.lib")
#else
#pragma comment(lib, "EasyHook32.lib")
#endif
 
//extern HMODULE WINAPI GetModuleHandle(LPCTSTR lpModuleName);
//extern BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDuration);
 
DWORD gFreqOffset = 0;
BOOL WINAPI myBeepHook(DWORD dwFreq, DWORD dwDuration)
{
    std::cout << "\n    BeepHook: ****All your beeps belong to us!\n\n";
    return Beep(dwFreq + gFreqOffset, dwDuration);
}
 
// EasyHook will be looking for this export to support DLL injection. If not found then 
// DLL injection will fail.
extern "C" void __declspec(dllexport) __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* inRemoteInfo);
 
void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* inRemoteInfo)
{
    std::cout << "\n\nNativeInjectionEntryPointt(REMOTE_ENTRY_INFO* inRemoteInfo)\n\n" <<
        "IIIII           jjj               tt                dd !!! \n"
        " III  nn nnn          eee    cccc tt      eee       dd !!! \n"
        " III  nnn  nn   jjj ee   e cc     tttt  ee   e  dddddd !!! \n"
        " III  nn   nn   jjj eeeee  cc     tt    eeeee  dd   dd     \n"
        "IIIII nn   nn   jjj  eeeee  ccccc  tttt  eeeee  dddddd !!! \n"
        "              jjjj                                         \n\n";
 
    std::cout << "Injected by process Id: " << inRemoteInfo->HostPID << "\n";
    std::cout << "Passed in data size: " << inRemoteInfo->UserDataSize << "\n";
    if (inRemoteInfo->UserDataSize == sizeof(DWORD))
    {
        gFreqOffset = *reinterpret_cast<DWORD *>(inRemoteInfo->UserData);
        std::cout << "Adjusting Beep frequency by: " << gFreqOffset << "\n";
    }
 
    // Perform hooking
    HOOK_TRACE_INFO hHook = { NULL }; // keep track of our hook
 
    std::cout << "\n";
    std::cout << "Win32 Beep found at address: " << GetProcAddress(GetModuleHandle(TEXT("kernel32")), "Beep") << "\n";
 
    // Install the hook
    NTSTATUS result=0;
    result = LhInstallHook(GetProcAddress(GetModuleHandle(TEXT("kernel32")), "Beep"), myBeepHook, NULL, &hHook);
    if (FAILED(result))
    {
        std::wstring s(RtlGetLastErrorString());
        std::wcout << "Failed to install hook: ";
        std::wcout << s;
    }
    else
    {
        std::cout << "Hook 'myBeepHook installed successfully.";
    }
 
    // If the threadId in the ACL is set to 0,
    // then internally EasyHook uses GetCurrentThreadId()
    ULONG ACLEntries[1] = { 0 };
 
    // Disable the hook for the provided threadIds, enable for all others
    LhSetExclusiveACL(ACLEntries, 1, &hHook);
 
    return;
}
Ошибки:
1>------ Build started: Project: BeepHook, Configuration: Release Win32 ------
1> BeepHook.cpp
1>BeepHook.cpp(24): error C3861: 'Beep': identifier not found
1>BeepHook.cpp(53): error C3861: 'GetModuleHandle': identifier not found
1>BeepHook.cpp(57): error C3861: 'GetModuleHandle': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.02.2017, 19:20
Ответы с готовыми решениями:

Ошибки конструктора и декларирования функций
Аве, форумчане! Задание в универе разрастается, а вместе с этим и код. Заданием является конвертация и изменение яркости на...

Ошибки при компиляции Dll
Всем привет. При компиляции DLL Visual C++ (VS 2005) выдает ошибки: 1&gt; Creating library .\Debug/DLL_Callback.lib and object...

Сортировка в массиве при помощи указателей и функций. Ошибки компиляции
Здравствуйте гениальный народ цифирь))) я начинающий программист) пытаюсь отстучать Си. Столкнулся с Проблемой! Пытаюсь разобраться в...

1
0 / 0 / 0
Регистрация: 24.07.2016
Сообщений: 5
28.02.2017, 00:30  [ТС]
собрал сам.
если создавать проект "новое консольное приложение windows", а потом в свойствах указать, что компилировать в dll, то собирается.
если создавать проект dll, то не собирается.
логики не вижу, но хоть работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2017, 00:30
Помогаю со студенческими работами здесь

Ошибки компиляции специализаций функций в классе
#include &lt;iostream&gt; class Test { public: template &lt;typename T&gt; static void creatObj(T); template &lt;&gt; ...

Отсутствует libstdc++-6.dll и libgcc_s_sjlj-1.dll при компиляции
Открыл на ноутбуке VS 2019, ни одна программа не компилируется, выдает ошибку с отсутствием файлов libstdc++-6.dll и libgcc_s_sjlj-1.dll....

При компиляции DLL-проекта не создается DLL-ка
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...

с2079 и с2228 ошибки при компиляции ниже участок кода, с которым праблема и скрины ошибки
// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ bool game = true; // КЛАССЫ class Me; class mob { public: void showHpMp()

Ошибки при компиляции - исправить ошибки в коде
Помогите исправить ошибки , не понимаю в чем может быть причина ... #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru