تمرین
بخش اول: برنامه ساده C شارپ که چند System Call صدا میزنه
این برنامه یک فایل متنی ایجاد میکنه، داخلش مینویسه، از شبکه استفاده میکنه، و سپس میخوابه.
using System;
using
System.IO;
using System.Net;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Console.WriteLine(" شروع برنامه...");
// 1. ایجاد و نوشتن در فایل
string path = "test_log.txt";
File.WriteAllText(path, "این یک تست است.\n");
// 2. ارسال یک درخواست ساده HTTP
using (var client = new WebClient())
{
string result = client.DownloadString("
http://example.com");
Console.WriteLine(" داده از
example.com دریافت شد.");
}
// 3. وقفه
Thread.Sleep(3000);
Console.WriteLine(" پایان برنامه.");
}
}
بخش دوم: چطور System Callها رو ببینیم؟
🔹 برای ویندوز (با استفاده از Procmon)
ابزار: Process Monitor (Procmon)
📌 مراحل:
Procmon را اجرا کنید.
فیلتر زیر را تنظیم کنید:
Process Name is Program.exe (یا اسم اجرایی برنامه C# خودتون)
حالا برنامه C# رو اجرا کنید (مثلاً dotnet run یا .exe تولید شده رو مستقیم اجرا کنید).
در Procmon، خواهید دید:
CreateFile
WriteFile
ReadFile
RegOpenKey
TCP Connect
Sleep (به شکل وقفه بین درخواستها)
میتونید روی هر آیتم دابلکلیک کنید و جزئیات رو ببینید: مسیر فایل، نتیجه API، رجیستریها و حتی IP مقصد.
سوالات برای بحث :
آیا مسیر فایل نوشته شده در System Callها با چیزی که انتظار داشتید، همخوانی داشت؟
آیا برنامه به دامنهای متصل شد که انتظارش رو نداشتید؟
چه اطلاعاتی از رفتار برنامه فقط از طریق شنود API متوجه شدید؟
#آکادمی_روزبه
مرکز تخصصی CISSP
تئوری و تمرین ضروری برای یادگیری