информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
Не стоит тратить время. 14.07.04 13:05  Число просмотров: 1393
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Асм нужен для программирования крайне редко. Для отладки чаще - но там он тоже элементарно изучается по ходу дела.
<beginners>
APi 11.07.04 14:53  
Автор: int8h Статус: Незарегистрированный пользователь
<"чистая" ссылка>
объясните пожалуйста, как записать код в последнюю секцию PE файла и поменять заголовок, чтобы он указывал на эту секцию. если можно на с++ . спасибо если кто ответит
re: 11.07.04 18:04  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Лучшая реализация будет на ASM, пока с этим чётко не разберёшься, то на си ничего не сделаешь
Есть куча статей по этому поводу:
http://www.wasm.ru/publist.php?list=6
http://z0mbie.host.sk/

P.S. Почему APi?
спасибо, стал изучать асм, очень интересно... 13.07.04 18:49  
Автор: int8h Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Лучшая реализация будет на ASM, пока с этим чётко не
> разберёшься, то на си ничего не сделаешь
> Есть куча статей по этому поводу:
> http://www.wasm.ru/publist.php?list=6
> http://z0mbie.host.sk/
>
> P.S. Почему APi?

спасибо, стал изучать асм, очень интересно. http://www.cracklab.ru/pro/asm/ - отсюда скачал учебник для начинающих, учу пока и вроде бы все понятно. там правда асм для доса описан, но видимо пока не поймешь асм для 16 бит то на 32 бита переходить бессмысленно так ведь?

P.S. APi это я глюкнул, хотел вначале про функции спросить, потом в голову пришло другое =)
Не стоит тратить время. 14.07.04 13:05  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Асм нужен для программирования крайне редко. Для отладки чаще - но там он тоже элементарно изучается по ходу дела.
Я всё таки считаю, что асм нужно знать 14.07.04 15:49  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Каждый уважающий себя программер должен иметь представлении об асме. А то программируешь что-то и как оно в памяти отображается не пойми.
Ни фига асм не лучше 12.07.04 13:21  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Лучшая реализация будет на ASM, пока с этим чётко не
> разберёшься, то на си ничего не сделаешь
В winnt.h есть структуры IMAGE_NT_HEADERS и прочие. И ими вполне удобно пользоваться при разборе COFF/PE

> Есть куча статей по этому поводу:
> http://www.wasm.ru/publist.php?list=6
> http://z0mbie.host.sk/
>
> P.S. Почему APi?
Да, согласен, есть... а что ты положешь в nt_image_header? и... 12.07.04 15:53  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Да, согласен, есть... а что ты положешь в NT_IMAGE_HEADER? и как?
Зачем ложить? 12.07.04 16:56  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Да, согласен, есть... а что ты положешь в NT_IMAGE_HEADER?
> и как?
Я чего то не понимаю. Мепишь файл в память, находишь заголовок, накладываешь на него структуру и работаешь.

Кстати, NT-шный лоадер ПОЛНОСТЬЮ написан на С. Даже без ассемблерных вставок
ре 13.07.04 11:43  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Я то понял что он вирус пишет, и надо же что-то дописывать в последнюю секцию, а вот что и где это взять с помощью nt_image_headers? Если всё положить в один файл...
Если почитать доку по PE, то увидим, что сразу за за... 13.07.04 12:11  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я то понял что он вирус пишет, и надо же что-то дописывать
> в последнюю секцию, а вот что и где это взять с помощью
> nt_image_headers? Если всё положить в один файл...
Если почитать доку по PE, то увидим, что сразу за за IMAGE_NT_HEADERS-ами идут IMAGE_SECTION_HEADER-ы. Добавить туда чего нибудь не составляет труда. Вообще разбор PE-формата - очень простая задача. Главное взять доку.
Я разбирал PE очень подробно, и это понятно, что нужно... 13.07.04 18:28  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Я разбирал PE очень подробно, и это понятно, что нужно добовлять в IMAGE_SECTION_HEADER, НО! Вопрос стоит в том, где взять символы чтобы добовлять их в IMAGE_SECTION_HEADER? в асме как это очень просто, а вот в Си?
Я тоже разбирал 14.07.04 13:04  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я разбирал PE очень подробно, и это понятно, что нужно
> добовлять в IMAGE_SECTION_HEADER, НО! Вопрос стоит в том,
Повторюсь. Следом за IMAGE_NT_HEADERS-ами идет набор IMAGE_SECTION_HEADER-ов. По одной на каждую секцию. Добавить еще одну и подправить в FileHeader-е количество секций. Дописать в конец кусок данных с необходимым выравниванием тоже не бог весть какая программа.

> где взять символы чтобы добовлять их в
Какие такие символы? Не надо там никаких символов.

> IMAGE_SECTION_HEADER? в асме как это очень просто, а вот в
> Си?
В С все практически всегда ПРОЩЕ, чем в асме. Писать на асме (особенно на интеловском асме) - извращение. Практически никаких преимуществ, зато куча геморроя.
Что ты добавишь в секцию? 14.07.04 15:47  
Автор: choor Статус: Elderman
<"чистая" ссылка>
printf("i'm good virus"); ?
или всё таки асмовские инструкции?
Полагаю скопировать в чужую секцию секцию ехешника откуда... 14.07.04 15:59  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
> printf("i'm good virus"); ?
> или всё таки асмовские инструкции?
Полагаю скопировать в чужую секцию секцию ехешника откуда сам стартовал. Через memcpy. Хотя если писать "правильный" вирь со всякими полиморф-штучками то наверно сетаки без асма не обойтись.
Я кстати написал один полиморфный движок 14.07.04 16:33  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > printf("i'm good virus"); ?
> > или всё таки асмовские инструкции?
> Полагаю скопировать в чужую секцию секцию ехешника откуда
> сам стартовал. Через memcpy. Хотя если писать "правильный"
> вирь со всякими полиморф-штучками то наверно сетаки без
> асма не обойтись.
Со всей ответственностью заявляю, что обошелся там практически без асма. Асм и тот инлайновый был только при создании фрейма функции (загрузчике), которая или передавала управление оригинальному файлу или выходила с ошибкой - ну никак к стандартным С-шным фреймам это прикрутить иначе нельзя было, вот и пользовался __declspec(naked).

Ну а что до криптора/декриптора, которые кстати, были АБСОЛЮТНО полиморфными, то бишь не содержали никаких сигнатур и генерировались случайно. Так там тоже никаким асмом и не пахло. Напротив сильно разило машинным кодом. Но я бы не призывал всех программировать прямо в маш коде только потому, что без этого фиг напишешь полиморфик :-)
А можно src глянуть? 14.07.04 18:18  
Автор: choor Статус: Elderman
<"чистая" ссылка>
Оно проприетарное :-( 15.07.04 11:27  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Принадлежит той самой конторе, о которой я говорил в хуморе.

Так что, я хоть и не питаю особо теплых чувств к той конторе, но распространять их коммерческую тайну совесть не позволит.

Общий смысл: взял что то около 30-40 (точнее не помню) кодов операций, которые могут не трогать память. Разбил их по классам: без агрументов и не меняют регистров, без агрументов и меняют один регистр, непосредственный агрумент и меняют один регистр и т.д.

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

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




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach