Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.16;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
2-1151549788
PenguinX
2006-06-29 06:56
2006.07.16
Дин.массив в классе = траблы, ГОРЮ!


1-1149320040
TPA
2006-06-03 11:34
2006.07.16
Класс в DLL


1-1149059111
n-neo
2006-05-31 11:05
2006.07.16
Работа с большими числами


4-1142139196
Интересующийся
2006-03-12 07:53
2006.07.16
Как определить в какой ОС работает прога?


15-1150485086
X9
2006-06-16 23:11
2006.07.16
Гигабитная сеть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский