PDA

Просмотр полной версии : Борьба с NOD32 из Delphi


Mirovan
12.01.2007, 14:35
Есть программка (код ниже), она не делает ничего особенного кроме того что при запуске её устанавливается Домашняя страница у 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.

Sov1et
12.01.2007, 18:37
нод скорее всего ругается на изменение реестра осла...

asm33
13.01.2007, 03:06
точняк это из за осла нод парит мозги.

1)если уж совсем никак, то попробуй реализовать операции с реестром через bat файл, а потом его запустить

2) может быть и уменьшится, но не значительно. проблемы с размером exe решаются просто: использовать kol библиотеку.

W!z@rD
13.01.2007, 10:29
устанавливается Домашняя страница у 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.

Mirovan
13.01.2007, 10:41
1) Думаю многие видели диски какого нить там софта, где также ставиться хомпага в ИЕ на их сайт, причем нод молчит. Может есть способ изменения хомпаге ИЕ через ВинАпи ?

2) я пренебрежительно отношусь к Kol, он бывает коверкает приложение, хотя здесь вроде программка маленькая, думаю что всё будет ОК.


Кстати, будет ли НОД ругаться если использовать не консльное приложение а Gui-приложение? ( надо проверить ) .

Mirovan
13.01.2007, 10:44
Иконка нужна, однозначна, ну чтоб красиво было :)

Если избавться от Registry & ShellAPI , то каким образом менять хомпагу у ИЕ ?

W!z@rD
13.01.2007, 12:41
))
Ужос...
от ShellAPI можно избавиться путем переноса описания функции со всем описанием
т.е. имя, переменные, экспорт...
сейчас не могу сделать т.к. не дома.
в качестве варианта можно использовать winexec
от Registry можно избавиться если будешь работать с реестром на API

asm33
13.01.2007, 15:51
а вместо 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 подключать, размер будет меньше

asm33
13.01.2007, 15:53
пакеры как раз надо использовать!!! какой нибудь telock 1.0 (private edition). Вряд ли нод его распакует )))

Mirovan
13.01.2007, 17:06
Тут попробавал изменить код, чрез ВинАпи попыытался, нифига, НОД Снова орет:


//{$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.

Go0o$E
13.01.2007, 17:21
Вот: Работает, весит 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.

Mirovan
13.01.2007, 17:27
Вообще фигня какая то, НОД - тупой, создал Gui приложение, и НОД , как ни странно молчит .

W!z@rD
13.01.2007, 21:28
) ну даешь... НОД не тупой просто параноя =)
ну как сделал?
вот:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;
external 'shell32.dll'name 'ShellExecuteA';

Mirovan
14.01.2007, 01:19
) ну даешь... НОД не тупой просто параноя =)
ну как сделал?
вот:
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,
Directory: PChar; ShowCmd: Integer): HINST; stdcall;
external 'shell32.dll'name 'ShellExecuteA';


Из этой проблемы вылез с помощью GUI проложения, добавил на форму всяких красивых кнопоче, орюшечек и др, а onCreate сделал бяку которую и хотел.