Перейти к содержанию

1001 и 1 вопрос по Дельфи


Apollon

Рекомендуемые сообщения

Для программера нужно всё (ИМХО), пока неопределился
User, ну не существует программистов, одинаково в совершенстве владеющих кучей языков программирования и досконально знающих компиляторы (IDEшки, интерпретаторы) к ним. Лучше очень хорошо знать один язык, чем абы-как десяток... Такое моё имхо.
Ссылка на комментарий
Поделиться на другие сайты

Проект временно заморожен из-за нехватки времени и хм... знаний...

С.Тantin и Kilo отдельное вам спасибо.

 

 

Не преувеличивай

Хм... всё правельно вы меня не путайте ;) 10%

User, поправь орфографию в хэлпе и объясни плиз, что же ты всё-таки пишешь =)

Поправлю позже - этот хелп от старой утилиты :( , ну что то похожие на АВЗ - иногда бывает что даже АВЗ незапускается, но! она будет её второй вспомогательной утилитой, а после будет работать АВЗ.

Вот только с названием неопределился :lool:

Ссылка на комментарий
Поделиться на другие сайты

C. Tantin

 

Инсталяцию и удаления драйвера писать вот так?

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus,  ShellAPI, StdCtrls, WinSVC;


type
 TForm1 = class(TForm)
private
{ Private declarations }
 public
{ Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.N10Click(Sender: TObject);
begin
{$APPTYPE CONSOLE}
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;

begin
 if ParamCount = 1 then
 begin
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));
Param := AnsiString(ParamStr(1));
hSRV := CreateService(
hSCM, 
  @Param[1], 
  @Param[1], 
  SERVICE_ALL_ACCESS, 
  SERVICE_KERNEL_DRIVER, 
  SERVICE_DEMAND_START, 
  SERVICE_ERROR_NORMAL, 
  PAnsiChar('System32\DRIVERS\' + Param + '.sys'), 
  nil, 
  nil, 
  nil, 
  nil, 
  nil);
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);
R := CloseServiceHandle(hSRV);
Writeln('CloseServiceHandle ', R);
R := CloseServiceHandle(hSCM);
Writeln('CloseServiceHandle ', R);
 end;
begin
if ParamCount=1 then
 begin
  hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  Writeln('OpenSCManager ', hSCM <> INVALID_HANDLE_VALUE);
  Param := AnsiString(ParamStr(1));
  hSRV := OpenService(hSCM, @Param[1], SERVICE_ALL_ACCESS);
  Writeln('OpenService ', hSRV <> INVALID_HANDLE_VALUE);
  R := DeleteService(hSrv);
  Writeln('DeleteService ', R);
  // очистка ресурсов
  R := CloseServiceHandle(hSRV);
  Writeln('CloseServiceHandle ', R);
  R := CloseServiceHandle(hSCM);
  Writeln('CloseServiceHandle ', R);
 end;
end.

 

Если есть в коде ошбки прошу указать :lol: и если можно показать, как их исправить :)

 

З.Ы. проект разморожен, но его разработка будет в трое дольше т.к. времени очень мало :)

Ссылка на комментарий
Поделиться на другие сайты

User

У тебя идет обявления переменых внутри тела процедуры

begin
{$APPTYPE CONSOLE}
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;
begin

Нужно обявлять переменые до begin

procedure TForm1.Button1Click(Sender: TObject);
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;
begin
 if ParamCount = 1 then
 begin
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));
Param := AnsiString(ParamStr(1));
hSRV := CreateService(
hSCM,
  @Param[1],
  @Param[1],
  SERVICE_ALL_ACCESS,
  SERVICE_KERNEL_DRIVER,
  SERVICE_DEMAND_START,
  SERVICE_ERROR_NORMAL,
  PAnsiChar('System32\DRIVERS\WinNT_KernelSecurity.sys'),
  nil,
  nil,
  nil,
  nil,
  nil);
  {$APPTYPE CONSOLE}
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);
R := CloseServiceHandle(hSRV);
Writeln('CloseServiceHandle ', R);
R := CloseServiceHandle(hSCM);
Writeln('CloseServiceHandle ', R);
 end;
if ParamCount=1 then
 begin
  hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  Writeln('OpenSCManager ', hSCM <> INVALID_HANDLE_VALUE);
  Param := AnsiString(ParamStr(1));
  hSRV := OpenService(hSCM, @Param[1], SERVICE_ALL_ACCESS);
  Writeln('OpenService ', hSRV <> INVALID_HANDLE_VALUE);
  R := DeleteService(hSrv);
  Writeln('DeleteService ', R);
  // очистка ресурсов
  R := CloseServiceHandle(hSRV);
  Writeln('CloseServiceHandle ', R);
  R := CloseServiceHandle(hSCM);
  Writeln('CloseServiceHandle ', R);
 end;
end;

По твоему, коды ты загружаешь драйвер и тут же его выгружаешь. Хотя не первое, не второе у тебя не происходит, так как не выполняется условия

if ParamCount=1

необходимо заранее передать параметр или легче совсем не используй параметры, а написать имя драйвера.

Изменено пользователем User
Ссылка на комментарий
Поделиться на другие сайты

По твоему, коды ты загружаешь драйвер и тут же его выгружаешь. Хотя не первое, не второе у тебя не происходит, так как не выполняется условия

if ParamCount=1

необходимо заранее передать параметр или легче совсем не используй параметры, а написать имя драйвера

По первому понятно, а вот второе , как пишется имя драйвера?

Если убрать Пареметр ?

Ссылка на комментарий
Поделиться на другие сайты

Насколько я помню имя драйвера у тебя WinNT_KernelSecurity

Да верно, пожалуйста покажите как параметр сменить на имя драйвера.

Ссылка на комментарий
Поделиться на другие сайты

загрузка как и длл так и сис драйверов непроисходит, коносль которая требовалась для подгрузки драйверов и отгрузки в коде который был описан выше запускается без надобности.

В чём может быть проблема?

Ссылка на комментарий
Поделиться на другие сайты

User

Консоль появляется сразу потому что в коде присутствует директива компилятора {$APPTYPE CONSOLE} и как компилятор встречает эту строчку он сразу пихает в екзешник консольное окно. Принципе, консоль тебе и не нужна она используется только для вывода на экран сообщений о загрузке. Удали строчки из кода отвечающий за вывод сообщений в консоль или замени на вывод в например в memo.

И самое главное у тебя не происходит загрузка так как не проходит условие

if ParamCount = 1 then так функция ParamCount возвращает число параметров преданных в консоли, а ты не передаешь не одного параметра, и поэтому это условие не выполняется и соответственно весь код загрузки и выгрузки тоже.

 

procedure TForm1.Button1Click(Sender: TObject);
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;
begin
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));
Param := AnsiString('WinNT_KernelSecurity');
hSRV := CreateService(
hSCM,
  @Param[1],
  @Param[1],
  SERVICE_ALL_ACCESS,
  SERVICE_KERNEL_DRIVER,
  SERVICE_DEMAND_START,
  SERVICE_ERROR_NORMAL,
  PAnsiChar('System32\DRIVERS\WinNT_KernelSecurity.sys'),
  nil,
  nil,
  nil,
  nil,
  nil);
  {$APPTYPE CONSOLE}
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);
R := CloseServiceHandle(hSRV);
Writeln('CloseServiceHandle ', R);
R := CloseServiceHandle(hSCM);
Writeln('CloseServiceHandle ', R);

end;

И потом запустить созданную службу net start WinNT_KernelSecurity

Изменено пользователем kilo
Ссылка на комментарий
Поделиться на другие сайты

procedure TForm1.Button1Click(Sender: TObject);
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;
begin
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));
Param := AnsiString('WinNT_KernelSecurity');
hSRV := CreateService(
hSCM,
  @Param[1],
  @Param[1],
  SERVICE_ALL_ACCESS,
  SERVICE_KERNEL_DRIVER,
  SERVICE_DEMAND_START,
  SERVICE_ERROR_NORMAL,
  PAnsiChar('System32\DRIVERS\WinNT_KernelSecurity.sys'),
  nil,
  nil,
  nil,
  nil,
  nil);
  {$APPTYPE CONSOLE}
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);
R := CloseServiceHandle(hSRV);
Writeln('CloseServiceHandle ', R);
R := CloseServiceHandle(hSCM);
Writeln('CloseServiceHandle ', R);

end;

 

Тогда если вставлять мемо то будет приблизительно вот так

 

procedure TForm1.Button1Click(Sender: TObject);
var hSCM, hSRV : THandle;
 R : LongBool;
 Param : AnsiString;
begin
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));
Param := AnsiString('WinNT_KernelSecurity');
hSRV := CreateService(
hSCM,
  @Param[1],
  @Param[1],
  SERVICE_ALL_ACCESS,
  SERVICE_KERNEL_DRIVER,
  SERVICE_DEMAND_START,
  SERVICE_ERROR_NORMAL,
  PAnsiChar('System32\DRIVERS\WinNT_KernelSecurity.sys'),
  nil,
  nil,
  nil,
  nil,
  nil);
  TMemo1.
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);
R := CloseServiceHandle(hSRV);
Writeln('CloseServiceHandle ', R);
R := CloseServiceHandle(hSCM);
Writeln('CloseServiceHandle ', R);

end;

после чего в ней будет отражаться отчёт загрузился драйвер.

 

И потом запустить созданную службу net start WinNT_KernelSecurity

В командной строке о_О ?

Или ?

 

Собрал отдельный модуль, но что то с мемо у меня неполучаеться или я что то не так делаю? :D

Процедура запускаеться, и так же останавливаеться, даже консоль кмд подключил и решил рекомендованную вами команду попробывать то бишь:

net start WinNT_KernelSecurity

Консоль говорит:

Системная ошибка номер 2

Неудаётся найти файл

хотя я зарание подгрузил в папку драйверс , свой драйвер.

Выкладываю исходник, пожалуйста посмотрите скажите в чём я ошибся :give_rose:

Ссылка на комментарий
Поделиться на другие сайты

Тогда если вставлять мемо то будет приблизительно вот так

 

Код

procedure TForm1.Button1Click(Sender: TObject);

var hSCM, hSRV : THandle;

R : LongBool;

Param : AnsiString;

begin

hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);

Writeln('OpenSCManager ', (hSCM <> INVALID_HANDLE_VALUE));

Param := AnsiString('WinNT_KernelSecurity');

hSRV := CreateService(

hSCM,

@Param[1],

@Param[1],

SERVICE_ALL_ACCESS,

SERVICE_KERNEL_DRIVER,

SERVICE_DEMAND_START,

SERVICE_ERROR_NORMAL,

PAnsiChar('System32\DRIVERS\WinNT_KernelSecurity.sys'),

nil,

nil,

nil,

nil,

nil);

TMemo1.

Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);

R := CloseServiceHandle(hSRV);

Writeln('CloseServiceHandle ', R);

R := CloseServiceHandle(hSCM);

Writeln('CloseServiceHandle ', R);

 

end;

после чего в ней будет отражаться отчёт загрузился драйвер.

Нет так работать не будет так как во-первых не существует объекта memo1, а во вторых у memo нет свойства как Writeln.

В командной строке о_О ?

Или ?

Да в командной строке.

Собрал отдельный модуль, но что то с мемо у меня неполучаеться или я что то не так делаю?

Процедура запускаеться, и так же останавливаеться, даже консоль кмд подключил и решил рекомендованную вами команду попробывать то бишь:

Код

net start WinNT_KernelSecurity

 

Консоль говорит:

Цитата

Системная ошибка номер 2

Неудаётся найти файл

Потому что ты в коде написал расширение dll а надо было WinNT_KernelSecurity.sys и этот файл забросить заранее в папку DRIVERS

Вот что у меня получилось

post-8190-1255993677_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Нет так работать не будет так как во-первых не существует объекта memo1, а во вторых у memo нет свойства как Writeln.

Мдя... надо достать маны и читать :)

Потому что ты в коде написал расширение dll а надо было WinNT_KernelSecurity.sys и этот файл забросить заранее в папку DRIVERS

Вот что у меня получилось

Эм... а если убрать вот эти строчки:

{$APPTYPE CONSOLE}
Writeln('CreateService ', hSRV <> INVALID_HANDLE_VALUE);

чтобы консоль невыпрыгивала, а запускать драйвер через стандартную консоль?

И будет ли код после этого работать?

Ссылка на комментарий
Поделиться на другие сайты

То будет ошибка в тех строках где есть консольные операторы Writeln и readln то необходима заменить эти операторы

Блин тогда легче вообще от этого кода отказаться и писать другой ужос о_О сколько еще работы :)

Ссылка на комментарий
Поделиться на другие сайты

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Похожий контент

    • Elly
      От Elly
      Вопросы по работе форума следует писать сюда. Вопросы по модерированию, согласно правилам, сюда писать не следует.
      Ответ можно получить только на вопрос, который грамотно сформулирован и не нарушает правил\устава форума.
    • igrok52
      От igrok52
      Подскажите пожалуйста. Антивирусом касперского пользуюсь много лет с 3.0 версии как все работает понимаю на пк. Подскажите пожалуйста кто знает по поводу Антивируса для Android устройств, не разу не ставил и вообще в экосистеме андроида не очень разбираюсь. Купил планшет дочке, загрузчик разблокирован, что там поставили понятия не имею, все работает но боюсь что есть какие то закладки от "китайцев" и пока не проверю не успокоюсь. Поможет антивирус касперского для андроида найти закладки или что то что может быть типа как в телефонах в китайских были закладки от китайцев которые смс отправляли на странные номера (лет 5 назад была эпидемия что и кнопочные и смартфоны дешевые слали смс по ночам в неизвестном направлении, оказалось что прошивка была с вирусами). Или для андроида версия может проверять только apk и не сможет увидеть что в системе есть вредоносы? Если что планшет из нашего ретейла, подумать не мог что у нас в солидных магазинах будут продавать планшеты с китайской прошивкой с разблокированным загрузчиком (Lenovo Xiaoxin Pad Pro 12.7).
    • MiStr
      От MiStr
      Цикл интервью с экспертами "Лаборатории Касперского" сезона 2024 года возобновляется
       
      На прошедшей в стенах "Лаборатории Касперского"  встрече , приуроченной к 18-летию Kaspersky Club, участники клуба пообщались с Еленой Лесных, старшим продуктовым маркетологом в подразделении мобильных продуктов в продуктовом маркетинге B2C. Елена рассказала о том, как была усилена защита от киберугроз и мошенников в последних обновлениях мобильной версии Kaspersky и Kaspersky Who Calls.
       
      Выступление Елены и её коллеги Никиты вызвало большой интерес у участников клуба. Не все присутствующие на встрече смогли задать свои вопросы, не говоря уже про тех, кто не смог посетить офис "Лаборатории Касперского". Именно поэтому мы пригласили Елену ещё раз пообщаться с участниками клуба, на этот раз в формате онлайн
       
      @Lena_Lesnykh готова отвечать на вопросы участников клуба по 18 октября 2024 года включительно. Традиционно интервьюируемой будет выбран лучший вопрос, автор которого получит подарок от клуба. Вопросы можно начинать задавать уже сейчас.
       

       
       
    • pokrac
      От pokrac
      Давал ребенкоу поиграть в компьютер, что то скачивал, по итогу ночью открываю компьютер, а у меня все файлы с префиксом Lock. ничего не открывается, ну и смена обоев, с тг аккаунтом для решения вопроса
    • esc.tech
      От esc.tech
      Здравствуйте, я бы хотел у вас спросить, когда вы добавите в свой антивирус дополнительное сканирование файлов? Так как в последнее время люди уже начинают шифровать вирусы что делает его незамеченным и ваш антивирус не замечает его. 

×
×
  • Создать...