ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Проблема с иконками(delphi)
  #1  
Старый 24.05.2007, 13:29
Аватар для 7ion
7ion
Познающий
Регистрация: 29.10.2006
Сообщений: 74
Провел на форуме:
1980313

Репутация: 65
Отправить сообщение для 7ion с помощью ICQ
По умолчанию Проблема с иконками(delphi)

Есть код самораспространяющегося вируса. Т.е. вирь сканит диск на исполняемые фалы, и джойнит к ним свой код, но есть проблема, после склеивания пропадают значки зараженных файлов. можно как-то этого избежать? или вернуть их обратно?
 
Ответить с цитированием

  #2  
Старый 24.05.2007, 14:54
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Как я понял - эта зараза не заражает файлы, а просто крепит копирует себя с именем другой проги, а потом присоединяет её к себе?
Если так, то выход примерно такой - Динамически изменять ресурсы.
Скорее всего просто прога не имеет значка вообще, а то что конектится за ним, - это уже не берется во внимание. Исправить проблему можно так:
В прогу вмантируешь пустую иконку. И при заражении просто нужно у заражаемой проги выдрать иконку и вмантировать её к себе.
С виду всё тяжко получается, но на деле всё нет так уж и страшно.
т.к. Выдрать иконку из чужой проги, проще простого.
Код:
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
 IconIndex: word;
 h: hIcon;
begin
 IconIndex := 0;
 h:= ExtractIcon(hinstance,'c:\1.exe',IconIndex);
 DrawIcon(Form1.Canvas.Handle, 10, 10, h);
end;
Выдирет иконку и нарисует её на экране.

Для того чтобы засунуть иконку в файл есть парочку сособов:
1) - Разбираем PE заголовок Выдергиваем от туда адрес ресурсов
- Разбираем талицу ресурсов.
- Находим ресурс иконки и заменяем его на свой
2) Я слыхал про проект madshi. ТАм есть модуль - MadRes. Он умеет заменять, удалять и добавлять ресурсы
 
Ответить с цитированием

  #3  
Старый 24.05.2007, 15:42
Аватар для 7ion
7ion
Познающий
Регистрация: 29.10.2006
Сообщений: 74
Провел на форуме:
1980313

Репутация: 65
Отправить сообщение для 7ion с помощью ICQ
По умолчанию

Ок, спасибо за помощь.
 
Ответить с цитированием

  #4  
Старый 24.05.2007, 19:19
Аватар для begin_end
begin_end
Members of Antichat - Level 5
Регистрация: 04.01.2007
Сообщений: 176
Провел на форуме:
17964969

Репутация: 1362
По умолчанию

Вот пример, который возможно также как-то поможет:
Скачать, 164 Кб.
Там реализовано использование следующей процедуры:
procedure SetAppIcon(FileName,IconFile,ResName:string);
где FileName - имя файла программы, иконку которого меняем; IconFile - файл иконки *.ico, на которую меняем; ResName - имя ресурса иконки в приложении, например у прог на Делфи обычно 'MAINICON'.

Последний раз редактировалось begin end; 24.05.2007 в 19:27..
 
Ответить с цитированием

  #5  
Старый 24.05.2007, 19:33
Аватар для 7ion
7ion
Познающий
Регистрация: 29.10.2006
Сообщений: 74
Провел на форуме:
1980313

Репутация: 65
Отправить сообщение для 7ion с помощью ICQ
По умолчанию

спасибо за помощь, только есть вопрос: содержимое иконки можно брать не из файла, а из переменной из кода выше?
 
Ответить с цитированием

  #6  
Старый 24.05.2007, 19:56
Аватар для begin_end
begin_end
Members of Antichat - Level 5
Регистрация: 04.01.2007
Сообщений: 176
Провел на форуме:
17964969

Репутация: 1362
По умолчанию

Иконку можно брать только из файла. Другого способа смены иконки я пока не встречал. Конечно нам необязательно сначала сохранять иконку в файл а потом читать и менять. В предложенный мной код нужно добавить часть для считывания иконки из файла, т.е. получить не HICON, как в коде от slesh, а именно саму иконку. Но готового кода пока нет (мне бы тож не помешал для джоинера) - сам пробую, ищу...
 
Ответить с цитированием

  #7  
Старый 25.05.2007, 14:28
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

Народ. А кто вам не дает сохранить эту иконку в файл?
 
Ответить с цитированием

  #8  
Старый 29.05.2007, 08:12
Аватар для 2pick
2pick
Познающий
Регистрация: 17.03.2007
Сообщений: 98
Провел на форуме:
193152

Репутация: 45
Отправить сообщение для 2pick с помощью ICQ
По умолчанию

Цитата:
Сообщение от slesh  
Код:
uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
 IconIndex: word;
 h: hIcon;
begin
 IconIndex := 0;
 h:= ExtractIcon(hinstance,'c:\1.exe',IconIndex);
 DrawIcon(Form1.Canvas.Handle, 10, 10, h);
end;
Как тогда не выводить на экран, а сохранять в файл?

С madshi разобрался, но это ещё 20 кило прироста к файлу... Одно радует... при работес madshi не надо предварительно запихивать иконку в файл. Чисто вставить иконку, а он сам делает что надо.

Последний раз редактировалось 2pick; 29.05.2007 в 08:15..
 
Ответить с цитированием

  #9  
Старый 29.05.2007, 08:42
Аватар для Joker-jar
Joker-jar
Постоянный
Регистрация: 11.03.2007
Сообщений: 581
Провел на форуме:
4172659

Репутация: 646


Отправить сообщение для Joker-jar с помощью ICQ
По умолчанию

Цитата:
Как тогда не выводить на экран, а сохранять в файл?
Например так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  IconIndex: word;
  Icon: Ticon;
begin
  IconIndex := 0;
  Icon := Ticon.Create;
  Icon.Handle := ExtractIcon(hinstance,'C:\1.exe',IconIndex);
  Icon.SaveToFile('C:\1.ico');
  Icon.Free;
end;
Ток нафига тебе в файл? Вроде договорились к себе в ресурс пихать...
 
Ответить с цитированием

  #10  
Старый 23.06.2007, 13:12
Аватар для 2pick
2pick
Познающий
Регистрация: 17.03.2007
Сообщений: 98
Провел на форуме:
193152

Репутация: 45
Отправить сообщение для 2pick с помощью ICQ
По умолчанию

сохранять всё равно приходится в файл. мэдши не может выдрать иконку...
А с Ticon это надо ещё модуль icon (или типа того или graph ли, не важно) цеплять... он ещё 100 кило придаёт объему

Последний раз редактировалось 2pick; 23.06.2007 в 13:14..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с icq reider ICQ 6 16.08.2007 14:47
Проблема со сплойтом для вхзлома ipb 2.0.0 Taylorith Форумы 8 18.02.2007 20:06
Проблема с nVidia Spyder Аппаратное обеспечение 13 16.01.2007 15:34
Проблема с перл Эксплойтом для ipb 2.0.* SURRENDER Форумы 2 07.12.2004 12:58



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