Geniş Kapsamlı Loader Yapma?

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Uzman Üye
Katılım
16 Tem 2017
Mesajlar
267
Tepki puanı
33
Yaş
29
8 HİZMET YILI
Kullanıcı MySQL'deki kullanıcı adı ve şifresiyle giriş yapacak. Sonrasında ise bir oyun seçecek. Load dediği anda internetten gerekli dll'yi indirecek ve bu dll'yi oyuna Inject edicek. RAD Studio'da bunu nasıl yapabilirim. Yardımcı olabilecek var mı?
 
Onaylı Üye
Katılım
13 Mar 2016
Mesajlar
71
Tepki puanı
10
Ödüller
7
10 HİZMET YILI
php api kullanabilirsin ama uğraşamam diyorsan bi sunucu alırsın socket programlama ile çok kolay işini görürsün TServerSocket ve TClientSocket kullanarak işi çözebilirsin ama güvenlik için şifreleme şart socket programlamada kesinlikle kullanmalısın php api kullanacaksanda https li site kullanmanı öneririm aksi taktirde fiddler ile gg olabilir benim tavsiyem socket programlama olur çünkü php de birde sql injection denen dalga var
 
ConfuserEX King
Banlı Üye
Katılım
15 Nis 2019
Mesajlar
118
Tepki puanı
17
Yaş
33
7 HİZMET YILI
olm o kolay yaw
Delphi:
Denemedim ama olur
Kullanıcı adı uzun iş
{$R *.dfm} altına gelecek kod:
Kod:
uses
  Winapi.tlHelp32, URLMon, ShellApi;
  var
  RunningApplicationId: HWND;
  Dllolduguyer: string;
  ExEismi: string;
function Inject(const DLLFileName: AnsiString; const ProcessID: Cardinal): Boolean;
var
  hProcess: THandle;
  hThread: THandle;
  BaseAddress: Pointer;
  Size: NativeUInt;
  ThreadID: DWORD;
begin
  Result := False;
  hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID);
  if (hProcess <> 0) then
  begin
    BaseAddress := VirtualAllocEx(hProcess, nil, Length(DLLFileName) + 1, MEM_COMMIT, PAGE_READWRITE );
    if BaseAddress <> nil then
    begin
       WriteProcessMemory(hProcess, BaseAddress, PAnsiChar(DLLFileName), Length(DLLFileName) + 1, Size);
       if NativeUInt(Length(DLLFileName) + 1) = Size then
       begin
         hThread := CreateRemoteThread(hProcess, nil, 0, GetProcAddress(LoadLibrary('kernel32.dll'), 'LoadLibraryA' ), BaseAddress, 0, ThreadID);
         Result := hThread <> 0;
         WaitForSingleObject(hThread, INFINITE);
       end
     end;
     VirtualFreeEx(hProcess, BaseAddress, 0, MEM_RELEASE);
     CloseHandle(hProcess);
  end;
end;
function GetPIDbyProcessName(processName:String): HWND;
var
  GotProcess: Boolean;
  tempHandle: tHandle;
  procE: tProcessEntry32;
begin
  tempHandle := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  procE.dwSize := SizeOf(procE);
  GotProcess := Process32First(tempHandle, procE);
  {$B-}
    if GotProcess and (procE.szExeFile <> processName) then
    begin
      repeat
        GotProcess := Process32Next(tempHandle, procE);
      until (not GotProcess) or (procE.szExeFile = processName);
    end;
  {$B+}
  if GotProcess then
    Result := procE.th32ProcessID
  else
    Result := 0;
  CloseHandle(tempHandle);
end;
procedure XİnjectPanel;
begin
    RunningApplicationId := GetPIDbyProcessName(ExEismi);
      if RunningApplicationId <> 0 then
  begin
    if Inject(AnsiString(Dllolduguyer), RunningApplicationId) then
    begin
//inject edildikden sonra vermesini istdiğin mesaj
      ShowMessage('Injection complete');
    end
    else
    begin
//inject edilmediğinde vermesini istdiğin mesaj
      ShowMessage('FAILED!');
    end;
  end
  else
  begin
    ShowMessage('Process cound not be found');
  end;
