Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.27;
Скачать: CL | DM;

Вниз

Наведение порчи на трояна :)   Найти похожие ветки 

 
Riply ©   (2008-03-14 15:01) [0]

Здравствуйте !
Допустим, у нас есть некий "неубиенный" процесс и возможность записи
в его "exe - файл" любого количества байт по любому смещению.
Задача такова: произвести такие изменения в exe файле,
чтобы этот процесс, после перезапуска системы,
не смог стартовать снова или сразу после старта терминировался.
(Уничтожить файл мы не можем, можем только изменить не трогая его размер)
Как это можно сделать с минимальным риском ?
Пробовала затирать экзешник нулями.
Как правило, процесс после этого падает без каких либо сообщений.
Но мне кажется это слишком варварски (мало ли что произойдет в его недрах).


 
DeadMeat ©   (2008-03-14 15:06) [1]

Точку входу поменять в PE заголовке?
Правда я в этом не спец...


 
Рамиль ©   (2008-03-14 15:10) [2]

Записать все нулями?


 
Loki ©   (2008-03-14 15:14) [3]

Службу остановить навсегда - коран не позволяет?

---
WBR, Loki®


 
Johnmen ©   (2008-03-14 15:15) [4]


> Riply ©   (14.03.08 15:01) 

По смещению 10С запиши 0С.
:)


 
clickmaker ©   (2008-03-14 15:17) [5]


> Riply ©   (14.03.08 15:01)

в 40 байте от начала exe (PE) живет адрес точки входа (4 байта)
Запиши нули по этому адресу


 
clickmaker ©   (2008-03-14 15:25) [6]

тьфу, блин. Не от начала экзе, конечно, от начала заголовка PE. А его смещение - 60


 
Riply ©   (2008-03-14 15:25) [7]

> [2] Рамиль © (14.03.08 15:10)
> Записать все нулями?

Пробовала, работает, но мне кажется это довольно рискованно.

> [4] Johnmen © (14.03.08 15:15)
> По смещению 10С запиши 0С.

> [5] clickmaker ©   (14.03.08 15:17)
> в 40 байте от начала exe (PE) живет адрес точки входа (4 байта)
> Запиши нули по этому адресу

Спасибо. Попробую. :)


 
clickmaker ©   (2008-03-14 15:26) [8]


> [6] clickmaker ©   (14.03.08 15:25)
> тьфу, блин. Не от начала экзе, конечно, от начала заголовка
> PE. А его смещение - 60

блин, да что я сегодня такой бестолковый? ) смещение заголовка PE прописано по адресу 60. Вот, теперь точно


 
Loginov Dmitry ©   (2008-03-14 15:35) [9]

Запиши "bugaga" в самом начале :)


 
KSergey ©   (2008-03-14 15:42) [10]

> Riply ©   (14.03.08 15:25) [7]
> > Записать все нулями?
>
> Пробовала, работает, но мне кажется это довольно рискованно.

Чем??! Какая вообще разница какую именно гадость в него внести?
К стати, если его размер больше размера калькулятора виндового к примеру - можно перенести в него содиржимое калькулятора, это вроде безопасная прога. Оставшийся хвост можно не трогать вообще.

К стати, как арвило если нельзя стереть - то всегда можно переименовать.


 
Johnmen ©   (2008-03-14 15:55) [11]


> clickmaker ©   (14.03.08 15:25) [6]

Опять промазал :)
Адрес PE-заголовка лежит по смещению, указанному по смещению 3C.


 
Riply ©   (2008-03-14 15:55) [12]

> [8] clickmaker ©   (14.03.08 15:26)
> смещение заголовка PE прописано по адресу 60.

Я правильно поняла:
Смещение заголовка PE прописано вот здесь IMAGE_DOS_HEADER._lfanew ?

>  [10] KSergey ©   (14.03.08 15:42)
> Чем??! Какая вообще разница какую именно гадость в него внести?

Дело в том, что процесс продолжает работать после изменения файла.
Мало ли какую инструкцию к действию или указатель он захочет прочитать оттуда ?
Черт его знает :)
Или можно не бояться этого ?


 
clickmaker ©   (2008-03-14 16:01) [13]


> [11] Johnmen ©   (14.03.08 15:55)

да нет.
По адресу 3C записано-таки смещение PE заголовка


 
Игорь Шевченко ©   (2008-03-14 16:03) [14]


> Пробовала затирать экзешник нулями.


Достаточно убрать MZ из заголовка


 
Riply ©   (2008-03-14 16:10) [15]

>  [14] Игорь Шевченко ©   (14.03.08 16:03)
> Достаточно убрать MZ из заголовка

