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

Вниз

Запуск приложения. Пользователь в неведении.   Найти похожие ветки 

 
resuS   (2006-06-28 23:17) [0]

Прошу помочь. Нужно что-бы приложение автоматически запускалось при  включении компьютера так, чтобы практически невозможно было определить, что оно запущено. Чтобы не было иконки в трее, в диспечере задач(приложения), в автозапуске ...


 
Шпиён   (2006-06-28 23:18) [1]

А нафига?


 
Fay ©   (2006-06-28 23:19) [2]

Ку?
http://www.wasm.ru/article.php?article=hidingnt


 
resuS   (2006-06-28 23:30) [3]

Спасибо Fay. Но это на XP сработает? я думаю нет.
А нету исходника. Я предпологаю, такое частенько реализовывается в backdoor"ах, но я не встречал ни одного бэкдура на Delphi(исходника).
Что-то у меня google не рулит.:)


 
TUser ©   (2006-06-28 23:31) [4]

Игорь Шевченко c   (02.02.05 10:21)
Небольшой код, позволяющий определить, есть ли в системе потенциально вредоносный
процесс, скрывающий себя от Task Manager"а, Process Explorer"а и прочих просмотрщиков
списка процессов. В сочетании с включенным аудитом процессов поможет выявить поделки
доморощенных пакостников.
Проверено на Windows 2000 и Windows XP.

unit CheckNtDll;
interface
uses
Windows, HsNtDef;

function RealQueryListInformation (InfoClass: Integer; var rc: NTSTATUS;
var ReturnLength: DWORD): Pointer;

function IsNtDllHooked: Boolean;

implementation
uses
SysUtils, NtDll, PeImage, NtStatusDefs;

{$IFDEF VER140}
{$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}

type
TSysCallData = array[0..13] of Byte;
TNtQuerySystemInformation = function (SystemInformationClass: LongInt;
  SystemInformation: Pointer; SystemInformationLength: ULONG;
  ReturnLength: PDWORD): NTSTATUS; stdcall;

var
FRealQuerySystemInformation: TNtQuerySystemInformation;

function RealQueryListInformation (InfoClass: Integer; var rc: NTSTATUS;
var ReturnLength: DWORD): Pointer;
var
ListSize: Integer;
begin
ListSize := $400; { Начальный размер буфера }
GetMem(Result, ListSize);
rc := FRealQuerySystemInformation(InfoClass, Result, ListSize, @ReturnLength);
while rc = STATUS_INFO_LENGTH_MISMATCH do begin
  FreeMem(Result);
  ListSize := ListSize * 2;
  GetMem(Result, ListSize);
  rc := FRealQuerySystemInformation(InfoClass, Result, ListSize,
    @ReturnLength);
end;
if rc <> STATUS_SUCCESS then begin
  FreeMem(Result);
  Result := nil;
end;
end;

procedure MakeRealQS (const SysCallData: TSysCallData);
var
OldProtection: DWORD;
FuncPtr: Pointer;
begin
FuncPtr := VirtualAlloc(nil, $1000, MEM_COMMIT, PAGE_READWRITE);
Win32Check(Assigned(FuncPtr));
Move(SysCallData, FuncPtr^, SizeOf(SysCallData));
Win32Check(VirtualProtect(FuncPtr, SizeOf(SysCallData), PAGE_EXECUTE,
  OldProtection));
@FRealQuerySystemInformation := FuncPtr;
end;

function IsNtDllCodeHooked (const FileName: string; ProcOffset: ULONG): Boolean;
var
Image: THSPeImage;
SysCall: TSysCallData;
SysCall2: TSysCallData;
QSPtr: Pointer;
begin
Image := THSPEImage.Create (FileName);
try
  Move(Image.RVAData[ProcOffset]^, SysCall, SizeOf(SysCall));
finally
  Image.Free;
end;
QSPtr := GetProcAddress(GetModuleHandle("ntdll.dll"),
  "NtQuerySystemInformation");
Move(QSPtr^, SysCall2, SizeOf(SysCall2));
Result := not CompareMem(@SysCall, @SysCall2, SizeOf(SysCall));
if Result then
  MakeRealQS (SysCall);
end;

function IsNtDllHooked: Boolean;
const
SDllPath = "%SystemRoot%\system32\ntdll.dll";
var
DllPath: ZString;
HFile, HMap: THandle;
Map: Pointer;
Headers: PImageNtHeaders;
QSysInfo: Pointer;
begin
Result := false;
Win32Check(
  ExpandEnvironmentStringsA(SDllPath, DllPath, SizeOf(DllPath)) <> 0);
HFile := CreateFileA(DllPath, GENERIC_READ, FILE_SHARE_READ, nil,
  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, INVALID_HANDLE_VALUE);
