Компоненты для Delphi/C++Builder ~ Components for Delphi/C++Builder 6

Статус
В этой теме нельзя размещать новые ответы.

solover

Местный
Регистрация
6 Авг 2010
Сообщения
91
Реакции
94
Credits
177
Winsoft.WinInet.Component.Suite.1.9.Delphi.2010.XE.Cracked-Lz0

Скрытое содержимое доступно для зарегистрированных пользователей!
 

volod3000

Местный
Регистрация
20 Дек 2008
Сообщения
94
Реакции
490
Credits
182
QuickReport v5.05 for XE4 32+64 Full Source
*** скрытый блок ***

Уважаемый Вы уже второй раз (то что я
заметил) людей в заблуждение вводите,
постоянно по Вашим ссылкам попадаешь на

Для просмотра ссылки Войди или Зарегистрируйся

Вы уж проверьте, если конечно это не
умышленно.

Прошу прощения за оффтоп
 

Decoding

Местный
Регистрация
7 Дек 2009
Сообщения
91
Реакции
274
Credits
176
Уважаемый Вы уже второй раз (то что я
заметил) людей в заблуждение вводите,
постоянно по Вашим ссылкам попадаешь на

Для просмотра ссылки Войди или Зарегистрируйся

Вы уж проверьте, если конечно это не
умышленно.

Прошу прощения за оффтоп

Да норм все, в правом верхнем углу skip нажми (после недолгого счетчика) и будет тебе счастье.
 

LeshaRB

Свой
Регистрация
11 Июн 2007
Сообщения
320
Реакции
467
Credits
39
TMS Component Pack v6.8.2.0 for Delphi & C++Builder 5-XE3 Full Sources
Для просмотра ссылки Войди или Зарегистрируйся

TMS Component Pack v6.8.0.1 for Delphi & C++Builder 5-XE3 Full Source with Install
Для просмотра ссылки Войди или Зарегистрируйся

Добавлено через 11 минут
RAD Studio XE4 Architect
Для просмотра ссылки Войди или Зарегистрируйся

Patch
Для просмотра ссылки Войди или Зарегистрируйся

Я оставлю это сообщение для ссылок
Если еще будешь увеличивать размеры - накажу

Для IDE есть соответствующая тема
 

mauriciopt

Местный
Регистрация
3 Апр 2009
Сообщения
65
Реакции
240
Credits
130
Cindy components 6.0 released and avaible for all from Delphi 7 to Delphi XE4!

- Windows 32 bits/64 bits development support!
- Some units in "Core" folder FireMonkey ready!

Please make any donation to support Cindy project.

Для просмотра ссылки Войди или Зарегистрируйся

283539.jpg

x1.jpg

cyBook.jpg

210830.jpg

234287.jpg

cyPageControl.jpg


Mauricio
 
Последнее редактирование модератором:

Small Donkey

Местный
Регистрация
25 Авг 2008
Сообщения
36
Реакции
125
Credits
70
Injector

Компонент для инжекта dll в выбранный процесс

Инжект из 64 битных процессов в 32/64 битные в Windows 64 бит, из 32 битных процессов в 32 битные в Windows 32/64 бит

Windows 2003/XP/Vista/7/8

Delphi XE2, XE3, XE4, 32/64 бит DCU

Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование модератором:

ant32

Местный
Регистрация
7 Июн 2006
Сообщения
55
Реакции
189
Credits
70

vogel

Местный
Регистрация
11 Ноя 2008
Сообщения
6
Реакции
6
Credits
12
Компонент для инжекта dll в выбранный процесс

Инжект из 64 битных процессов в 32/64 битные в Windows 64 бит, из 32 битных процессов в 32 битные в Windows 32/64 бит

Windows 2003/XP/Vista/7/8

Delphi XE2 32/64 бит DCU
Я надеюсь, что ты просто толстый троль, потому что только слабоумные могут пытаться продать Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся за 300 баксов.

Для тех, кому лень ходить по ссылкам ниже код который использую я.

Код:
const
  DllName = 'thread_splice_lib.dll';
 
function InjectLib(ProcessID: Integer): Boolean;
var
  Process: HWND;
  ThreadRtn: FARPROC;
  DllPath: AnsiString;
  RemoteDll: Pointer;
  BytesWriten: DWORD;
  Thread: DWORD;
  ThreadId: DWORD;
begin
  Result := False;
  // Открываем процесс
  Process := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or
    PROCESS_VM_WRITE, True, ProcessID);
  if Process = 0 then Exit;
  try
    // Выделяем в нем память под строку
    DllPath := AnsiString(ExtractFilePath(ParamStr(0)) + DLLName) + #0;
    RemoteDll := VirtualAllocEx(Process, nil, Length(DllPath),
      MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
    if RemoteDll = nil then Exit;
    try
      // Пишем путь к длл в его адресное пространство
      if not WriteProcessMemory(Process, RemoteDll, PChar(DllPath),
        Length(DllPath), BytesWriten) then Exit;
      if BytesWriten <> DWORD(Length(DllPath)) then Exit;
      // Получаем адрес функции из Kernel32.dll
      ThreadRtn := GetProcAddress(GetModuleHandle('Kernel32.dll'), 'LoadLibraryA');
      if ThreadRtn = nil then Exit;
      // Запускаем удаленный поток
      Thread := CreateRemoteThread(Process, nil, 0, ThreadRtn, RemoteDll, 0, ThreadId);
      if Thread = 0 then Exit;
      try
        // Ждем пока удаленный поток отработает...
        Result := WaitForSingleObject(Thread, INFINITE) = WAIT_OBJECT_0;
      finally
        CloseHandle(Thread);
      end;
    finally
      VirtualFreeEx(Process, RemoteDll, 0, MEM_RELEASE);
    end;
  finally
    CloseHandle(Process);
  end;
end;

Принцип данного метода был описан еще у Рихтера, поэтому на нем останавливаться не буду.
А для выгрузки необходимо реализовать следующий код:

Код:
function ResumeLib(ProcessID: Integer): Boolean;
var
  hLibHandle: THandle;
  hModuleSnap: THandle;
  ModuleEntry: TModuleEntry32;
  OpCodeData: Word;
  Process: HWND;
  BytesWriten: DWORD;
  Thread: DWORD;
  ThreadId: DWORD;
  ExitCode: DWORD;
  PLibHandle: PDWORD;
  OpCode: PWORD;
  CurrUnloadAddrOffset: DWORD;
  UnloadAddrOffset: DWORD;
begin
  Result := False;
 
  // рассчитываем оффсет адреса выгрузки библиотеки относительно адреса ее загрузки
  hLibHandle := LoadLibrary(PChar(DLLName));
  try
    UnloadAddrOffset :=
      DWORD(GetProcAddress(hLibHandle, 'SelfUnload')) - hLibHandle;
    if UnloadAddrOffset = -hLibHandle then Exit;
  finally
    FreeLibrary(hLibHandle);
  end;
 
  // Находим адрес библиотеки в чужом адресном пространстве
  hModuleSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID);
  if hModuleSnap <> INVALID_HANDLE_VALUE then
  try
    FillChar(ModuleEntry, SizeOf(TModuleEntry32), #0);
    ModuleEntry.dwSize := SizeOf(TModuleEntry32);
    if not Module32First(hModuleSnap, ModuleEntry) then Exit;
    repeat
      if AnsiUpperCase(ModuleEntry.szModule) =
        AnsiUpperCase(DLLName) then
      begin
        // Получаем адрес функции выгрузки
        CurrUnloadAddrOffset := ModuleEntry.hModule + UnloadAddrOffset;
        Break;
      end;
    until not Module32Next(hModuleSnap, ModuleEntry);
  finally
    CloseHandle(hModuleSnap);
  end;
 
  // Открываем процесс
  Process := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or
    PROCESS_VM_WRITE, True, ProcessID);
  if Process = 0 then Exit;
  try
    // Пишем опкод jmp [ebx]
    OpCode := VirtualAllocEx(Process, nil, 2,
      MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
    if OpCode = nil then Exit;
    try
      OpCodeData := $23FF;
      if not WriteProcessMemory(Process, OpCode, @OpCodeData,
        2, BytesWriten) then Exit;
 
      // Пишем адрес функции выгрузки (он будет лежать в EBX при старте потока)
      PLibHandle := VirtualAllocEx(Process, nil, 4,
        MEM_COMMIT or MEM_TOP_DOWN, PAGE_READWRITE);
      if PLibHandle = nil then Exit;
      try
        if not WriteProcessMemory(Process, PLibHandle, @CurrUnloadAddrOffset,
          4, BytesWriten) then Exit;
 
        // запускаем поток
        Thread := CreateRemoteThread(Process, nil, 0, OpCode,
          PLibHandle, 0, ThreadId);
        if Thread = 0 then Exit;
        try
          // Ждем пока удаленный поток отработает...
          if (WaitForSingleObject(Thread, INFINITE) = WAIT_OBJECT_0) then
            if GetExitCodeThread(Thread, ExitCode) then
              Result := ExitCode = 0;
        finally
          CloseHandle(Thread);
        end;
      finally
        VirtualFreeEx(Process, PLibHandle, 0, MEM_RELEASE);
      end;
    finally
      VirtualFreeEx(Process, OpCode, 0, MEM_RELEASE);
    end;
  finally
    CloseHandle(Process);
  end;
end;
 
Последнее редактирование модератором:

Small Donkey

Местный
Регистрация
25 Авг 2008
Сообщения
36
Реакции
125
Credits
70
Я надеюсь, что ты просто толстый троль, потому что только слабоумные могут пытаться продать Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся за 300 баксов.

Все это не будет работать если вы хотите из под 64 битного процесса инжектировать в 32 битный процесс

32 бит процесс -> 32 бит процесс
64 бит процесс -> 64 бит процесс
64 бит -> 32 бит не получится

Нет юникода

В Windows 8 - 100% не будет работать UnInject

Вообще что бы выгрузить "чужую" dll нужно сначала установить счетчик Load Count = 1, в Windows 8 уже так не прокатывает

Дальше почитайте "Попробывал сделать инжект длл к другому процессу, но дллка не присоединилась. Код идентичный, что здесь. Почему не получается? Win7 x64"

Абсолютно рабочий компонент пользуйтесь DCU как хотите, в чем проблема?
 
Последнее редактирование модератором:

Small Donkey

Местный
Регистрация
25 Авг 2008
Сообщения
36
Реакции
125
Credits
70
Код:
pThreadStart := GetProcAddress(GetModuleHandle('KERNEL32.DLL'), PAnsiChar('LoadLibraryA'));

Полный бред, вы получаете адрес функции LoadLibraryA из KERNEL32.DLL в своем процессе, нужно прочитать память процесса в который будете внедрять dll и там найти адрес функции LoadLibrary и уже тогда CreateRemoteThread

Добавлено через 16 минут
Ответьте что будет если в вашем процессе будет установлен hook на функцию LoadLibrary, так например делают антивирусы для самозащиты
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.