информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
спасибо, стал изучать асм, очень интересно... 13.07.04 18:49  Число просмотров: 1484
Автор: 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 это я глюкнул, хотел вначале про функции спросить, потом в голову пришло другое =)
<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