Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не работает код


Igit ©   (2003-11-27 08:20:00) 

Если создать отдельную программу без VCL и KOL, то все работат, а в MCK этот код не работает

procedure MemPatch(filename:string);
const buf:array[0..1] of byte=($00,$90); // Первый байт - хоть что, второй опкод nop'а
var
 rw:cardinal;
 sti:tstartupinfo;
 lpPi:tprocessinformation;

begin
// Создаем процесс
if not CreateProcess(nil,PChar(filename),nil,nil,false,CREATE_NEW_CONSOLE or
  NORMAL_PRIORITY_CLASS,nil,nil,StI,lpPI) then
  begin
     ShowMessage('Can''t find...');
     exit
  end
else
  while true do
     if readprocessmemory(lppi.hProcess,pointer($4A1C91),@buf[0],1,rw) // Читаем один байт по адресу 00441785
     then
        if buf[0]<>$0 then // Проверяем на распакованность, если не 0 - то распаковалась
           begin
              // Подождем, пока asprotect проверит память, иначе будет писать 'Protection Error 15'
              sleep(300);
              //остановили процесс
              suspendthread(lppi.hThread);
              //записали что хотели
              writeprocessmemory(lppi.hProcess,pointer($4A1C91),@buf[1],1,rw);
              writeprocessmemory(lppi.hProcess,pointer($4A1C92),@buf[1],1,rw);
              writeprocessmemory(lppi.hProcess,pointer($4A1C93),@buf[1],1,rw);
              writeprocessmemory(lppi.hProcess,pointer($4A1C94),@buf[1],1,rw);
              writeprocessmemory(lppi.hProcess,pointer($4A1C95),@buf[1],1,rw);
              writeprocessmemory(lppi.hProcess,pointer($4A1C96),@buf[1],1,rw);
              //поехали дальше!
              resumethread(lppi.hThread);
              closehandle(lppi.hprocess);
              // Сами закрываемся
              exit;
           end;
end;


Вылетает ошибка на CreateProcess "Ошибка инициализации приложения..."
Дальше программа подвисает...


Igit   (2003-11-29 08:03:00) [1]

Спксибо, все работает.


SPeller   (2003-11-27 15:09:00) [2]


>  sti:tstartupinfo;
>  lpPi:tprocessinformation

А эти структуры, случаем, инициализировать не надо? Хотябы нули туда записать?


Igit   (2003-11-27 14:58:00) [3]

Ну эт ясно что с кол...


SPeller   (2003-11-27 14:43:00) [4]

В МСК и не должно ничего работать. МСК к готовой программе не имеет никакого отношения. Может, программа всё-таки написана с КОЛ?


SPeller   (2003-11-27 14:43:00) [5]

В МСК и не должно ничего работать. МСК к готовой программе не имеет никакого отношения. Может, программа всё-таки написана с КОЛ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо