Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

CreateRemoteThread???   Найти похожие ветки 

 
kaZaNoVa ©   (2005-01-21 13:44) [40]

volser   (21.01.05 13:36) [38]

Var
PID: Cardinal;
//-----------------------
GetWindowThreadProcessId(FindWindow("Progman", nil), @PID);


 
GuAV ©   (2005-01-21 14:06) [41]

Игорь Шевченко ©   (21.01.05 11:42) [34]
Давить вообще-то надо за такой код. Пожизненно :)


Я знаю :) Я просто хотел быстро проверить работоспособность идеи.

У меня нет CreateRemoteThread (9х), а при загрузке ехе файла собой hExe = SysInit.hInstance (что вполне логично).

Так я сделал пример из двух ехе. Передавать указатель оказалось лень, так же как и определять  ImageBase второго ехе.
(кстати, можно ли из ехе экспортировать ?)

Kerk ©   (21.01.05 10:38) [32]
Идею в общем понял. Но 8 кБ релока эксплорера - маловато для дельфовского приложения.
Можно объёдинить идеи и уйти от асма, поместив в релок Explorera delphi-код (и структуру с адресом loadlibrary, createthread и  именем ехе) который уже с помощью loadlibrary загрузит остальной ехе и передаст ему управление через createthread.


 
Kerk ©   (2005-01-21 15:07) [42]

GuAV ©   (21.01.05 14:06) [41]
(кстати, можно ли из ехе экспортировать ?)

можно конечно

> Но 8 кБ релока эксплорера - маловато для дельфовского
> приложения.

ну чего у вас за заморочки? ну зачем именно дельфовское приложение? я предлагаю мыслить шире и внедрять туда приложение на Visual Prolog! :)


 
Игорь Шевченко ©   (2005-01-21 15:19) [43]

GuAV ©   (20.01.05 22:45) [15]


> size of align.


А что за align такой ?

С уважением,


 
Kerk ©   (2005-01-21 15:22) [44]

Игорь Шевченко ©   (21.01.05 15:19) [43]
А что за align такой ?


видимо имелся ввиду мусор для выравнивания адреса начала процедуры


 
Игорь Шевченко ©   (2005-01-21 15:28) [45]

Kerk ©   (21.01.05 15:22) [44]

А зачем его выравнивать?

С уважением,


 
GuAV ©   (2005-01-21 15:34) [46]

Игорь Шевченко ©   (21.01.05 15:19) [43]

Может некорректно выразился, я о том что процедуры dword-aligned, т.е. размер процедуры вычисленный таким образом получистя больше необходимого на 0..3 байт.


procedure P1;
begin
end;

procedure P2;
asm
end;

procedure P3;
asm
 NOP
 NOP
 NOP
end;

procedure P4;
begin
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Lines.Add(Format("P2-P1 = %d",[Integer(@P2)-Integer(@P1)]));
 Memo1.Lines.Add(Format("P4-P3 = %d",[Integer(@P4)-Integer(@P3)]));
// 4 в обоих случаях
end;


 
Игорь Шевченко ©   (2005-01-21 16:35) [47]

GuAV ©   (21.01.05 15:34) [46]

Так это фича конкретного компилятора...И не факт, что устоявшаяся.

С уважением,


 
Kerk ©   (2005-01-21 16:41) [48]

Игорь Шевченко ©   (21.01.05 16:35) [47]
дык пофиг :)
все равно это невлияет на вычисление размера процедуры :)


 
GuAV ©   (2005-01-21 17:12) [49]

Игорь Шевченко ©   (21.01.05 16:35) [47]

Я и не говорю что факт. Сохранение порядка процедур - тоже фича компилятора.

Однако более надёжного и точного способа найти "размер процедуры" подсказать не могу.


 
-SeM-   (2005-01-21 17:37) [50]

GuAV ©   (21.01.05 17:12) [49]


> Однако более надёжного и точного способа найти "размер процедуры"
> подсказать не могу.


Вот так например предлагает Aphex


const

 Opcodes1: array [0..255] of word =
 (
   (16913),(17124),(8209),(8420),(33793),(35906),(0),(0),(16913),(17124),(8209),(8420),(33793),(35906),(0),(0),(16913),
   (17124),(8209),(8420),(33793),(35906),(0),(0),(16913),(17124),(8209),(8420),(33793),(35906),(0),(0),(16913),
   (17124),(8209),(8420),(33793),(35906),(0),(32768),(16913),(17124),(8209),(8420),(33793),(35906),(0),(32768),(16913),
   (17124),(8209),(8420),(33793),(35906),(0),(32768),(529),(740),(17),(228),(1025),(3138),(0),(32768),(24645),
   (24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645), (69),
   (69),(69),(69),(69),(69),(69),(69),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(24645),(0),
   (32768),(228),(16922),(0),(0),(0),(0),(3072),(11492),(1024),(9444),(0),(0),(0),(0),(5120),
   (5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(5120),(1296),
   (3488),(1296),(1440),(529),(740),(41489),(41700),(16913),(17124),(8209),(8420),(17123),(8420),(227),(416),(0),
   (57414),(57414),(57414),(57414),(57414),(57414),(57414),(32768),(0),(0),(0),(0),(0),(0),(32768),(33025),
   (33090),(769),(834),(0),(0),(0),(0),(1025),(3138),(0),(0),(32768),(32768),(0),(0),(25604),
   (25604),(25604),(25604),(25604),(25604),(25604),(25604),(27717),(27717),(27717),(27717),(27717),(27717),(27717),(27717), (17680),
   (17824),(2048),(0),(8420),(8420),(17680),(19872),(0),(0),(2048),(0),(0),(1024),(0),(0),(16656),
   (16800),(16656),(16800),(33792),(33792),(0),(32768),(8),(8),(8),(8),(8),(8),(8),(8),(5120),
   (5120),(5120),(5120),(33793),(33858),(1537),(1602),(7168),(7168),(0),(5120),(32775),(32839),(519),(583),(0),
   (0),(0),(0),(0),(0),(8),(8),(0),(0),(0),(0),(0),(0),(16656),(416)
 );

 Opcodes2: array [0..255] of word =
 (
   (280),(288),(8420),(8420),(65535),(0),(0),(0),(0),(0),(65535),(65535),(65535),(272),(0),(1325),(63),
   (575),(63),(575),(63),(63),(63),(575),(272),(65535),(65535),(65535),(65535),(65535),(65535),(65535),(16419),
   (16419),(547),(547),(65535),(65535),(65535),(65535),(63),(575),(47),(575),(61),(61),(63),(63),(0),
   (32768),(32768),(32768),(0),(0),(65535),(65535),(65535),(65535),(65535),(65535),(65535),(65535),(65535),(65535),(8420),
   (8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(8420),(16935),
   (63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(63),(237),
   (237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(101),(237),(1261),
   (1192),(1192),(1192),(237),(237),(237),(0),(65535),(65535),(65535),(65535),(65535),(65535),(613),(749),(7168),
   (7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(7168),(16656),
   (16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656),(16656), (0),
   (0),(32768),(740),(18404),(17380),(49681),(49892),(0),(0),(0),(17124),(18404),(17380),(32),(8420),(49681),
   (49892),(8420),(17124),(8420),(8932),(8532),(8476),(65535),(65535),(1440),(17124),(8420),(8420),(8532),(8476),(41489),
   (41700),(1087),(548),(1125),(9388),(1087),(33064),(24581),(24581),(24581),(24581),(24581),(24581),(24581),(24581),(65535 ),
   (237),(237),(237),(237),(237),(749),(8364),(237),(237),(237),(237),(237),(237),(237),(237),(237),
   (237),(237),(237),(237),(237),(63),(749),(237),(237),(237),(237),(237),(237),(237),(237),(65535),
   (237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(237),(0)
 );

 Opcodes3: array [0..9] of array [0..15] of word =
 (
   ((1296),(65535),(16656),(16656),(33040),(33040),(33040),(33040),(1296),(65535),(16656),(16656),(33040),(33040),(33040),( 33040)),
   ((3488),(65535),(16800),(16800),(33184),(33184),(33184),(33184),(3488),(65535),(16800),(16800),(33184),(33184),(33184),( 33184)),
   ((288),(288),(288),(288),(288),(288),(288),(288),(54),(54),(48),(48),(54),(54),(54),(54)),
   ((288),(65535),(288),(288),(272),(280),(272),(280),(48),(48),(0),(48),(0),(0),(0),(0)),
   ((288),(288),(288),(288),(288),(288),(288),(288),(54),(54),(54),(54),(65535),(0),(65535),(65535)),
   ((288),(65535),(288),(288),(65535),(304),(65535),(304),(54),(54),(54),(54),(0),(54),(54),(0)),
   ((296),(296),(296),(296),(296),(296),(296),(296),(566),(566),(48),(48),(566),(566),(566),(566)),
   ((296),(65535),(296),(296),(272),(65535),(272),(280),(48),(48),(48),(48),(48),(48),(65535),(65535)),
   ((280),(280),(280),(280),(280),(280),(280),(280),(566),(566),(48),(566),(566),(566),(566),(566)),
   ((280),(65535),(280),(280),(304),(296),(304),(296),(48),(48),(48),(48),(0),(54),(54),(65535))
 );


 
-SeM-   (2005-01-21 17:38) [51]

Ну и сами функции


function SizeOfCode(Code: pointer): longword;
var
 Opcode: word;
 Modrm: byte;
 Fixed, AddressOveride: boolean;
 Last, OperandOveride, Flags, Rm, Size, Extend: longword;
begin
 try
   Last := longword(Code);
   if Code <> nil then
   begin
     AddressOveride := False;
     Fixed := False;
     OperandOveride := 4;
     Extend := 0;
     repeat
       Opcode := byte(Code^);
       Code := pointer(longword(Code) + 1);
       if Opcode = $66 then
       begin
         OperandOveride := 2;
       end
       else if Opcode = $67 then
       begin
         AddressOveride := True;
       end
       else
       begin
         if not ((Opcode and $E7) = $26) then
         begin
           if not (Opcode in [$64..$65]) then
           begin
             Fixed := True;
           end;
         end;
       end;
     until Fixed;
     if Opcode = $0f then
     begin
       Opcode := byte(Code^);
       Flags := Opcodes2[Opcode];
       Opcode := Opcode + $0f00;
       Code := pointer(longword(Code) + 1);
     end
     else
     begin
       Flags := Opcodes1[Opcode];
     end;
     if ((Flags and $0038) <> 0) then
     begin
       Modrm := byte(Code^);
       Rm := Modrm and $7;
       Code := pointer(longword(Code) + 1);
       case (Modrm and $c0) of
         $40: Size := 1;
         $80:
           begin
             if AddressOveride then
             begin
               Size := 2;
             end
             else
               Size := 4;
             end;
         else
         begin
           Size := 0;
         end;
       end;
       if not (((Modrm and $c0) <> $c0) and AddressOveride) then
       begin
         if (Rm = 4) and ((Modrm and $c0) <> $c0) then
         begin
           Rm := byte(Code^) and $7;
         end;
         if ((Modrm and $c0 = 0) and (Rm = 5)) then
         begin
           Size := 4;
         end;
         Code := pointer(longword(Code) + Size);
       end;
       if ((Flags and $0038) = $0008) then
       begin
         case Opcode of
           $f6: Extend := 0;
           $f7: Extend := 1;
           $d8: Extend := 2;
           $d9: Extend := 3;
           $da: Extend := 4;
           $db: Extend := 5;
           $dc: Extend := 6;
           $dd: Extend := 7;
           $de: Extend := 8;
           $df: Extend := 9;
         end;
         if ((Modrm and $c0) <> $c0) then
         begin
           Flags := Opcodes3[Extend][(Modrm shr 3) and $7];
         end
         else
         begin
           Flags := Opcodes3[Extend][((Modrm shr 3) and $7) + 8];
         end;
       end;
     end;
     case (Flags and $0C00) of
       $0400: Code := pointer(longword(Code) + 1);
       $0800: Code := pointer(longword(Code) + 2);
       $0C00: Code := pointer(longword(Code) + OperandOveride);
       else
       begin
         case Opcode of
           $9a, $ea: Code := pointer(longword(Code) + OperandOveride + 2);
           $c8: Code := pointer(longword(Code) + 3);
           $a0..$a3:
             begin
               if AddressOveride then
               begin
                 Code := pointer(longword(Code) + 2)
               end
               else
               begin
                 Code := pointer(longword(Code) + 4);
               end;
             end;
         end;
       end;
     end;
   end;
   Result := longword(Code) - Last;
 except
   Result := 0;
 end;
end;

function SizeOfProc(Proc: pointer): longword;
var
 Length: longword;
begin
 Result := 0;
 repeat
   Length := SizeOfCode(Proc);
   Inc(Result, Length);
   if ((Length = 1) and (byte(Proc^) = $C3)) then Break;
   Proc := pointer(longword(Proc) + Length);
 until Length = 0;
end;


 
GuAV ©   (2005-01-21 17:51) [52]

фигня. например:

procedure Z1;
var S: string;
begin
 S := "It won""t work";
end; // ставь Breakpoint сюда. это будет уже после "конца" процедуры определенноко как начало+SizeOfProc.

procedure TForm1.FormCreate(Sender: TObject);
begin
 Caption:=IntToHex(Integer(@Z1) + SizeOfProc(@Z1), 8);
 Z1;
end;


или вот
procedure Z2;
begin
 if Form1=nil then Exit;
 Form1.Caption := "Boo";
end;


 
volser   (2005-01-21 18:07) [53]

Хочу обобщить понятое мной в этой ветки и все таки найти окончательный ответ на мой вопрос:
1. Запустить функцию в процессе эксплорера без dll 100% не возможно и основано на теории вероятности, что не устраивает большинство.
2. Существует несколько способов сделать это при помощью допольнительной dll.

Вопрос сосотоит в том:
- Какие есть способы с №2 и какой из них более совершенный?
- Как обмениватьося данными с главным приложением и dll?


 
Kerk ©   (2005-01-21 18:27) [54]

volser   (21.01.05 18:07) [53]
1. Запустить функцию в процессе эксплорера без dll 100% не возможно и основано на теории вероятности, что не устраивает большинство.

ты мою демку смотрел вообще???


 
volser   (2005-01-21 19:56) [55]


> Kerk ©  

Я не шарю в асьме и свои выводы формировал на основе примеров, котрые наводились на делфи


 
GuAV ©   (2005-01-21 20:05) [56]

volser   (21.01.05 19:56) [55]

Тогда [27] - вполне возможно на дельфи.


 
Digitman ©   (2005-01-22 15:10) [57]


> Какие есть способы с №2 и какой из них более совершенный?


наиболее совершенен лишь способ, документированный самим разработчиком ОС - LoadLibrary[Ex] .. адрес т.входа в эту ф-цию передается параметром в CreateRemoteThread .. адрес этот будет одинаков и для процесса приложения, вызывающего CreateRemoteThread, и для процесса, в чьем АП этот RemoteThread собственно требуется запустить .. утверждение равенства адресов основывается на факте того , что модуль kernel32, в котором реализована ф-ция CreateRemoteThread и который в обязательном порядке используется любым прикл.процессом в системе, загружается системой в АП любого процесса всегда по одному и тому же фактическому лин.адресу


> Как обмениваться данными с главным приложением и dll?


способов - масса.
но, наверно, наилучший же (и самый универсальный, рекомендуемый самим разработчиком) способ - использование именованых программных каналов (named pipes), технология и механизм которых как раз и предназначены для быстрой и надежной интеркоммуникации между различными процессами в системе.


 
GuAV ©   (2005-01-22 15:41) [58]

Digitman ©   (22.01.05 15:10) [57]
LoadLibrary[Ex]


Точно ?

HMODULE LoadLibraryEx(
 LPCTSTR lpFileName,  // file name of module
 HANDLE hFile,        // reserved, must be NULL
 DWORD dwFlags        // entry-point execution option
);



> документированный самим разработчиком ОС

Где ?


 
Digitman ©   (2005-01-24 08:07) [59]


> GuAV ©   (22.01.05 15:41) [58]


> Где ?

http://msdn.microsoft.com/library/en-us/dllproc/base/loadlibraryex.asp


> Точно ?


что "точно" ?


 
Kerk ©   (2005-01-24 08:17) [60]

Digitman ©   (22.01.05 15:10) [57]
наиболее совершенен лишь способ, документированный самим разработчиком ОС - LoadLibrary[Ex] .. адрес т.входа в эту ф-цию передается параметром в CreateRemoteThread


Прочитал раза четыре и ПОНЯЛ!!! Супер! Мне в голову такое не могло прийти.


 
GuAV ©   (2005-01-24 12:10) [61]


> http://msdn.microsoft.com/library/en-us/dllproc/base/lo
> adlibraryex.asp

Да, это справка по LoadLibraryEx но там нет упоминания совместного использования с CreateRemoteThread.


> что "точно" ?

Ничего, что первые два параметра прочитаются непоняно откуда и там будут возможно проблемы со стеком ?


 
Digitman ©   (2005-01-24 12:28) [62]


> Да, это справка по LoadLibraryEx но там нет упоминания совместного
> использования с CreateRemoteThread.


да мало ли каких еще упоминаний там нет !
все 3 ф-ции документированы, используй их как умеешь !


> Ничего, что первые два параметра прочитаются непоняно откуда
>


как ты их передашь, так они и "прочитаются"
у тебя же не вызывает вопросов передача единственного параметра для вызова LoadLibrary() ? тогда почему вызывает вопрос передача более чем одного параметра ?


 
GuAV ©   (2005-01-24 15:44) [63]


>как ты их передашь, так они и "прочитаются"
> у тебя же не вызывает вопросов передача единственного
> параметра для вызова LoadLibrary() ? тогда почему
> вызывает вопрос передача более чем одного параметра ?


Смотрим CreateRemoteThread

HANDLE CreateRemoteThread(
 ...
 LPTHREAD_START_ROUTINE lpStartAddress,    // thread function
 LPVOID lpParameter,                       // thread argument
 ...
);

LPTHREAD_START_ROUTINE протипа ThreadProc

Смотрим ThreadProc

DWORD WINAPI ThreadProc(
 LPVOID lpParameter   // thread data
);


WINAPI означает использование модели stdcall.
Это значит что один параметр должен быть прочитан из стека и удалён оттуда при возврате.

Смотрим LoadLibrary

HMODULE LoadLibrary(
 LPCTSTR lpFileName   // file name of module
);


Тот же один параметр будет прочитан из стека и удалён оттуда при возврате.

т.е. можно передать lpFileName как lpParameter в CreateRemoteThread.

Смотрим LoadLibraryEx

HMODULE LoadLibraryEx(
 LPCTSTR lpFileName,  // file name of module
 HANDLE hFile,        // reserved, must be NULL
 DWORD dwFlags        // entry-point execution option
);


Три параметра будут прочитаны из стека. первый (lpFileName) будет равен  lpParameter в CreateRemoteThread. Что будет в последних двух ? И как это отразится на коде ОС который вызывает ThreadProc из CreateRemoteThread ?


 
Digitman ©   (2005-01-24 16:04) [64]


> GuAV


ты дуриком-то не прикидывайся !

ты копируешь код будущего трэда в удаленное ВАП, тело этого трэде первым делом будет вызывать LoadLibrary[Ex]
далее ты копируешь в удаленное ВАП параметры ф-ции LoadLibraryEx
далее ты стартуешь удал.трэд, передавая ему структуру, содержащую И адрес ф-ции LoadLibraryEx И адреса необходимых ей УЖЕ СКОПИРОВАННЫХ тобой в чужое ВАП параметров

ЧТО еще непонятно ?


 
GuAV ©   (2005-01-24 16:33) [65]

Digitman ©   (24.01.05 16:04) [64]

> ты копируешь код будущего трэда в удаленное ВАП

Так бы сразу... а то

Digitman ©   (22.01.05 15:10) [57]

>  LoadLibrary[Ex] .. адрес т.входа в эту ф-цию
> передается параметром в CreateRemoteThread

т.е. я понял передать

CreateRemoteThread(
...
GetProcAddres(hKernel32, "LoadLibraryExA"),    // thread function
GlobalStrPtr,                       // thread argument
...
);

А оно оказывается записать код который уже вызовет LoadLibraryEx и передать указатель на этот код... больше вопросов не имею.


 
Digitman ©   (2005-01-24 16:45) [66]


> GuAV ©   (24.01.05 16:33) [65]


> А оно оказывается записать код который уже вызовет LoadLibraryEx
>


только не так как ты написал - вызовом GetProcAddres().
ОТКУДА там возьмется адрес ф-ции "GetProcAddres" ?

если уж на то пошло, можно даже не адрес "LoadLibrary" передавать параметром в CreateremoteThread(), а сразу адрес "GetProcAddress"


 
GuAV ©   (2005-01-24 16:58) [67]

Digitman ©   (24.01.05 16:45) [66]

> только не так как ты написал - вызовом GetProcAddres().

Я писал не применительно к внедряемому коду, а применительно к случаю вызвова LoadLibrary как ThreadProc без предварительной записи кода в чужое АП.

Я понимаю что кроме кода нужно записать в чужое АП ещё структуру со всеми необходимыми указателями. Или обойтись одним указателем на GetProcAddres или LoadLibrary[Ex] (как параметр CreateRemoteThread).
Или "по-хакерски" сформировать код как структуру из "заготовки" типа
PUSH $FFFFFFFF
PUSH $FFFFFFFF
PUSH $FFFFFFFF
CALL $FFFFFFFF
RET 12


 
DeadMeat ©   (2005-01-25 11:12) [68]


> [54] Kerk ©   (21.01.05 18:27)

ты мою демку смотрел вообще???

Так. На всякий случай. Я код не смотрел, т.к. в асме не шибко шарю, но на моей WinXP_SP2EN на твою прогу отругался DEP... И послал ее вместе с Explorer-ом.. Но перед этим отругался мой ZoneAlarm.. Но оно и понятно. Он на OpenProcess ругался..
Это так... Просто чтоб ты знал..

Сорри всем за оффтоп..

---
...Death Is Only The Begining...


 
kaZaNoVa ©   (2005-01-25 11:33) [69]

DeadMeat ©   (25.01.05 11:12) [68]

> DEP... И послал ее вместе с Explorer-ом.. Но перед
> этим отругался мой ZoneAlarm.. Но оно и понятно. Он на
> OpenProcess ругался..

что у тебя из защит установлено?
//как то круто, интересно)))


 
kaZaNoVa ©   (2005-01-25 11:34) [70]

DeadMeat ©   (25.01.05 11:12) [68]

> отругался мой ZoneAlarm

я слышал это самый "жесткий" фарволл ))


 
DeadMeat ©   (2005-01-25 11:41) [71]

Да ничего особенного.. Встроенный файер отключен. Только этот и вот DEP... И все...

Насчет жесткого не знаю. Я с другими не сравнивал... Этот меня пока устривает. Я его всегда на максимум выкручиваю по защите..

---
...Death Is Only The Begining...


 
kaZaNoVa ©   (2005-01-25 11:51) [72]

DeadMeat ©   (25.01.05 11:41) [71]

> вот DEP

а что это такое ?


 
DeadMeat ©   (2005-01-25 19:42) [73]

Data Execution Prevention
В сервис паке втором есть... Детали не могу сказать, но насколько я понял, эта хрень защищает проги от таких вещей, как CreateRemoteThread. Хотя могу ошибаться, но смысл тот же... Т.е. чтобы в чужом АП не было беспредела. По умолчанию включено только для виндовых прог. А Explorer один из них...

---
...Death Is Only The Begining...


 
Kerk ©   (2005-01-25 19:55) [74]

DeadMeat ©   (25.01.05 19:42) [73]
Data Execution Prevention


Аааа.. спасибо за инфу.. на такой штуке я еще не тестил.


 
DeadMeat ©   (2005-01-25 20:57) [75]

А у тя SP2 нету чтоли? Или может оно не эмулируется на старых процессорах...?

---
...Death Is Only The Begining...


 
Kerk ©   (2005-01-25 22:13) [76]

DeadMeat ©   (25.01.05 20:57) [75]
А у тя SP2 нету чтоли?


нету


 
xShadow ©   (2005-01-26 09:42) [77]


> Kerk ©   (25.01.05 19:55) [74]
Data Execution Prevention

Злая кстати вешь!
При включении на все приложения любое внедрение в чужое приложение заканчивается крахом приложения.


 
Kerk ©   (2005-01-26 10:21) [78]

Не думаю, что там все настолько серьезно.. когда поставлю сп2, попробую пробить.. да и до меня это сделают.


 
xShadow ©   (2005-01-26 10:29) [79]


> Kerk ©   (26.01.05 10:21) [78]

Пока из того что тестировал работают стандартные средства LoadLibary 100%


 
DeadMeat ©   (2005-01-26 11:12) [80]

Я так понял Керк, что ты в своем примере релоки меняешь. Вот видимо на это он и матюкнулся... Потому как вчера мы выяснили, что простой CreateRemoteThread срабатывает спокойно..

---
...Death Is Only The Begining...



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.67 MB
Время: 0.043 c
11-1093082309
Алексей
2004-08-21 13:58
2005.03.20
Как в mainmenu установить горячую клавишу "Esc"?


6-1106216491
New User
2005-01-20 13:21
2005.03.20
Как раскодиравть коки


14-1109221228
begin...end
2005-02-24 08:00
2005.03.20
С Днём рождения! 24 февраля


14-1109866422
kaif
2005-03-03 19:13
2005.03.20
Вопрос[2]. О власти


4-1108038828
Artur
2005-02-10 15:33
2005.03.20
Работа с памятю