Win32Check(HFile <> INVALID_HANDLE_VALUE);
try
  HMap := CreateFileMappingA(HFile, nil, PAGE_READONLY, 0, 0, nil);
  Win32Check(HMap <> 0);
  try
    Map := MapViewOfFile(HMap, FILE_MAP_READ, 0, 0, 0);
    Win32Check(Assigned(Map));
    try
      Headers := RtlImageNtHeader(HMODULE(Map));
      if Assigned(Headers) then
        Result :=
          Headers.OptionalHeader.ImageBase <> GetModuleHandle("ntdll.dll");
        if not Result then begin
          QSysInfo := GetProcAddress(GetModuleHandle("ntdll.dll"),
            "NtQuerySystemInformation");
          if Assigned(QSysInfo) then begin
            Result := (Cardinal(QSysInfo) <=
              Headers.OptionalHeader.ImageBase) or (Cardinal(QSysInfo) >
              Headers.OptionalHeader.ImageBase +
              Headers.OptionalHeader.SizeOfCode);
            if not Result then
              Result := IsNtDllCodeHooked(DllPath, ULONG(QSysInfo) -
                Headers.OptionalHeader.ImageBase);
          end else
            Result := true;
        end;
    finally
      UnmapViewOfFile(Map);
    end;
  finally
    CloseHandle(HMap);
  end;
finally
  CloseHandle(HFile);
end;
end;

initialization
finalization
if Assigned(FRealQuerySystemInformation) then
  VirtualFree(@FRealQuerySystemInformation, $1000, MEM_DECOMMIT);
end.

Пример использования:


  FQueryInformationFunction: TQueryListInformation;
.........
if IsNtDllHooked then begin
  ShowMessage("NtDll is hooked!");
  @FQueryInformationFunction := @RealQueryListInformation;
end else
  @FQueryInformationFunction := @QueryListInformation;

.....

var
ProcessInfo: Pointer;
rc: NTSTATUS;
Dummy: ULONG;
begin
ProcessInfo := FQueryInformationFunction (
  SystemProcessesAndThreadsInformation, rc, Dummy);
if NT_SUCCESS(rc) then
  ShowProcessList (ProcessInfo)
else
  RaiseNtError (rc);
.........

--------------------------------------------------------------------------------

...

--------------------------------------------------------------------------------
kaZaNoVa c   (04.02.05 12:52) [49]
BiN c   (04.02.05 11:51) [45]

> Но зато сабжевый код - отличный способ дать по рукам
> молодым кулхацкерам.

это точно ..  терь половина их "разработок" станет бесполезна))


 
resuS   (2006-06-28 23:48) [5]

да... разбили всех кулхацкеров в пух  и прах. Но я, правда, художник, а это для учебы надо.
Мне все еще нужно приложение скрывающееся от ... всех.
Кто говорит, что мою прогу вообще надо будет определять. Она сама себя покажет. Это же НИР.
Пока реальная помощь от Fay


 
Fay ©   (2006-06-28 23:54) [6]

2 resuS   (28.06.06 23:48) [5]
> Но я, правда, художник
Слаймер Нимдович?


 
resuS   (2006-06-29 00:09) [7]

нет:)
Реках Ремал


 
lobach ©   (2006-06-29 10:01) [8]


> resuS

А не легче в реестре в "Run" ключ накатать?


 
Игорь Шевченко ©   (2006-06-29 10:27) [9]


> Но это на XP сработает?


Под XP сработает аудит запускаемых процессов и ремень по попе.


 
resuS   (2006-06-29 15:21) [10]

Шевченко прав... :( уже попробовал на NT все отл, а вот на XP - как обычно...


 
novill ©   (2006-06-29 15:27) [11]


> Игорь Шевченко ©   (29.06.06 10:27) [9]
>
> > Но это на XP сработает?
>
> Под XP сработает аудит запускаемых процессов и ремень по  попе.

Подскажите ламеру, где на это посмотреть можно?


 
novill ©   (2006-06-29 15:47) [12]

Управление компьютером -> Служебные прогораммы->Просмотр событий... ?


 
Игорь Шевченко ©   (2006-06-29 15:53) [13]


> Подскажите ламеру, где на это посмотреть можно?


В политике безопасности



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

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

Наверх




Память: 0.5 MB
Время: 0.043 c
2-1151680563
Loginov Dmitry
2006-06-30 19:16
2006.07.16
Выравнивание компонентов


2-1151330730
bulavkin
2006-06-26 18:05
2006.07.16
DelphX --- Отобразить спрайт


2-1151517037
Зм1й
2006-06-28 21:50
2006.07.16
Скопировать число в буфер обмена


15-1149507664
Зм1й
2006-06-05 15:41
2006.07.16
Earthworm Jim 2 под Sega Mega Drive 2


2-1151385233
bajenovv
2006-06-27 09:13
2006.07.16
помогите плиз новичку!!!!