Суббота, 23.09.2017, 05:12 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Волк-1024, Anton93, xXxSh@dowxXx 
delfcode » Delphi » Вирусология Delphi » Инжект кода для увеличения живучести ([Delphi] Inject code)
Инжект кода для увеличения живучести
gravitasДата: Четверг, 10.11.2011, 18:23 | Сообщение # 1
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Данный код инжектит в процесс (в данном случае Калькулятор) процедуру, которая в вечном цикле запускает нужный нам файл. Т.е. если юзер вдруг и закроет наш вирус через какой-либо таск-мэнеджер, то после этого он благополучно упокоится, а наш вирус снова запустится. Интервал - 30 сек.

Тут наверное должно быть © :)


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
Волк-1024Дата: Пятница, 11.11.2011, 14:04 | Сообщение # 2
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
А проактивка такое не спалит? А так ++

Pascal, C\C++, Assembler, Python
 
gravitasДата: Пятница, 11.11.2011, 17:47 | Сообщение # 3
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (Волк-1024)
А проактивка такое не спалит? А так ++

Вобщем, каспер не палит. Так же знаю, что аутпост палит инжекты, а про остальное не вкурсе.
P.S. Многовато плюсов вы мне понаставили)


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
Волк-1024Дата: Пятница, 11.11.2011, 18:30 | Сообщение # 4
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Quote
Так же знаю, что аутпост палит инжекты
То-то и оно. Просто я в своё время пытался замутить что-то подобное, но в результате сразу после компиляции запел NOD32, а после попытки переписать за компанию прибавились еще с десяток песен )))
P.S. На счет плюсов. Я щедрый. Мне не жалко )))


Pascal, C\C++, Assembler, Python
 
Anton93Дата: Воскресенье, 13.11.2011, 14:13 | Сообщение # 5
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
я когда в своё время этой вещью занимался, инжект-тело выносил в DLL библиотеку, и впихивал ее в процесс

ICQ: 41896
 
xXxSh@dowxXxДата: Воскресенье, 05.02.2012, 00:45 | Сообщение # 6
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Для примера использование в коде определения PID по названию окна программы хорошо,многим пригодится,но для рабочего использования я бы взял определение PID по названию процесса,ведь не у всех процессов есть окна... smile
 
gravitasДата: Воскресенье, 05.02.2012, 05:06 | Сообщение # 7
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Посмотрите на название топика. Идентификатор процесса тут все умеют получать.

TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
Волк-1024Дата: Воскресенье, 05.02.2012, 12:04 | Сообщение # 8
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
xXxSh@dowxXx Если проблемы с получением пида по имени процесса, то вот:

Доступно только для пользователей


Pascal, C\C++, Assembler, Python
 
xXxSh@dowxXxДата: Понедельник, 06.02.2012, 01:07 | Сообщение # 9
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Quote (gravitas)
Посмотрите на название топика. Идентификатор процесса тут все умеют получать.


..ну в том что всем известен код получения идентификатора процесса я не сомневаюсь,просто хотел сказать что в работе более удобней, на мой взгляд, будет использование (имеется ввиду самый первый код на примере с Калькулятором) метода определения процесса не по названию окна, так как повторюсь не у каждого процесса есть окна, а по названию самого процесса либо его идентификатору...

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

Quote (Волк-1024)
Если проблемы с получением пида по имени процесса, то вот:

кстати хотел спросить на счет функции почему именно DWORD почему не THandle?
чем вобще они отличаются,просто никогда не задавался таким воросом... biggrin


Сообщение отредактировал xXxSh@dowxXx - Понедельник, 06.02.2012, 02:26
 
gravitasДата: Понедельник, 06.02.2012, 09:14 | Сообщение # 10
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (xXxSh@dowxXx)
кстати хотел спросить на счет функции почему именно DWORD почему не THandle?
чем вобще они отличаются,просто никогда не задавался таким воросом...

Вообще ничем не отличаются. И Cardinal вроде туда же.


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
xXxSh@dowxXxДата: Понедельник, 06.02.2012, 13:49 | Сообщение # 11
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
И снова Здравствуйте smile

Ребят подскажите пожалуйста как в первом примере кода изменить WinExec: function на ShellExecute...
дело в том что на сколько мне известно WinExec запускает не все файлы а в основном exe'шники

в то время как ShellExecute может запустить на выполнение файлы и с другим расширением...

если можно пример кода посмотреть только с ShellExecute, заранее благодарен.


Сообщение отредактировал xXxSh@dowxXx - Понедельник, 06.02.2012, 15:21
 
vvova15Дата: Понедельник, 06.02.2012, 14:26 | Сообщение # 12
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
Code
Вообще ничем не отличаются. И Cardinal вроде туда же.

thandle - дескриптор и за ним находяться ресурсы ядра, он числиться в таблице дескрипторов и через него можно получить укзанные ресурсы и т.д., а dword - число, и используется как псевдодескриптор. он не числиться в таблице дескрипторов и является просто заглушкой. используется например в функции GetCurrentThread(); которая возвращает пседодескриптор текущего потока через который можно производить действия с этим потоком(т.е. сам с собой) .
Code
Ребят подскажите пожалуйста как в первом примере кода изменить WinExec: function на ShellExecute...  
  дело в том что на сколько мне известно WinExec запускает не все файлы а в основном exe'шники  

  в то время как ShellExecute может запустить на выполнение файлы и с другим расширением...  

  если можно будет пример кода посмотреть только с ShellExecute, заранее благодарен.

winexec устаревшая функция и используется для обратной совместимости с win 3.1
вот про shellexecute http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153 (v=vs.85).aspx с примерами описанием и т.д.



ICQ 185-398
 
xXxSh@dowxXxДата: Понедельник, 06.02.2012, 15:46 | Сообщение # 13
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
вобщем как я не крутил,чет не вышло у меня с ShellExecute,учитывая что я в delphi не так давно начал работать biggrin

вот мой код,за исходный был взят код из первого поста от "gravitas",немного переделал...

подскажите где тут ошибка...,то что в function ShellExecute,это я понимаю,вопрос в том где именно..?

так же хочу предупредить что этот код в отличие от первого я сделал в Form а не в консольном приложении...!
заранее поясню для чего был перенесен код на Form,ну в первую очередь для того что бы можно было в будующем пользователю самому настраивать какой именно файл,из какого именно процесса и с каким интервалом времени запускать...,ну и так же что бы другие могли видеть все эти примеры в одном коде...
в коде возможно допущено куча ошибок так что прошу сильно не ругать biggrin



Сообщение отредактировал xXxSh@dowxXx - Понедельник, 06.02.2012, 15:58
 
dolphinДата: Понедельник, 06.02.2012, 17:15 | Сообщение # 14
Администратор
Сообщений: 902
Статус: Offline
@ShellExecute:=GetProcAddress(LoadLibrary(Kernel32), ShellExecuteName);

Гениально biggrin , ShellExecute не в кернеле а в shell32.dll


Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
xXxSh@dowxXxДата: Понедельник, 06.02.2012, 20:21 | Сообщение # 15
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
вобщем посидел я седня над кодом немного,вот что в итоге получилось...

и еще подскажите пожалуйста куда тут пихнуть исключение if на уже запущенный файл из процесса что бы он не запускался по новой спустя указанное время в Sleep...?

ShellExecute добавлять не стал,потому что в данном примере она в общем то и ни к чему..,ведь если мы будем запускать какой нибудь .txt из стороннего процесса то уже гораздо проблематичнее будет обработать исключение запущенного файла ведь как известно все .txt запускаются из одного процесса "notepad.exe"...

вот собственно сам код...


Сообщение отредактировал xXxSh@dowxXx - Понедельник, 06.02.2012, 20:25
 
gravitasДата: Понедельник, 06.02.2012, 20:40 | Сообщение # 16
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (xXxSh@dowxXx)
вобщем посидел я седня над кодом немного,вот что в итоге получилось... и еще подскажите пожалуйста куда тут пихнуть исключение if на уже запущенный файл из процесса что бы он не запускался по новой спустя указанное время в Sleep...?

Запаришся ты инжектить туда все что нужно для проверки наличия процесса. Проблему мультизапуска решает Mutex (CreateMutex).


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
delfcode » Delphi » Вирусология Delphi » Инжект кода для увеличения живучести ([Delphi] Inject code)
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz