ورود

View Full Version : Keylogger



Elnaz.Etedali
شنبه 15 اسفند 1388, 11:42 صبح
سلام.در رابطه با Keylogger میخواستم بدونم سورسی هست ؟

Elnaz.Etedali
شنبه 15 اسفند 1388, 11:54 صبح
رویداد OnKeyPress فقط کلیدهای فشرده شده در همون برنامه را نشون میده ، میشه کلیدهای فشرده شده در برنامه های دیگه رو هم تشخیص داد ؟

Mahmood_M
شنبه 15 اسفند 1388, 12:17 عصر
عبارت " Hook " رو در سايت جستجو كنيد ...

Elnaz.Etedali
شنبه 15 اسفند 1388, 12:20 عصر
جستجو کردم
Keyboard Hook را هم جستجو کردم ولی نتونستم از کدهاشون استفاده کنم .

شبیر کریمی
شنبه 15 اسفند 1388, 14:45 عصر
به اینجا یه سری بزنید:

http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm

Elnaz.Etedali
شنبه 15 اسفند 1388, 14:59 عصر
مرسی من زبانم خوب نیست این سورس چکار میکنه ؟
اصلا هوک یعنی چی ؟

Mahmood_M
شنبه 15 اسفند 1388, 19:25 عصر
اصلا هوک یعنی چی ؟
به زبان ساده :
Hook يعني قلاب انداختن يا گير انداختن ! ، وقتي يك هوك در سيستم تعريف ميكنيد ، درواقع يك قلاب مي اندازيد براي به دام انداختن پيغامهاي سيستم عامل به نرم افزارها ...
مثلا وقتي يك هوك مربوط به Keyboard ثبت كنيد ، پيغامهايي كه از كيبرد به برنامه ها ارسال ميشه رو به دام مي اندازيد به اين ترتيب كه ابتدا برنامه شما پيغام رو دريافت مي كنه و بعد از ارسال اون به محيط برنامه ي شما ، اون رو به برنامه ( يا تابع ) اصلي اي كه بايد اون رو دريافت كنه ارسال مي كنه ، اخلالي در كار ساير برنامه ها پيش نمياد ولي ابتدا برنامه ي شما كه هوك رو قرار داده پيغامها رو دريافت مي كنه !
Hook ها دو نوع هستند ، Global و Local

Global : با استفاده از اين هوك مي تونيد براي تمام برنامه ها ( Thread ها ) ي در حال اجرا قلاب بزاريد ، حتي مي تونيد برنامتون رو ببنديد و تابع مربوط به هوك رو در يك DLL قرار بديد و بدون اين كه برنامه اي اجرا كنيد DLL شما پيغامها رو دريافت كنه و كار مورد نظرتون رو انجام بده ...

Local : اين نوع هوك براي زير نظر گرفتن يك برنامه ( يك Thread ) خاص به كار ميره در اين روش بايد ID مربوط به Thread مورد نظر رو داشته باشيد و اون رو به برنامه اعلام كنيد تا اون رو تحت نظر بگيره ، براي اين نوع هوك بايد برنامتون اجرا باشه و مانيتور كنه ...

براي نحوه ي انجام هوك به تاپيك زير بريد :

تاپيك زير ! (http://barnamenevis.org/forum/showthread.php?t=184405)
اگر سئوال خاصي بود در يك تاپيك جدا و به صورت جزيي تر بپرسيد ...

موفق باشيد ...

Elnaz.Etedali
شنبه 15 اسفند 1388, 19:38 عصر
مرسی مفید بود
این لینکی که دادید برای موس هست . اون لینکی که آقای کریمی دادن چجوری میشه ازش استفاده کرد ؟

Mahmood_M
شنبه 15 اسفند 1388, 19:41 عصر
موس و كيبرد فرق زيادي نمي كنند ،‌در همونجا در مورد كيبرد هم توضيح داده شده ، DLL اي كه قرار دادم هم ، هم براي موس و هم باي كيبرد هست ، توضيحات مربوط به كد DLL رو بخونيد كار راحت ميشه ...
تفاوت موس و كيبرد فقط در هنگام ثبت هوك هست كه بايد نوعش مشخص بشه ...

موفق باشيد ...

Elnaz.Etedali
یک شنبه 16 اسفند 1388, 19:14 عصر
لینک دانلود خرابه

Mahmood_M
یک شنبه 16 اسفند 1388, 22:36 عصر
با این صحبتی که کردید ما اگه به وسیله فایل exe یک dll رو run کنیم و فایل exe رو ببندیم در حقیقت اون dll بقیه کارهارو انجام میده.
یعنی بدون اینکه پراسسی در حال اجرا باشه عواملی که نیاز داریم رو میشه اجرا کرد؟
بايد به وسيله ي فايل Exe هوك رو ثبت كنيد و آدرس تابع درون DLL رو در اون قرار بديد ...
وقتي ،‌ يك هوك ثبت مي كنيد ، آدرس يك تابع رو به ويندوز مي ديد كه پيغامها رو به اون بفرسته ، اگر اين تابع در يك DLL باشه ويندوز اون رو به تابع درون DLL ارسال مي كنه و نياز به اجرا ي فايل Exe اي نيست كه منتظر پيغام بمونه ...

لینک دانلود خرابه
مشكلي در سايت ParsaSpace پيش اومده و لينكهاي قديميش ديگه در دسترس نيستن !
راستش هرچي توي هاردم مي گردم اون DLL رو پيدا نمي كنم ، اگه پيدا كردم همينجا قرار مي دم ...

موفق باشيد ...

Elnaz.Etedali
دوشنبه 17 اسفند 1388, 09:54 صبح
مرسی. بدون DLL نمیشه ؟ فقط میخوام زمانی که برناه اجرا هست ، کلیدهای زده شده در همه نرم افزار ها را تشخیص بده

Mahmood_M
دوشنبه 17 اسفند 1388, 10:03 صبح
شما از اينجا (http://delphi.about.com/od/kbwinshell/a/delphi_hook.htm) كارتون رو شروع كنيد ، هرجا به مشكل برخورديد بپرسيد ...
اينكه زبانتون ضعيف هست زياد مهم نيست ، اين مقاله به زبان ساده اي نوشته شده ...

موفق باشيد ...

Elnaz.Etedali
دوشنبه 17 اسفند 1388, 19:12 عصر
باور کنید سعی کردم بخونم ولی نمیتونم
نمیشه فارسی یکی توضیح بده که از کجا باید شروع کرد ؟
همیشه باید از DLL استفاده کرد ؟بدون DLL نمیشه ؟

Hamid.Kad
دوشنبه 17 اسفند 1388, 19:58 عصر
چرا میشه.
من شخصاً از تابع GetAsyncKeyState استفاده میکنم. این تابع کد اسکی کلید رو میگیره (مثلاً برای حرف A عدد 65) و اگر کاربر اون رو فشار داده باشه مقدار خروجیش -32767 میشه. با یه حلقه میتونید این کار رو انجام بدید و کلیدهای فشارداده شده رو استخراج کنید

Elnaz.Etedali
دوشنبه 17 اسفند 1388, 20:34 عصر
حروف کوچیک و بزرگ را چجوری میشه تشخیص داد ؟ یا فارسی

Hamid.Kad
دوشنبه 17 اسفند 1388, 20:54 عصر
کافیه با همین تابع مقدار کلید شیفت رو چک کنید.یعنی پارامتر رو vk_shift بفرستید.اگر -32767 بود یعنی حرف بزرگه. البته باید capslock رو هم چک کنید...
برای حروف فارسی من با این تابع نتونستم کاری انجام بدم. بنابراین حروف انگلیسی رو پیدا میکنم و بعد معادل فارسیشو توسط یه تابعی که نوشتم بدست میارم.

Elnaz.Etedali
دوشنبه 17 اسفند 1388, 21:01 عصر
خیلی سخت میشه اینجوری که.برای هوک هم باید اینقدر کار انجام داد ؟
حلقه باید تو تایمر باشه دیگه ؟ اینتروالش چند باشه ؟

Hamid.Kad
دوشنبه 17 اسفند 1388, 21:19 عصر
این کد کار مورد نظرتون رو انجام میده. اینتروال رو میتونید کوچک انتخاب کنید. مشکلی بوجود نمیاد.من 2 گذاشتم
procedure TForm1.tmr1Timer(Sender: TObject);
var
i:Integer;
r:Integer;
s:string;
begin
for i:=32 to 128 do begin
r:=GetASyncKeyState(i);
if r=-32767 then
if GetASyncKeyState(16)=-32767 then
s:=s+chr(i)
else
s:=s+chr(i+32);
end;
Edit1.Text:=Edit1.Text+s;
end;

Elnaz.Etedali
دوشنبه 17 اسفند 1388, 21:24 عصر
مرسی
برای Capslock چی ؟ اعداد چی ؟ یا Space
اگر شیفت را نگه دارید و چندتا کاراکتر تایپ کنید دیگه کار نمیکنه