وب

اسکریپ نویسی +ویروس نویسی با AutoIt

مقدمه ای بر AutoIT
AutoIt یه زبان اسکریپتی شبیه vb واقعا جذابو جالبو پرقدرت و پس از حمایت کاربران توسعه دهنگان این زبان بصورت گرافیکی هم این برنامه رو گسترش دادن بطوریکه میتونید همانند برنامه های ویندوزی تواین زبان هم برنامه ویندوزی بسازی با این تفاوت که میتونی در لینوکس هم اجرا کنی بدون وابستگی به فریمورک خاصی
برای شروع، AutoIT را دانلود کرده و آن را نصب کنید.==>لینک https://www.autoitscript.com/

تو این صفحه نسخه های مختلف و توضیحات لازم نوشته شده اما همین لینک بلایی همه کار میکنه https://www.autoitscript.com/site/autoit/downloads/
این برنامه ابتدای کاربرای ساخت ویروس و اسکریپت بوجود اومده بود اما حالا قدرتش بسیار زیاد شده–فعلا مرحله نصب===>
پس از نصب همانند شکل زیر با کلیک راست رو صفحه و یه فایل اتوایت ایجادکنید شما می توانید اسم اون رو هر چیزی که میخایید بزارید اما پسوندش رو به .au3 تغییر دهید. این فایل اسکریپت است که AutoIT استفاده می کند اما AutoIT نیز همراه با یک ویرایشگر خاص است که باعث می شود همه چیز کمی ساده تر شود.
اگر بر روی فایل جدید .au3 جدید راست کلیک کنید، سه گزینه جدید وجود دارد: Compile Script، Edit Script و Run Script. را انتخاب کنید Edit Script

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

اگر قراره کدی نوشته بشه گزینه edit script رو انتخاب کنید سایر گزینه باعث اجرای برنامه میشن حواستون باشه برنامه های بسیار مخربی با این ساخته میشه
پس اون برنامه هایی که دانلود کردن رو ابتدا ویرایش کند نه اجرا
توانایی های این زبان
آسان برای یادگیری نحو BASIC مانند
شبیه سازی اعمال فشار کلید و حرکات موس
دستکاری پنجره ها و پردازش ها
تعامل با تمام کنترل های ویندوز استاندارد
اسکریپت ها را می توان به اجرایی مستقل کامپایل کرد
ایجاد رابط کاربری گرافیکی (GUI)
پشتیبانی COM
عبارات منظم
به طور مستقیم از DLL خارجی و توابع API ویندوز تماس بگیرید
توابع RunAs Scriptable
Helpfile مفصل و انجمن های پشتیبانی بزرگ مبتنی بر جامعه
سازگار با ویندوز XP SP3 / 2003 SP2 / Vista / 2008 / Windows 7/2008 R2 / Windows 8/2012 R2
یونیکد و پشتیبانی x64
به صورت دیجیتالی برای آرامش ذهن امضا شده است
با کنترل حساب کاربری ویندوز (UAC) کار می کند
در اینجا یک اسکریپت مثال است. توجه کنید که ؛ برای توضیح بخش های کد استفاده می شود:

#include <MsgBoxConstants.au3>

MsgBox($MB_SYSTEMMODAL, "My First Script!", "Hello World")



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

#include <MsgBoxConstants.au3>

MsgBox($MB_SYSTEMMODAL, "My second script!", "Hello from the main script!")

Example_Func()

Func Example_Func()
    Return MsgBox($MB_SYSTEMMODAL, "My Second Script!", "Hello from the functions!")
EndFunc   ;==>Example_Func 

نتیجه اجرا

پارامترهای خط فرمان
گذراندن پارامترهای خط فرمان به اجرایی خودتان در AutoIt قابل دستیابی است. با استفاده از متغیرهای ثابت $ CmdLine و $ CmdLineRaw، می توان پارامترهای فرمان را گذراند. اختصاص دادن این متغیرها به داده های جدید باعث می شود AutoIt یک خطا را بازگرداند، زیرا در طی اجرای اسکریپت نمی توان آن را تغییر داد. توجه داشته باشید که هر دو متغیر وجود دارد که آیا پارامترهای فرماندهی منتقل می شوند یا خیر.

