 |

21.09.2008, 19:20
|
|
Постоянный
Регистрация: 30.08.2005
Сообщений: 730
С нами:
10892546
Репутация:
2274
|
|
Запрет на запуск
В общем есть такая пробелма...
Надо запретить запускаться exe'шнику если файлы в определёной папки заменили
Тоесть есть exe'шник, нужно как-то в него записать, что если MD5 такого-то файла не равен такому-то значению, то не запускаться
Возможно-ли такое сделать? 
|
|
|

21.09.2008, 19:45
|
|
Участник форума
Регистрация: 22.05.2008
Сообщений: 158
С нами:
9459019
Репутация:
348
|
|
можно зделать типо так:
Код:
var
s:string;
begin
s:='bI';
if s='bI' then sleep(10) //замераем на секунду
else sleep($fffff); //если s неравно 'bI' то программа замерает до бесконечного времени=)
раньше использовал такой способ в своих прогах=)
|
|
|

21.09.2008, 19:47
|
|
Постоянный
Регистрация: 15.07.2008
Сообщений: 444
С нами:
9381262
Репутация:
665
|
|
ВКЛЮЧЕНИЕ В ТЕЛО EXE-файла СВОЕГО МОДУЛЯ
гугли.
2 вариант: сделать loader (любой язык, проверка директории + компиляция) и почистить заголовок исходного экзешника.
|
|
|

21.09.2008, 19:59
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
С нами:
9379631
Репутация:
142
|
|
хм первое что в голову пришло - проверку сигнатуры сделать.
|
|
|

21.09.2008, 20:05
|
|
Познающий
Регистрация: 04.07.2008
Сообщений: 56
С нами:
9396093
Репутация:
60
|
|
Ponchik
Тебе нужно перехватить момент создания процесса (пишешь библиотеку внедряемую во все процессы или драйвер). Упрощенно схема создания процесса выглядит так:
1) Открывается ехешник
2) CreateThread - cоздается первый поток нового процесса (он приостановлен)
3) CsrClientCallServer - происходит инициализация процесса, в этот момент он получает идентификатор.
4) ResumeThread - возобновляется выполнение первичного потока, завершается инициализация процесса.
Следовательно тебе нужно перехватывать ZwCreateThread и в ней проверять ID родителя, если он отличается от текущего процесса (GetCurrentProcessId()), то начал создаваться новый процесс. Ставишь где-нибуть метку и ждешь вызова ZwResumeThread.
Как она вызывается, проверяешь выставлена ли метка, если да, то по хэдлу потока функцией ZwQueryInformationThread определяешь имя создаваемого процесса и затем, если нужно, убиваешь его.
----added
Только сейчас заметил, что тебе нужно контроливать только один ехешник. Конечно проще заразить его кодом, подгружающим библиотеку проверяющую можно загружаться или нет. Или еще проще написать лоадер, который будет делать проверку файлов и затем в зависимоти от результата запускать или не запускать ехешник.
Последний раз редактировалось SlyBit; 21.09.2008 в 20:12..
|
|
|

21.09.2008, 20:11
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
С нами:
9379631
Репутация:
142
|
|
Сообщение от SlyBit
Ponchik
Тебе нужно перехватить момент создания процесса (пишешь библиотеку внедряемую во все процессы или драйвер). Упрощенно схема создания процесса выглядит так:
1) Открывается ехешник
2) CreateThread - cоздается первый поток нового процесса (он приостановлен)
3) CsrClientCallServer - происходит инициализация процесса, в этот момент он получает идентификатор.
4) ResumeThread - возобновляется выполнение первичного потока, завершается инициализация процесса.
Следовательно тебе нужно перехватывать ZwCreateThread и в ней проверять ID родителя, если он отличается от текущего процесса (GetCurrentProcessId()), то начал создаваться новый процесс. Ставишь где-нибуть метку и ждешь вызова ZwResumeThread.
Как она вызывается, проверяешь выставлена ли метка, если да, то по хэдлу потока функцией ZwQueryInformationThread определяешь имя создаваемого процесса и затем, если нужно, убиваешь его.
помоему ты не правильно задание понял. Ему просто надо узнать исходные ли файлы находятся в директории(тоесть их не подменяли).
|
|
|

21.09.2008, 20:17
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от SlyBit
Ponchik
Тебе нужно перехватить момент создания процесса (пишешь библиотеку внедряемую во все процессы или драйвер). Упрощенно схема создания процесса выглядит так:
1) Открывается ехешник
2) CreateThread - cоздается первый поток нового процесса (он приостановлен)
3) CsrClientCallServer - происходит инициализация процесса, в этот момент он получает идентификатор.
4) ResumeThread - возобновляется выполнение первичного потока, завершается инициализация процесса.
Следовательно тебе нужно перехватывать ZwCreateThread и в ней проверять ID родителя, если он отличается от текущего процесса (GetCurrentProcessId()), то начал создаваться новый процесс. Ставишь где-нибуть метку и ждешь вызова ZwResumeThread.
Как она вызывается, проверяешь выставлена ли метка, если да, то по хэдлу потока функцией ZwQueryInformationThread определяешь имя создаваемого процесса и затем, если нужно, убиваешь его.
----added
Бред, ты не правильно понял вопрос ТС.
Сообщение от ..::TROYAN::..
можно зделать типо так:
Код:
var
s:string;
begin
s:='bI';
if s='bI' then sleep(10) //замераем на секунду
else sleep($fffff); //если s неравно 'bI' то программа замерает до бесконечного времени=)
раньше использовал такой способ в своих прогах=)
Нарк?тогду уж таймер можно использовать....
-----------------
ТС, объясни нормально свой вопрос многие не поняли вопроса, и я тоже не до конца....
|
|
|

21.09.2008, 20:18
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
С нами:
10653446
Репутация:
836
|
|
вы ему еще посоветуйте драйвер написать, ddk даите и т.п.
Ponchik:
http://softsearch.ru/programs/145-444-exe-protector32-download.shtml
http://www.shram.kiev.ua/hacker/gid/exepass.shtml
http://null-team.com/2007/10/20/salfeld-exe-password-7.114.0.0-stavim.html
да и вообше:
http://www.google.ru/search?hl=ru&q=exe+%D0%BF%D0%BE%D0%B4+%D0%BF%D0%B0 %D1%80%D0%BE%D0%BB%D1%8C&btnG=%D0%9F%D0%BE%D0%B8%D 1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=
Сообщение от ..::TROYAN::..
можно зделать типо так:
Код:
var
s:string;
begin
s:='bI';
if s='bI' then sleep(10) //замераем на секунду
else sleep($fffff); //если s неравно 'bI' то программа замерает до бесконечного времени=)
раньше использовал такой способ в своих прогах=)
горекодер, убийственный код...
Halt, ExitProcess. Exit в конце концов, отменили по дефтолу?
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
Последний раз редактировалось W!z@rD; 21.09.2008 в 20:20..
|
|
|

21.09.2008, 20:42
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
С нами:
9655526
Репутация:
1821
|
|
Сообщение от Ponchik
Всем спасибо, тему можно закрывать 
/me радостный ущел страдать фигнёй 
оффтоп, для благодарности есть репутация. Закрыто.
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|