А кто это и где находится ?


 
Джо ©   (2008-03-14 16:12) [16]

> [15] Riply ©   (14.03.08 16:10)
> >  [14] Игорь Шевченко ©   (14.03.08 16:03)
> > Достаточно убрать MZ из заголовка
>
> А кто это и где находится ?

По смещению 0 от начала файла :)


 
Johnmen ©   (2008-03-14 16:13) [17]


> clickmaker ©   (14.03.08 16:01) [13]
> да нет.По адресу 3C записано-таки смещение PE заголовка

Ну и я про это... другими словами :)


 
clickmaker ©   (2008-03-14 16:14) [18]


> [14] Игорь Шевченко ©   (14.03.08 16:03)

что прикольно, при этом выводится сообщение "program is too big to fit in memory" )


 
Riply ©   (2008-03-14 16:17) [19]

> [16] Джо ©   (14.03.08 16:12)
> По смещению 0 от начала файла :)

По смещению 0 находиться _IMAGE_DOS_HEADER ?
А MZ это кто ?


 
clickmaker ©   (2008-03-14 16:18) [20]


> [19] Riply ©   (14.03.08 16:17)

что, никогда экзешник блокнотом не открывала? )


 
Riply ©   (2008-03-14 16:24) [21]

>  [20] clickmaker ©   (14.03.08 16:18)
> что, никогда экзешник блокнотом не открывала? )

Открывала. :)
Значит, под "убрать MZ" имеется ввиду затереть первые два байта ?


 
antonn ©   (2008-03-14 16:26) [22]

<offtop>
и чего это еще никто не высказал предположений о вирусописательстве, о том, что трогать екзешники без разрешения нельзя и такая программа уйдет в мусорку, что подход неправильный и тп... просто интересно, в начинающих бы уже запинали...


 
Джо ©   (2008-03-14 16:27) [23]

> [19] Riply ©   (14.03.08 16:17)
> > [16] Джо ©   (14.03.08 16:12)
> > По смещению 0 от начала файла :)
>
> По смещению 0 находиться _IMAGE_DOS_HEADER ?
> А MZ это кто ?

А MZ — это Mark Zbikowski :)


 
clickmaker ©   (2008-03-14 16:32) [24]


> [23] Джо ©   (14.03.08 16:27)

что интересно, википедия называет его "one of the first computer hackers" )


 
Игорь Шевченко ©   (2008-03-14 17:05) [25]

Riply ©   (14.03.08 16:10) [15]

Винда - она не дура. Винда она смотрит, а что за файл ей дали на исполнение и какой он, зараза, формат имеет. Соответственно, по наличию MZ в заголовке и проверке смещений в ImageDosHeader она его пытается загружать, как EXECUTABLE, а уж какой он там - DOS Executable, New Executable или Portable Executable, она будет разбираться только после того, как MZ найдет. А если не найдет, то считает, что файл имеет формат COM, соотвественно, загружает его 64 кило - 256 байт и пытается исполнить, начиная с первого байта. Если ты первый байт запишешь $C3, то все исполнение на этом байте благополучно закончится.


 
Riply ©   (2008-03-14 17:49) [26]

> [25] Игорь Шевченко ©   (14.03.08 17:05)

Спасибо.
А что для нее(Винды) будет означать $C3 в данном случае ?


 
Riply ©   (2008-03-14 17:53) [27]

> [5] clickmaker ©   (14.03.08 15:17)
> в 40 байте живет адрес точки входа (4 байта)

В сороковом байте PE я нашла KernelCallbackTable.
Это и есть адрес точки входа или я не там смотрю ?


 
clickmaker ©   (2008-03-14 18:10) [28]


> В сороковом байте PE я нашла KernelCallbackTable

то есть? Так прямо и написано? )


 
Джо ©   (2008-03-14 18:14) [29]

> [26] Riply ©   (14.03.08 17:49)
> > [25] Игорь Шевченко ©   (14.03.08 17:05)
>
> Спасибо.
> А что для нее(Винды) будет означать $C3 в данном случае
> ?

ret, собственно.


 
clickmaker ©   (2008-03-14 18:23) [30]


> [27] Riply ©   (14.03.08 17:53)

заголовок PE состоит из двух частей
TFileHeader = packed record
   Sign: Cardinal;
   CPU: Word;
   NumOfSections: Word;
   TimeStamp: Cardinal;
   SymbolTablePtr: Cardinal;
   SymbolTableSize: Cardinal;
   OptionalHeaderSize: Word;
   Flags: Word;
 end;

TPEOptionalHeader = packed record
   Magic: Word;
   LinkerMajor: Byte;
   LinkerMinor: Byte;
   CodeSize: Cardinal;
   IDataSize: Cardinal;
   UDataSize: Cardinal;
   EntryPointAddr: Cardinal; <--- 28h от начала первой структуры
   ...


 
Riply ©   (2008-03-14 18:50) [31]

> [30] clickmaker ©   (14.03.08 18:23)
> заголовок PE состоит из двух частей

В Windows.pas объявления отличаются от твоих
и смещение до EntryPointAddr там получается на 4 байта меньше
чем у тебя.

PImageFileHeader = ^TImageFileHeader;
 _IMAGE_FILE_HEADER = packed record
   Machine: Word;
   NumberOfSections: Word;
   TimeDateStamp: DWORD;
   PointerToSymbolTable: DWORD;
   NumberOfSymbols: DWORD;
   SizeOfOptionalHeader: Word;
   Characteristics: Word;
 end;

  PImageOptionalHeader = ^TImageOptionalHeader;
 _IMAGE_OPTIONAL_HEADER = packed record
   { Standard fields. }
   Magic: Word;
   MajorLinkerVersion: Byte;
   MinorLinkerVersion: Byte;
   SizeOfCode: DWORD;
   SizeOfInitializedData: DWORD;
   SizeOfUninitializedData: DWORD;
   AddressOfEntryPoint: DWORD;


Разница в наличте одного поля: у них нет Sign: Cardinal;
Или это поле представлено у них в другом месте ? Тогда где ?


 
Riply ©   (2008-03-14 19:16) [32]

> [31] Riply ©   (14.03.08 18:50)

Нашла сбежавшее поле :)
Оно сидит в _IMAGE_NT_HEADERS


 
Игорь Шевченко ©   (2008-03-14 20:07) [33]

Riply ©   (14.03.08 17:49) [26]


> А что для нее(Винды) будет означать $C3 в данном случае
> ?


Для винды - ровным счетом ничего. Для процессора -завершение работы программы.


 
Тыщ   (2008-03-14 21:16) [34]

Почему бы просто не изменить сигнатуру "PE" на любую другую? Тогда exe-шник при следующем запуске выдаст "This program cannot be run in DOS mode." и заглохнет.


 
Игорь Шевченко ©   (2008-03-14 21:25) [35]


> Почему бы просто не изменить сигнатуру "PE" на любую другую?


так ее искать надо, а MZ оно в самом начале.

Кстати, вопрос к автору - а что ты за такой хитрый вирус пишешь ?


 
{RASkov} ©   (2008-03-14 21:48) [36]

> а что ты за такой хитрый вирус пишешь ?

дык наоборот говрит... гибель для вируса готовит :)


 
Германн ©   (2008-03-14 21:56) [37]


> {RASkov} ©   (14.03.08 21:48) [36]
>
> > а что ты за такой хитрый вирус пишешь ?
>
> дык наоборот говрит... гибель для вируса готовит :)
>

Скоро всем вирусописателям придется пересесть под Линукс. Под Виндой у них не останется никаких шансов.


 
{RASkov} ©   (2008-03-14 21:59) [38]

> [37] Германн ©   (14.03.08 21:56)

:) Значит поддержим мою тезку) ...Жаль что я в ее вопросах ни бум-бум :(


 
Riply ©   (2008-03-14 22:27) [39]

Смеетесь ? Да ? :)
А вот на форумах очень часто возникают вопросы как прибить
заразу, которую подцепили там-то и там-то.
Будет еще один вариант решения из многих других. :)

И потом, зря я что-ли с MFT мучалась ? Надо и что-то полезное из этого извлечь,
а то так и останется "голой, никому не нужной теорией" :)


 
Riply ©   (2008-03-14 22:34) [40]

> [35] Игорь Шевченко ©   (14.03.08 21:25)
> так ее искать надо, а MZ оно в самом начале.

То что надо искать и разбираться меня не пугает.
Главное, чтобы в результате моих действий никто, кроме этого экзешника,
не пострадал. Уж очень смущает факт, что процесс будет работать и после изменений.
Вдруг попробует считать какую-нибудь команду или адрес из измененного файла :)



Страницы: 1 2 вся ветка

Текущий архив: 2008.04.27;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.013 c
15-1205311341
DiamondShark
2008-03-12 11:42
2008.04.27
Задачка


2-1207259170
knopka
2008-04-04 01:46
2008.04.27
Объединение ячеек в DBGrig


15-1205735888
sds
2008-03-17 09:38
2008.04.27
MS SQL Server 2000


15-1205646648
Гость
2008-03-16 08:50
2008.04.27
как отредактировть .res?


2-1206856672
Fedor
2008-03-30 09:57
2008.04.27
Как узнать кол-во дней между датами в TDateTimePiker-ах?