آرایه خاص $ CmdLine در ابتدای اسکریپت با پارامترهای خط فرمان به اسکریپت AutoIt شما ارسال می شود. اگر اسکریپت خود را به جای اجرایی اجرا کنید، ScriptName.au3 willl به عنوان یک پارامتر نادیده گرفته می شود.
کنترل
یکی از بهترین ویژگی های AutoIt v3 توانایی کار مستقیم با انواع خاصی از کنترل های پنجره است. تقریبا همه چیزهایی که در پنجره مشاهده می کنید، کنترل نوعی است. دکمه ها، لیست جعبه ها، زمینه های ویرایش و متن استاتیک همه نمونه هایی از کنترل ها هستند. در واقع، Notepad تنها یک کنترل بزرگ “ویرایش” است! از آنجا که AutoIt به طور مستقیم با یک کنترل کار می کند، آنها راه قابل اعتمادتری را برای خودکار سازی از ارسال ارسال کلید به شما ارائه می دهند.
توجه: AutoIt فقط با کنترل های استاندارد مایکروسافت کار می کند. بعضی از برنامه ها کنترل های سفارشی خود را می نویسند که ممکن است مانند یک کنترل استاندارد MS شبیه باشند اما ممکن است در مقابل خودکار سازی مقاومت کنند. آزمایشی!

با استفاده از ابزار AutoIt Window Info می توانید موشواره خود را در اطراف پنجره مورد علاقه خود قرار دهید و اطلاعاتی از کنترل که در حال حاضر تحت ماوس شما قرار دارد داده می شود.
توصیف خاص می تواند به عنوان پارامتر controlID مورد استفاده در بسیاری از توابع کنترل … () استفاده شود. این شرح را می توان برای شناسایی یک کنترل با خواص زیر استفاده کرد:
شناسه – شناسه کنترل داخلی. شناسه کنترل عددی داخلی است که ویندوز به هر کنترل می دهد. به طور کلی بهترین روش شناسایی کنترل است. علاوه بر ابزار InfoIndex WindowIndex، برنامه های دیگر مانند خوانندگان صفحه نمایش برای نابینایان و ابزارهای مایکروسافت / API ممکن است شما را قادر به دریافت این شناسه کنترل
TEXT – متن در کنترل، به عنوان مثال “& بعدی” بر روی یک دکمه
CLASS – نام کلاس کنترل داخلی مانند “ویرایش” یا “دکمه”
CLASSNN – مقدار ClassnameNN در نسخه های قبلی AutoIt مانند “Edit1” استفاده می شود.
NAME – اسم درونی دات نت فریم ورک WinForms (در صورت موجود بودن)
REGEXPCLASS – کنترل نام کلاس با استفاده از یک عبارت منظم
X \ Y \ W \ H – موقعیت و اندازه یک کنترل.
INSTANCE – نمونه بر اساس 1 که تمام خواص داده شده مطابقت دارد.
یک یا چند ویژگی در پارامتر controlID یک فرمان کنترل در قالب استفاده می شود:

[PROPERTY1 : Value1; PROPERTY2:Value2] 

توجه: اگر این فرمت خاص استفاده نشود، پارامتر به عنوان شناسه کنترل (اگر عددی) یا ClassnameNN / متن کنترل (اگر یک رشته) گرفته شود. اگر چه فرمت های خاص بیشتر از این روش ها طولانی تر است اما بسیار مبهم است.
اگر مقدار باید یک “؛” باشد باید دو برابر شود
به عنوان مثال، ارسال متن به ویرایش 1 ویرایش در پنجره دفترچه یادداشت

ControlSend("Untitled - Notepad", "", "[CLASS:Edit; INSTANCE:1]", "This is some text") 

ControlSend("Untitled - Notepad", "", "[CLASSNN:Edit1]", "This is some text") 

بازگشت بستگی به دستور دارد به عنوان جدول زیر نشان می دهد. در صورت خطا (مانند یک دستور یا پنجره / کنترل نامعتبر)، @ error = 1.
“IsVisible”، “” بازده 1، اگر کنترل قابل مشاهده است، 0 در غیر این صورت
“IsEnabled”، “” 1، اگر کنترل فعال باشد، 1 بازگشت می کند، 0 در غیر این صورت
“ShowDropDown”، “” نمایش کشویی ComboBox را نمایش می دهد
“HideDropDown”، “” منوی کشویی ComboBox را مخفی می کند
“AddString”، ‘string’ یک رشته را به انتهای یک لیستبوک یا ComboBox اضافه می کند
“DelString”، وقفه یک رشته را با توجه به وقوع در یک لیست بک یا ComboBox حذف می کند
“FindString”، ‘string’ رفرش رویداد را از رشته دقیق در ListBox یا ComboBox رد می کند
“SetCurrentSelection”، occurrence تنظیم انتخاب برای وقوع ref در لیست بک یا ComboBox
“SelectString”، ‘string’ انتخاب مجموعه با توجه به رشته در لیست بک یا ComboBox
“IsChecked”، “” بازگرداندن 1 اگر دکمه چک شود، 0 در غیر این صورت
“بررسی”، “” بررسی رادیو و یا چک کردن دکمه
“UnCheck”، “” رفع رادیو یا بررسی دکمه
“GetCurrentLine”، “” خط # را باز می کند جایی که caret در ویرایش است
“GetCurrentCol”، “” ستون # را باز می کند جایی که caret در Edit است
“GetCurrentSelection”، “” نام مورد انتخاب شده در لیست انتخابی یا ComboBox را برمی گرداند
“GetLineCount”، “” تعداد خطوط در ویرایش را بازمیگرداند
“GetLine”، line # متن را در خط # از یک ویرایش منتقل می کند
“GetSelected”، “” متن انتخابی ویرایش را بازمیگرداند
“EditPaste”، “string” رشته “رشته” را در جایگاه کارت Edit قرار می دهد
“CurrentTab”، “” برگه فعلی نشان داده شده از یک SysTabControl32 را بازمیگرداند
“TabRight”، “” به برگه بعدی به سمت راست یک SysTabControl32 حرکت می کند
“TabLeft”، “” به برگه بعدی به سمت چپ SysTabControl32 حرکت می کند
“SendCommandID”، ID فرمان شبیه سازی پیام WM_COMMAND. معمولا برای کنترل ToolbarWindow32 استفاده می شود – برای دریافت ID فرمان، از برگه ToolBar Au3Info استفاده کنید.
در AutoIt تنها یک نوع داده وجود دارد که یک Variant نامیده می شود. یک نوع می تواند داده های عددی یا رشته ای را داشته باشد و تصمیم می گیرد که چگونه داده ها را با توجه به شرایطی که در آن استفاده می شود، استفاده کند. به عنوان مثال، اگر شما دو اصلاح را امتحان کنید و آنها را دو برابر کنید، اگر شما سعی می کنید و پیوند (join) دو نوع آنها به عنوان رشته ها مورد استفاده قرار می گیرند
بعضی مثالها:
10 * 20 برابر با شماره 200 است (* برای دو عدد صحیح استفاده می شود)
10 * “20” برابر با 200 است
“10” * “20” برابر با 200 است
10 و 20 برابر با رشته “1020” (و برای پیوستن به رشته ها استفاده می شود)
اگر یک رشته به عنوان یک عدد استفاده شود، یک تماس ضمنی به Number () انجام می شود. بنابراین اگر تعداد اعداد معتبر نباشد، فرض می شود برابر با 0. به عنوان مثال
10 * “fgh” برابر با عدد 0 است.
اگر یک رشته به عنوان یک رول استفاده می شود و یک رشته خالی است “”، فرض می شود برابر False
نه “” برابر با Boolean True است.

اعداد می توانند عدد دهدهی استاندارد مانند 2، 4.566 و -7 باشد.
نشانه علمی نیز پشتیبانی می شود؛ بنابراین، شما می توانید 1.5E3 را به جای 1500 ارسال کنید.
عدد صحیح (عدد صحیح) نیز می تواند در نماد هگزادسیمال قبل از عدد صحیح با 0x به صورت 0x409 یا 0x4fff نمایش داده شود.
رشته ها
رشته ها در دو نقل قول مانند “این” محصور می شوند. اگر میخواهید رشته ای را که در واقع حاوی نقل قول دوگانه است، استفاده کنید، آن را دو بار به مانند:
“در اینجا” “” دو نقل قول “” – خوب؟ “
شما همچنین می توانید از یک نقل قول مانند “این” استفاده کنید و “اینجا یک” نقل قول “است – خوب؟”
شما می توانید انواع نقل قول را برای کار ساده تر ترکیب کنید و از نیاز به تقسیم نقل قول های خود برای دریافت آنچه که می خواهید. به عنوان مثال اگر می خواهید از ردیف های شما دو برابر نقل قول استفاده کنید، باید از یک نقل قول برای اعلان استفاده کنید.
این “جمله” شامل “تعداد زیادی” از “دو نقل قول” آیا آن را ندارد؟
بسیار ساده تر از:
“این” “جمله” “شامل” “تعداد زیادی” “از” “دو نقل قول” “آیا آن را ندارد؟”
هنگام ارزیابی، رشته ها می توانند متغیرهای Env یا Substitution را با توجه به تعریف تابع Opt () متغیرهای متغیر Var داشته باشند.
تمام رشته های AutoIt از رمزگذاری UTF-16 (در واقع و دقیق تر UCS-2) استفاده می کنند.
booleans
بولین ها مقادیر منطقی هستند. فقط دو ارزش بولی وجود دارد: درست و نادرست.
آنها را می توان در تخصیص های متغیر، همراه با اپراتورهای بولی و، و یا نه استفاده کرد.
مثال ها:
$ bBoolean1 = درست است
$ bBoolean2 = اشتباه است
$ bBoolean3 = $ bBoolean1 و $ bBoolean2
این باعث می شود که $ bBoolean3 غلط باشد
$ bBoolean1 = اشتباه است
$ bBoolean2 = نه $ bBoolean1
این باعث می شود که $ bBoolean2 True باشد

اگر مقادیر بولین همراه با اعداد استفاده شود، قوانین زیر اعمال می شود:
مقدار 0 برابر با Boolean False خواهد بود
هر عدد دیگر مقدار برابر با Boolean True خواهد بود
مثال:
$ iNumber1 = 0
$ bBoolean1 = درست است
$ bBoolean2 = $ iNumber1 و $ bBoolean1
این باعث می شود که $ bBoolean2 اشتباه باشد

اگر از arithmetics با ارزش های بولی استفاده می کنید (که توصیه نمی شود!)، قوانین زیر اعمال می شود:
یک Boolean True به مقدار عددی 1 تبدیل می شود
یک اشتباه بولی به مقدار عددی 0 تبدیل می شود
مثال:
$ bBoolean1 = درست است
$ iNumber1 = 100
$ iNumber2 = $ bBoolean1 + $ iNumber1
این باعث می شود که $ iNumber2 به عنوان عددی 101 باشد

اگر از رشته ها به همراه مقادیر بول استفاده می کنید، به صورت زیر تبدیل می شوند:
یک Boolean True مقدار رشته ای “True” خواهد بود
مقدار Boolean False مقدار رشته ای “False” خواهد بود
مثال:
$ bBoolean1 = درست است
$ sString1 = “تست:”
$ sString2 = $ sString1 و $ bBoolean1
این باعث خواهد شد $ sString2 مقدار رشته “Test: True” باشد
راه دیگر در هر صورت متفاوت است. وقتی مقادیر رشته ای با مقادیر بولین استفاده می کنید، قوانین زیر اعمال می شوند:
فقط یک رشته خالی (“”) یک دروغ غلط است
هر مقدار رشته ای دیگر (از جمله رشته ای برابر با 0) خواهد بود که بولی درست باشد
دودویی
نوع دودویی می تواند مقدار هر بایت را ذخیره کند. آنها در نمایشگر شانزده ساله در هنگام ذخیره شدن در یک متغیر رشته تبدیل می شوند. مثال:
$ dBin = باینری (“abc”)
$ sString = رشته ($ dBin)؛ “0x616263”

اشاره گر
نوع اشاره گر یک آدرس حافظه را که 32 بیت یا 64 بیت است، بسته به اینکه آیا 32 بیت یا 64 بیتی از AutoIt استفاده می شود، ذخیره می کند. هنگامی که در یک متغیر رشته ذخیره می شود، آنها به نمایندگی هگزادسیم تبدیل می شوند. دستگیره پنجره (HWnd) به عنوان بازگشت از WinGetHandle () یک نوع نشانگر است.
متغیر ایجاد شده با DllStructCreate () می تواند به عنوان اشارهگر مورد استفاده قرار گیرد اگر نوع struct * در DllCall () استفاده شود.
یک نشانگر تعریف شده توسط DllStructGetPtr () می تواند به این پارامتر با نوع struct * منتقل شود.
انواع داده ها و محدوده ها
جدول زیر انواع داده ها و محدوده های آنها را نشان می دهد.
Int32 32 بیت شماره عدد صحیح امضا شده.
Int64 64 bit عدد صحیح امضا شده
دو عدد نقطه شناور دو دقت.
رشته می تواند شامل رشته های تا 2147483647 حرف باشد.
داده های باینری باینری می تواند تا 2147483647 بایت داشته باشد.
اشاره گر آدرس اشارهگر حافظه. 32 بیتی یا 64 بیتی بسته به نسخه ای که AutoIt مورد استفاده قرار می گیرد.
فک کنم طولانی شد یه مثال میزنم بقیه برای جلسه بعد
ابتدا کتابخانه inet رو اضافه میکنیم و اینم کد نمایش آی پی

#include <Inet.au3>
Local $ip = _GetIP()

http://ayrMsgBox(0, "عزیز اینم ای پی", "Your IP Address is: " &amp; $ip)

نتیجه

نهایتا اینو میگم
این زبان قدرتمندیه من به چشم زبان دوم بهش نگاه میکنم
به یک دلیل قابل توجه هست –اونم اینکه به هیچ فریمورکی وابسته نیست

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *