информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Pascal] Не могу спрятать 28.03.03 19:34  Число просмотров: 1046
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
> По-моему, здесь надо добавить что-то типа:
>
> push bp
> mov bp, sp
>
> > push 1
> > push 0
> > call RegisterServiceProcess;
>
> pop bp
Че-то я не понял смысла bp в стек, в bp загоняем sp, а затем его затираем тем, что в стеке?
Кстати, спрятать надо так, чтоб по Ctrl-Alt-Del не было видно. Просто спрятать не проблема...
<programming>
[Pascal] Не могу спрятать 28.03.03 17:05  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
работающую программу. Использую такой код:

procedure RegisterServiceProcess; external 'kernel32.dll' name 'RegisterServiceProcess'
procedure Hide; assembler;
asm
push 1
push 0
call RegisterServiceProcess;
end;

Когда Hide вызывается из обработчика TForm1.Button1Click - все прячется прекрасно и нигде ничего не видно. Но когда пытаюсь вызвать Hide из другого места - ниче не получается:-(((((((
Хелп!
А зачем тебе ассемблер? 29.03.03 23:18  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 29.03.03 23:19  Количество правок: 1
<"чистая" ссылка>
Почемуб не сделать так:

procedure totalhide;
var rsp:function(pid:dword;dwtype:dword):dword;stdcall;
begin
rsp:=getprocaddress(getmodulehandle('kernel32.dll'),'RegisterServiceProcess');
if @rsp<>nil then rsp(0,1);
end;
[Pascal] Не могу спрятать 28.03.03 17:22  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> работающую программу. Использую такой код:
>
> procedure RegisterServiceProcess; external 'kernel32.dll'
> name 'RegisterServiceProcess'
> procedure Hide; assembler;
> asm

По-моему, здесь надо добавить что-то типа:

push bp
mov bp, sp

> push 1
> push 0
> call RegisterServiceProcess;

pop bp

> end;
>
> Когда Hide вызывается из обработчика TForm1.Button1Click -
> все прячется прекрасно и нигде ничего не видно. Но когда
> пытаюсь вызвать Hide из другого места - ниче не
> получается:-(((((((
> Хелп!
[Pascal] Не могу спрятать 28.03.03 19:34  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
> По-моему, здесь надо добавить что-то типа:
>
> push bp
> mov bp, sp
>
> > push 1
> > push 0
> > call RegisterServiceProcess;
>
> pop bp
Че-то я не понял смысла bp в стек, в bp загоняем sp, а затем его затираем тем, что в стеке?
Кстати, спрятать надо так, чтоб по Ctrl-Alt-Del не было видно. Просто спрятать не проблема...
[Pascal] Не могу спрятать 29.03.03 19:55  
Автор: dead Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Все так.
RegisterServiceProcess + Hide
Только HIDE надо вызыватьпосле создания формы.
К примеру привязать к OnPaint.
[Pascal] Не могу спрятать 28.03.03 23:11  
Автор: Sandy <Alexander Stepanov> Статус: Elderman
<"чистая" ссылка>
> Че-то я не понял смысла bp в стек, в bp загоняем sp, а
> затем его затираем тем, что в стеке?

Посмотри ассемблерный код, который генерируется компилятором, когда ты вызываешь процедуру Hide из обработчика OnClick и сравни с тем, который генерируется, когда ты вызываешь эту же процедуру из другого места.
[Pascal] Всё нормально. И действительно, ассемблер тут не нужен ;-) 30.03.03 09:34  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
В событии OnCreate формы вызывать hide не получится, не работает это... Я запускал в OnCreate новый поток, там дожидался WaitForInputIdle(), и только тогда делал Hide. Хотя можно и в OnPaint, но это как-то некрасиво ;-)
У меня какая фигня тут 30.03.03 16:10  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
Я использую вот такую штуку:

uses
Forms,Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.ShowMainForm := False;
Application.CreateForm(TForm1, Form1);
ShowWindow(Application.Handle, SW_HIDE);
Application.Run;
end.

Все прячется прекрасно, но по ctrl-alt-del программа видна, даже после того, как я регистрирую ее как процесс. Не видна только в том случае если Hide (сорс см. раньше) вызывается из обработчика OnButtonClick. А мне надо, чтоб пряталось само, при запуске. :((((((
Ну вот в файл проекта и пишешь тот код что я выше привел. 30.03.03 17:15  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
А еще можешь в сунуть вызов процедуры прятания в OnCreate, тольконе_вызывайHide() формы. Назови свою процедуру по другому (надеюсь умеешь добавлять процедуры иначе как определением событий объектов).
Интересная штука 31.03.03 13:34  
Автор: Fighter <Vladimir> Статус: Elderman
<"чистая" ссылка>
Когда попробовал запустить программулину на другой машине (все тоже, только там Делфи нет), то все спряталось отлично! 8). Может Делфи не дает спрятаться до конца? На моей маши ничего не помогает.

2 Killer{R}. Не совсем понял вопрос:
> А еще можешь в сунуть вызов процедуры прятания в OnCreate,
> тольконе_вызывайHide() формы. Назови свою процедуру по
> другому (надеюсь умеешь добавлять процедуры иначе как
> определением событий объектов).
Re: Интересная штука 31.03.03 16:50  
Автор: leo <Леонид Юрьев> Статус: Elderman
Отредактировано 31.03.03 16:52  Количество правок: 2
<"чистая" ссылка>
- советую не пользоваться ассемблером, если можно без него обойтись. В приведенном кусочке наверное еще стоит сохранить/восстановить EBX;
- если не ошибаюсь, то процесс который находится под отладкой другого процесса не всегда можно сделать сервисом. Поэтому наверное у тебя из-под delphi это не работает;
- и еще, кажется RegisterServiceProcess требует чтобы очереди сообщений были пусты;

http://www.bcbdev.com/faqs/faq82.htm
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach