[delphi] DLL Injection - Pytanie i dobry materiał na Artykuł

0

Otóż mam pytanie jak można napisać loader'a do danej aplikacji, wiem, że są różne tego sposoby i niektóre działają tylko na Win 2k/XP inne tylko na Win 9x.

Wiem, że jest dużo materiałów na ten temat w Internecie, ale większość jest opisana w C++. Znalazłem kod dla Delphi, ale brakuje mu komentarzy, a sam kod jest chaotycznie napisany i ledwo co da się cokolwiek zrozumiec..

Prosiłbym kogoś kto się na tym zna o napisanie jakiegoś prostego przykladu z objaśnieniem go.. nie chodzi m itu o gotowca, ale prosty przyklad z opisem co i jak i co sie z czym je

Z góry dziękuje za odpowiedź :)

0

Szkoda, że nie ma opcji edytuj... chciałem zaznaczyć, że nie chce tej wiedzy wykorzystywać w złych zamiarach.. ostatnio troche cztałem o firewallach i programach filtrujących pakiety, i dowiedziałem się, że wykorzystują one DLL Injection. A przydałaby mi się taka wiedza, gdyż chciałbym rozwinąć swoje horyzonty w programowaniu o ten temat wydaje mi się dosyć ciekawy chociaż wiem, że nie jest łatwy.

// niestety edytować posty można tylko jeśli się je pisze jako zalogowany użytkownik - Q

0

Ja również jestem tym zainteresowany. Mógłby ktoś przybliżyć temat, bo rzeczywiście tylko są same przykłady w c++. Przy okazji przydałaby się porada jak pobrać PID procesu o określonej nazwie execa (np. notepad.exe)

0

Na http://www.opensc.ws jest tego od cholery, głównie do Delphi i VB.

0
Darkhog napisał(a)

Przy okazji przydałaby się porada jak pobrać PID procesu o określonej nazwie execa (np. notepad.exe)

A googlowałeś chociaż? Ja ten kod mam z googli, bo sam bym na niego nie wpadl. Nazwa funkcji tylko inna.

uses
  TlHelp32;
//..
function ProcessIDFromAppname32(AppName : string) : DWORD;
var
  SnapShot : THandle;
  processEntry : TProcessEntry32;
begin
  Result := 0;
  AppName := AnsiUpperCase(AppName);
  SnapShot := CreateToolhelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if SnapShot <> 0 then
  try
    ProcessEntry.dwSize := SizeOf(ProcessEntry);
    if Process32First(SnapShot, ProcessEntry) then
      repeat
        if Pos(AppName, AnsiUpperCase(ExtractFilename
          (StrPas(processEntry.szExeFile)))) > 0 then
        begin
          Result := ProcessEntry.th32ProcessID;
          Break;
        end;
      until not Process32Next(SnapShot, ProcessEntry);
  finally
    CloseHandle(SnapShot);
  end;
end;
0

Tylko skąd wziąć unita TlHelp32? W moim Delphi 7 tego nie ma, ani w Lazarusie

0

Nie wiem jak w Lazarusie, ale w Delphi 7 na 100000% powinien być jeżeli go nie usuwałeś.
Sprawdziłem w mojej wersji Delphi 7 Personal jest, w instalce równiez w podkatalogu LIB.

1 użytkowników online, w tym zalogowanych: 0, gości: 1