end;
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
  try
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
  except
    Result := False;
  end;
end;

ve tetikleme kodu:
bu kodu bottonun begin kısmını silin ve buttona yapıştırın.
Not: DestFile yazan yer ile Dllolduguyer aynı olacak
istersen process list yapıp oraya bağlıyabilirsin
Kod:
const
//     Source file bölümüne dll'nin indirme linki
  SourceFile = 'http://www.google.com/intl/de/images/zedus_stub.dll';
//     Dest file bölümüne dosyayı kaydediceğiniz bölüm ve dosyanın ismi, uzantısı
DestFile = 'C:\Users\UguR\Desktop\Yeni klasör\zedus_stub.dll';
begin
  if DownloadFile(SourceFile, DestFile) then
  begin
//     indirme tamamlanınca vermesini istediginiz mesaj
    ShowMessage('Download succesful!');
  end
  else
  begin
//     indirme çalışmıyınca vermesini istediğiniz mesaj
    ShowMessage('Error while downloading ' + SourceFile);
end;
tthread.sleep(300);
// D3D9_Test.exe yazan yere exe'nin ismi
ExEismi := 'D3D9_Test.exe';
Dllolduguyer := 'C:\Users\UguR\Desktop\Yeni klasör\zedus_stub.dll';
XİnjectPanel;
 
Son düzenleme:
0xc00007b
Uzman Üye
Katılım
6 Şub 2017
Mesajlar
175
Çözümler
1
Tepki puanı
41
Ödüller
9
9 HİZMET YILI
dll'yi internetten indirmenin amacı nedir ?

DLL'ye güncelleme getireceğin zaman loaderi baştan güncelleme zahmetine girişmezsin. Sunucudan sadece .DLL dosyasını güncellersin, kullanıcı loaderden istek yaptığında sunucundaki güncellenmiş .DLL'yi çeker. Diğer türlü .DLL dosyasını loadere gömeceksin ya da harici olarak sunacaksın. Harici olarak sunduğun zaman da loadere pek gerek kalmıyor.
 
Üye
Katılım
7 Tem 2019
Mesajlar
10
Tepki puanı
0
Yaş
31
6 HİZMET YILI
DLL'ye güncelleme getireceğin zaman loaderi baştan güncelleme zahmetine girişmezsin. Sunucudan sadece .DLL dosyasını güncellersin, kullanıcı loaderden istek yaptığında sunucundaki güncellenmiş .DLL'yi çeker. Diğer türlü .DLL dosyasını loadere gömeceksin ya da harici olarak sunacaksın. Harici olarak sunduğun zaman da loadere pek gerek kalmıyor.
Her seferine gereksiz ağ trafiği yaratacağına bence php ile bir api hazırla. Get ile istek yolladığın zaman sana sürümü versin. program ile de kontrol ettir. Eğer sürüm değişmişse indirme işlemini yapsın. dll'yi de sen kodladıysan araya bağlantı koyup senin loaderin ile açılıp açılmadığını kontrol ettir.
 
0xc00007b
Uzman Üye
Katılım
6 Şub 2017
Mesajlar
175
Çözümler
1
Tepki puanı
41
Ödüller
9
9 HİZMET YILI
Her seferine gereksiz ağ trafiği yaratacağına bence php ile bir api hazırla. Get ile istek yolladığın zaman sana sürümü versin. program ile de kontrol ettir. Eğer sürüm değişmişse indirme işlemini yapsın. dll'yi de sen kodladıysan araya bağlantı koyup senin loaderin ile açılıp açılmadığını kontrol ettir.

Günün sonunda .DLL dosyası internetten iniyor. Check işlemi gereksiz trafiği önlemek için.
 
Üye
Katılım
7 Tem 2019
Mesajlar
10
Tepki puanı
0
Yaş
31
6 HİZMET YILI
dll bilgisayarda sabit bir yerde durabilir. sadece güncelleme olacağı zaman eski dosya silinir ve yeni dosya indirilir. en mantıklısı budur.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst