contact us rules avd support awards upload blog group gallery home


 


|LoadsSell.net - Мы продаем загрузки| |PlohihZagRusOK.net - у нас нет плохих загрузок| |installsmarket.net - качественные загрузки любых стран| |installsdealer.com - Ваши дилеры на рынке инсталлов| |ZagruzkiNah.Com - чоткие загрузы| |107928 - продаю загрузки|

 
Старый 2 недель(и) назад   #1
dokzlo13

Windows v.3.51 (NT)
 
Аватар для dokzlo13

Регистрация: 08.02.2010
Сообщений: 142
Поблагодарили всего: 143
за это сообщение: 5
Восклицание собственно новичкам про крипторы

Ну во первых не видел на форуме статей о написании криптора. Да и в интернете их мало, везде отрывочные знания и предложения. Во вторых много копался по этому поводу, но написать нормальный криптор так и не вышло. Поэтому в этой теме будем только пробовать, кто что знает помогайте и дополняйте, может чего и получится ))

Нынче стали модны пакеры и крипторы exe/dll файлов. Не стану объяснять, зачем они нужны, а перейду сразу к делу. Сегодня я при тебе напишу самый простой exe-криптор. Как всегда, самым примечательным в моей статье будет крайний примитивизм. А второго ее качества, надеюсь, никто не заметит =).
на борту
Я предпологаю, что все, что ты имеешь - это прямые руки, навык кодить на Delphi и самые поверхностные понятия об ассемблере.
Первым делом тебе предстоит ознакомиться со структурой exe-файлов [Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]

Итак, теперь ты знаешь, как устроены exe-шники. Теперь я вкрадце опишу наш план.
план
В исполняемых файлах нас больше всего интересуют PE-заголовок, таблица секций и секция кода.
Как будет работать наш криптор?
Сначала заполненная часть секции кода будет зашифрована. Поскольку мы пишем простой криптор, то "шифровать" он будет простым not'ом.
В конец кода мы запишем крохотный декриптор, который этот самый код расшифрует и передаст ему управление.
Тут есть 2 момента. Во-первых, при запуске программы должен начинать работать не шифротекст, а декриптор. Поэтому нам придется изменить Entry Point в PE заголовке. А во-вторых, так просто изменять код бинарников нам никто не даст. При запуске программы вся секция кода помещается в память. Вот там мы изменим код программы. Чтобы мы могли писать в секцию кода, необходимо изменить ее Object Flag.

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

Код:
push 12345678
ret
передает управление в точку с адресом 12345678h. А если она сместиться, сам понимаешь, неизбежны ошибки. Если поместить декодер в конце - таких проблем не возникнет.

Как ты заметил, размер каждой секции выровнен относительно File Align. Значит в секции кода, скорее всего, есть немного места для декодера. Мы не будем расширять секцию кода, а значит у екзешника даже не измениться размер.

Двойной клик по семерке с глобусом
Вкурил? ^_^ Приступим к реализации вкрадце описанного мною плана.
Как будет внедряться код?
Сначала следует изменить PE заголовок и элемент таблицы секции, описывающий секцию кода (как правило самый первый элемент). Мы добавляем код, следовательно его размер измениться.

Код:
inc(PEModuleHeader.Size_of_Code,sizeof(CryptCode)) ;
inc(SectionTable.Virtual_Size,sizeof(CryptCode));
Затем вспоминаем, что мы собираемя модифицировать код в процессе работы программы:

Код:
SectionTable.Object_Flags:=SectionTable.Object_Fla gs or $80000000;
Меняем точку входа, теперь она распологается прямо за кодом программы:

Код:
STVirtSize:=SectionTable.Virtual_Size;
PEModuleHeader.Entry_Point_RVA:=PEModuleHeader.Bas e_of_Code+STVirtSize;
Определяемя с функцией шифрования:

Код:
function crypt(b:byte):byte;
begin
result:=not b;
end;
Мы должны прочитать бинарник до начала кода.
Затем зашифровать код. Затем вставить прямо за ним дешифровщик. Как он выглядит:

mov ecx, 0xddccbbaa; помещаем в ecx длинну зашифрованного кода
call 0 ; вызываем следующую команду
pop eax ; помещаем в eax адрес текущей команды
push 0xddccbbaa ; помещаем в стек старую точку входа
sub eax,14 ; вычисляем адрес конца шифротекста
not byte ptr [eax]; "шифруем"
dec eax ; переходим к предыдущему байту
loop $-3 ; в начало цикла
ret ; переходим в старый Entry Point

Вот тут скорее всего возникнет масса вопросов.

Сначала мы помещаем в регистр ecx длину шифротекста. Затем вызываем инструкцию, смещенную относительно данной на ноль байт, то есть следующую. Что нам это дало - при выполнении инструкции call в вершину стека помещается адрес следующей команды. Затем мы извлекаем этот самый адрес, теперь уже текущей команды, в регистр eax. Помещаем в стек адрес старой точки входа - зачем - чуть ниже.
Мы вычитаем из eax длину вышестоящих команд, таким образом теперь в eax записан адрес конца шифротекста, ведь декодер следует прямо за ним.
Мы инвентируем байт по адресу [eax], то есть последний байт шифротекста. Уменьшаем eax на единицу, то есть теперь в нем записан адрес предпоследнего байта шифротекста. loop -3 - переходим к инструкции not byte ptr [eax]. При этом из ecx вычитается единица.
Цикл будет повторяться до тех пор, пока не обнулиться ecx, то есть, пока весь код не будет расшифрован. Ты еще помнишь, что в ecx записанна длина кода?
Затем выполниться инструкция ret. При этом управление передастся в точку с адресом, записанным в вершину стека. Если ты помнишь, туда мы записали старую точку входа. То есть сразу после дешифровки управление передастся расшифрованному коду программы.

© drmist

Ещё выкладываю пару исходников крипторов на делфи:
[Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]
[Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]

Вот ещё неплохие исходники + программа.
На C++ [Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]
НА Delphi [Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]

источник [Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]
__________________
[Ссылки доступны только зарегистрированным пользователям . Регистрируйся тут...]
dokzlo13 вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Сказали спасибо:
maulo (3 дн. назад), dvozd (2 недель(и) назад), Dave (2 недель(и) назад), dzhoka (2 недель(и) назад), _Stealer_ (2 недель(и) назад)
Старый 3 дн. назад   #2
maulo

Windows v.3.0
 
Аватар для maulo

Регистрация: 19.11.2010
Адрес: http://www.Google.com/shell.php
Сообщений: 32
Поблагодарили всего: 3
за это сообщение: 0
Отправить сообщение для maulo с помощью ICQ
По умолчанию

Вся схема очень запутана, я пробивал написать по вашим исходнику неполучилось, появилось много вопросов которие необговорение в етой стате, бил би я очень рад если би ви виложили видео к мануалу ...
maulo на форуме  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Старый 1 день назад   #3
fgmed

Windows v.2.03

Регистрация: 04.11.2010
Сообщений: 22
Поблагодарили всего: 1
за это сообщение: 0
По умолчанию

а если создать на вашем исходнике будет палиться антивирусами?
fgmed вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Непрочитано 17 час(ов) назад   #4
hz_kto_ya

Windows v.1.01

Регистрация: 16.11.2010
Сообщений: 1
Поблагодарили всего: 0
за это сообщение: 0
По умолчанию

Автор перезалей исходники плиз!
To fgmed: конечно будет.
hz_kto_ya вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Непрочитано 6 час(ов) назад   #5
master008

Windows 98

Регистрация: 30.07.2010
Сообщений: 153
Поблагодарили всего: 43
за это сообщение: 1
Отправить сообщение для master008 с помощью ICQ
По умолчанию

В статье описаны самые самые основы. Но именно это лучший вариант криптора а не через грёбанный writeprocessmemory.

Цитата:
а если создать на вашем исходнике будет палиться антивирусами?
Будет палить добрая половина с вирустотала(включая нод, аваст , каспер и доктор....), так как тут даже антиэмуляции нету. Про антиэвристику вообще молчу. Зато это очень хорошая основа для будущего полиморфного криптора.

Последний раз редактировалось master008; 5 час(ов) назад в 21:33.
master008 вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Сказали спасибо:
Dave (3 час(ов) назад)
Ответ

Нижняя навигация
Вернуться   Fuck Anti Virus > Работаем с файлами > Статьи


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

(Подробнее Тему прочитали: 49
adad333, aka Russian, alex102, BARBAR, bertolai, borman, cout<<, darkest, Daro, Dave, demaro, denis187500, dokzlo13, drtro, dum_forever, dvozd, dzhoka, eugen_mur, Falcon, fgmed, Fither, gaLLex, GrammarNazi, hz_kto_ya, kalibr98, kekx_plant, killyou, leviy13, lexxel, master008, maulo, mers, MULLIKA, olegteror, recfrf, Replayer, Reptiliy, sarkazzi, seeilin, Ser555, sql100, VAN32, WestSide, Xeleo, XpideX, [free_style], _Stealer_
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:31.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot