Написание криптора с нуля на C#
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Написание криптора с нуля на C# - 2008-12-27 19:46:20
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
Решил написать свой криптор …. Начал с изучения Формата РЕ (если знаете лучше, выкладывайте) Не помешает не большой пример на C# или VB с описанием, чем подробней тем лучше :) , что бы лучше понять. Спросив у Гугла получил кучу инфы, но ничего конкретного, с не известно откуда взятыми вырезками из кода. Есть примеры на ассемблере, но у меня о нем очень поверстные знания. В итоге каша из абстрактной информации, которую я не могу систематизировать. Может я Гугл не о том спрашивал… ?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-27 19:50:13.156666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Все легко, пользуясь даже Windows API , открываем файл смещаемся на 3Сh относительно начала, Считываем от туда PE Header Offset затем допустим что бы узнать колличество секций файле смещаемся PE Header Offset + 06h .. А все остальное что тебе нужно почитай о PE формате.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-27 19:57:12.910000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Затем считываешь все секции циклом, игнорируя некоторые(Импорт,Ресурсы и т.д.) если пишешь простой криптор, описание каждой секции занимает 40 байт. Потом смотришь в описании секции Физическое смещение и размер. Циклом шифруешь как нибудь предположим XOR 1 байт. Затем добавляешь новую секцию, на нее стаившь точку входа и примерно такой код в ней будет: MOV EAX,Виртуальное смещение+ImageBase MOV ECX,Виртуальное смещение+Виртуальный размер+ImageBase loop: XOR byte [EAX],XX (xx - Это ключ) INC EAX CMP EAX,ECX JNZ loop JMP OEP
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-28 04:08:20.840000
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
На сколько я понимаю, без asm не обойтись (для написания дискриптора) Меня интересует написание непосредственно реализации шифрования, т.к. стопор именно тут и по дискриптору. P.S. в это все влез совсем не давно, было бы хорошо получить это в "разжеванном" виде, идеи с другими форурами не интересуют т.к. запоминание лишней пары логин/пароль меня не прикалывает, + это рейтинг для этого форума.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-28 12:12:11.680000
|
|
|
Flint_ta
Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
|
Вот тут почитай http://wasm.ru/article.php?article=packlast01 http://wasm.ru/article.php?article=packers2
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-28 19:35:05.013333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
Bestoloch Да , без асма не обойтись , ну а что в шифровании? XOR\ADD\SUB
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 06:28:06.500000
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
Если я правильно понимаю, то на ассемблере пишется только дескриптор, который вставляется в файл, остальное можно писать на разных языках. Исходя из это делаю вывод, что ОС уже умеет шифровать различными методами. Поэтому у меня возникает вопрос: Эти методы перемешиваются для получения нового варианта? 2 Sunzer по идее XOR\ADD\SUB - это виды шифрования? Сейчас без разницы какой, мне годятся любые примеры …
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 11:31:29.140000
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
XOR\ADD\SUB Это операции, самые банальные,и могут использоватся для шифрования. Пример с шифрованием XOR Ключ: FF Было: 1B 36 C5 Будет: E4 C9 3A Тоесть мы своим криптором открываем файл шифруем все секции точнее все байты в секции как на примере выше. Затем пишешь новую секцию в файл ставишь на нее EP (Entry Point) и пишешь в нее следующий код: MOV EAX,xxx ;xxx - ImageBase+VirtualOffset Секции MOV ECX,yyy ;yyy - ImageBase+VirtualOffset+VirtualSize Секции loop: ; метка цикла XOR byte[EAX],FF ;FF - Ключ на которые мы шифровали байты выше INC EAX ; Увеличиваем регистр на 1 байт CMP EAX,ECX ; Сравниваем EAX и ECX JNZ loop
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 18:20:50.806666
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
значит если просто поместить дескриптор в конец файла, то сам алгоритм и ключ при дизасемблировании будут доступны?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 20:12:51.516666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
ORIGINAL: Bestoloch значит если просто поместить дескриптор в конец файла, то сам алгоритм и ключ при дизасемблировании будут доступны? Не понял смысла твоего сообщения. Но скажу что тебе еще рано крипторы писать. Изучи PE формат пользуйся OllyDbg
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 21:47:38.190000
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
quote:
Изучи PE формат пользуйся OllyDbg Что то не пойму зачем для изучения PE нужен ollydbg?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 21:55:07.356666
|
|
|
Flint_ta
Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
|
Хотя бы потому что в оле есть карта памяти, где PE хидер представлен в удобочитаемом виде, с описанием всех полей
$ ==> > >ASCII "PE" ; PE signature (PE)
$+4 > >DW 014C ; Machine = IMAGE_FILE_MACHINE_I386
$+6 > >DW 0004 ; NumberOfSections = 4
$+8 > >DD 4751493C ; TimeDateStamp = 4751493C
$+C > >DD 00000000 ; PointerToSymbolTable = 0
$+10 > >DD 00000000 ; NumberOfSymbols = 0
$+14 > >DW 00E0 ; SizeOfOptionalHeader = E0 (224.)
$+16 > >DW 010F ; Characteristics = EXECUTABLE_IMAGE|32BIT_MACHINE|RELOCS_STRIPPED|LINE_NUMS_STRIPPED|LOCAL_SYMS_STRIPPED
$+18 > >DW 010B ; MagicNumber = PE32
$+1A > >DB 05 ; MajorLinkerVersion = 5
$+1B > >DB 0C ; MinorLinkerVersion = C (12.)
$+1C > >DD 00000200 ; SizeOfCode = 200 (512.)
$+20 > >DD 00001600 ; SizeOfInitializedData = 1600 (5632.)
$+24 > >DD 00000000 ; SizeOfUninitializedData = 0
$+28 > >DD 00001000 ; AddressOfEntryPoint = 1000
$+2C > >DD 00000000 ; BaseOfCode = 0
$+30 > >DD 00002000 ; BaseOfData = 2000
$+34 > >DD 00400000 ; ImageBase = 400000
$+38 > >DD 00001000 ; SectionAlignment = 1000
$+3C > >DD 00000200 ; FileAlignment = 200
$+40 > >DW 0004 ; MajorOSVersion = 4
$+42 > >DW 0000 ; MinorOSVersion = 0
$+44 > >DW 0000 ; MajorImageVersion = 0
$+46 > >DW 0000 ; MinorImageVersion = 0
$+48 > >DW 0004 ; MajorSubsystemVersion = 4
$+4A > >DW 0000 ; MinorSubsystemVersion = 0
$+4C > >DD 00000000 ; Reserved
$+50 > >DD 00006000 ; SizeOfImage = 6000 (24576.)
$+54 > >DD 00000400 ; SizeOfHeaders = 400 (1024.)
$+58 > >DD 00000000 ; CheckSum = 0
$+5C > >DW 0002 ; Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI
$+5E > >DW 0000 ; DLLCharacteristics = 0
$+60 > >DD 00100000 ; SizeOfStackReserve = 100000 (1048576.)
$+64 > >DD 00001000 ; SizeOfStackCommit = 1000 (4096.)
$+68 > >DD 00100000 ; SizeOfHeapReserve = 100000 (1048576.)
$+6C > >DD 00001000 ; SizeOfHeapCommit = 1000 (4096.)
$+70 > >DD 00000000 ; LoaderFlags = 0
$+74 > >DD 00000010 ; NumberOfRvaAndSizes = 10 (16.)
$+78 > >DD 00000000 ; Export Table address = 0
$+7C > >DD 00000000 ; Export Table size = 0
$+80 > >DD 00002010 ; Import Table address = 2010
$+84 > >DD 0000003C ; Import Table size = 3C (60.)
$+88 > >DD 00004000 ; Resource Table address = 4000
$+8C > >DD 00001160 ; Resource Table size = 1160 (4448.)
$+90 > >DD 00000000 ; Exception Table address = 0
$+94 > >DD 00000000 ; Exception Table size = 0
$+98 > >DD 00000000 ; Certificate File pointer = 0
$+9C > >DD 00000000 ; Certificate Table size = 0
$+A0 > >DD 00000000 ; Relocation Table address = 0
$+A4 > >DD 00000000 ; Relocation Table size = 0
$+A8 > >DD 00000000 ; Debug Data address = 0
$+AC > >DD 00000000 ; Debug Data size = 0
$+B0 > >DD 00000000 ; Architecture Data address = 0
$+B4 > >DD 00000000 ; Architecture Data size = 0
$+B8 > >DD 00000000 ; Global Ptr address = 0
$+BC > >DD 00000000 ; Must be 0
$+C0 > >DD 00000000 ; TLS Table address = 0
$+C4 > >DD 00000000 ; TLS Table size = 0
$+C8 > >DD 00000000 ; Load Config Table address = 0
$+CC > >DD 00000000 ; Load Config Table size = 0
$+D0 > >DD 00000000 ; Bound Import Table address = 0
$+D4 > >DD 00000000 ; Bound Import Table size = 0
$+D8 > >DD 00002000 ; Import Address Table address = 2000
$+DC > >DD 00000010 ; Import Address Table size = 10 (16.)
$+E0 > >DD 00000000 ; Delay Import Desсriрtor address = 0
$+E4 > >DD 00000000 ; Delay Import Desсriрtor size = 0
$+E8 > >DD 00000000 ; COM+ Runtime Header address = 0
$+EC > >DD 00000000 ; Import Address Table size = 0
$+F0 > >DD 00000000 ; Reserved
$+F4 > >DD 00000000 ; Reserved
$+F8 > >ASCII ".text" ; SECTION
$+100 > >DD 00000026 ; VirtualSize = 26 (38.)
$+104 > >DD 00001000 ; VirtualAddress = 1000
$+108 > >DD 00000200 ; SizeOfRawData = 200 (512.)
$+10C > >DD 00000400 ; PointerToRawData = 400
$+110 > >DD 00000000 ; PointerToRelocations = 0
$+114 > >DD 00000000 ; PointerToLineNumbers = 0
$+118 > >DW 0000 ; NumberOfRelocations = 0
$+11A > >DW 0000 ; NumberOfLineNumbers = 0
$+11C > >DD 60000020 ; Characteristics = CODE|EXECUTE|READ
$+120 > >ASCII ".rdata" ; SECTION
$+128 > >DD 00000092 ; VirtualSize = 92 (146.)
$+12C > >DD 00002000 ; VirtualAddress = 2000
$+130 > >DD 00000200 ; SizeOfRawData = 200 (512.)
$+134 > >DD 00000600 ; PointerToRawData = 600
$+138 > >DD 00000000 ; PointerToRelocations = 0
$+13C > >DD 00000000 ; PointerToLineNumbers = 0
$+140 > >DW 0000 ; NumberOfRelocations = 0
$+142 > >DW 0000 ; NumberOfLineNumbers = 0
$+144 > >DD 40000040 ; Characteristics = INITIALIZED_DATA|READ
$+148 > >ASCII ".data" ; SECTION
$+150 > >DD 0000001D ; VirtualSize = 1D (29.)
$+154 > >DD 00003000 ; VirtualAddress = 3000
$+158 > >DD 00000200 ; SizeOfRawData = 200 (512.)
$+15C > >DD 00000800 ; PointerToRawData = 800
$+160 > >DD 00000000 ; PointerToRelocations = 0
$+164 > >DD 00000000 ; PointerToLineNumbers = 0
$+168 > >DW 0000 ; NumberOfRelocations = 0
$+16A > >DW 0000 ; NumberOfLineNumbers = 0
$+16C > >DD C0000040 ; Characteristics = INITIALIZED_DATA|READ|WRITE
$+170 > >ASCII ".rsrc" ; SECTION
$+178 > >DD 00001160 ; VirtualSize = 1160 (4448.)
$+17C > >DD 00004000 ; VirtualAddress = 4000
$+180 > >DD 00001200 ; SizeOfRawData = 1200 (4608.)
$+184 > >DD 00000A00 ; PointerToRawData = A00
$+188 > >DD 00000000 ; PointerToRelocations = 0
$+18C > >DD 00000000 ; PointerToLineNumbers = 0
$+190 > >DW 0000 ; NumberOfRelocations = 0
$+192 > >DW 0000 ; NumberOfLineNumbers = 0
$+194 > >DD C0000040 ; Characteristics = INITIALIZED_DATA|READ|WRITE
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-29 22:12:28.983333
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
quote:
Хотя бы потому что в оле есть карта памяти, где PE хидер представлен в удобочитаемом виде, с описанием всех полей Есть более удобные программы для изучения PE формата… которые позволяют не только показывать но и легко менять значения этих самых полей. Да и написать такую программу при минимальных навыках программирования не составляет труда. Да и "PE Header в удобно читаемом виде" удобно представлен в описании PE формата… p.s. Я не хочу наговаривать на olly, но для этого есть более удобные вещи…
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 04:45:54.830000
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
Может кто нибудь написать (C# или VB) простое консольное приложение, которое будет шифровать файлик операцией XOR с ключом FF и вписывать в его конец дескрипторquote:
ORIGINAL: Sunzer MOV EAX,xxx ;xxx - ImageBase+VirtualOffset Секции MOV ECX,yyy ;yyy - ImageBase+VirtualOffset+VirtualSize Секции loop: ; метка цикла XOR byte[EAX],FF ;FF - Ключ на которые мы шифровали байты выше INC EAX ; Увеличиваем регистр на 1 байт CMP EAX,ECX ; Сравниваем EAX и ECX JNZ loop меня интересует сейчас сам код 2 Sunzer в смысле если зашифрованный файл дезассемблировать, то по дескриптору можно будет узнать алгоритм шифрования. 2 spikky я спорить не могу о существовании более удобных программ для изучения PE, но без примеров это выглядит голословно.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 05:17:19.210000
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
quote:
в смысле если зашифрованный файл дезассемблировать, то по дескриптору можно будет узнать алгоритм шифрования Что вы имете ввиду под словом "дескриптор"? Что-то никак не могу врубиться
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 05:26:46.210000
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
quote:
ORIGINAL: spikky quote:
в смысле если зашифрованный файл дезассемблировать, то по дескриптору можно будет узнать алгоритм шифрования Что вы имете ввиду под словом "дескриптор"? Что-то никак не могу врубиться блок команд на asm для расшифровки и на который устанавливается точка входа.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 05:46:54.226666
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
тогда это декриптором называется, а не дескриптором… и не обязательно на asm..
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 06:08:36.536666
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
Спасибо за исправление…quote:
и не обязательно на asm.. можно по подробнее… ?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 06:25:14.283333
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
Что значит по подбробнее? Щас утро наверное, я не совсем понимаю суть вопроса. Ты спросил тебе вроде все что нужно ответили. Цитирую: quote:
Все легко, пользуясь даже Windows API , открываем файл смещаемся на 3Сh относительно начала, Считываем от туда PE Header Offset затем допустим что бы узнать колличество секций файле смещаемся PE Header Offset + 06h .. quote:
Затем считываешь все секции циклом, игнорируя некоторые(Импорт,Ресурсы и т.д.) если пишешь простой криптор, описание каждой секции занимает 40 байт. Потом смотришь в описании секции Физическое смещение и размер. Циклом шифруешь как нибудь предположим XOR 1 байт. Затем добавляешь новую секцию, на нее стаившь точку входа и примерно такой код в ней будет: Затем дали ссылки на описание формата PE. Объяснили суть шифрования XOR'ом. Что еще нужно-то? p.s. декриптор действиельно удобнее на асме писать - погорячился.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 06:33:40.420000
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
quote:
можно по подробнее… ? Относилось к фразе: - "и не обязательно на asm.." :) Что касается:quote:
quote:
Все легко, пользуясь даже Windows API , открываем файл смещаемся на 3Сh относительно начала, Считываем от туда PE Header Offset затем допустим что бы узнать колличество секций файле смещаемся PE Header Offset + 06h .. quote:
Затем считываешь все секции циклом, игнорируя некоторые(Импорт,Ресурсы и т.д.) если пишешь простой криптор, описание каждой секции занимает 40 байт. Потом смотришь в описании секции Физическое смещение и размер. Циклом шифруешь как нибудь предположим XOR 1 байт. Затем добавляешь новую секцию, на нее стаившь точку входа и примерно такой код в ней будет: тут вопросов нет
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 09:59:27.923333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
2 Sunzer в смысле если зашифрованный файл дезассемблировать, то по дескриптору можно будет узнать алгоритм шифрования. Да конечно, если это будет банальный криптор.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 14:48:30.663333
|
|
|
Bestoloch
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-26 22:53:05.126666
|
ИТОГО: Для написания криптора нам понадобится:[ul]Представления о PE формате (а лучше его знание) Знание ассемблера и что либо из высокоуровнего языка программирования для удобства написания пользовательского интерфейса и алгоритма кодирования Некоторые остальные знания придут в процессе его написания [/ul]Если у кого есть опыт в написании криптора, может есть какие советы? ну в общем то о чем не упомянуто в статьях или просто для новичка в этом деле.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 15:00:21.666666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Да вроде ты в нужную копаешь. Если потянешь - хорошо. Если нет - начни с чего-то более простого. Написать свой хороший криптор (на русском - упаковщик) - задача достаточно тяжёлая. На wasm,ru есть полезные статьи по этой теме. Если планируешь использовать в коммерческих продуктах - то можно, к примеру, для каждого клиента выпускать отдельную сборку и в качестве ключа использовать серийник винта конечного пользователя (к примеру). Это достаточно эффективно защитит программу от незаконного распостранения. + Можно подпорчитьвать уже загруженный и распакованный образ, чтобы у злоумышленнику было не так просто извлечь рабочий дамп твоей распакованный программы. Но такие вещи не очень логично писать на C#. Лучше всего Си + WinAPI, дабы не привязываться ни к каким разширениям ОС.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 22:01:51.426666
|
|
|
spikky
Сообщений: 211
Оценки: 0
Присоединился: 2008-10-26 14:50:23.676666
|
quote:
Но такие вещи не очень логично писать на C#. Лучше всего Си + WinAPI, дабы не привязываться ни к каким разширениям ОС. Как по мне так без разницы. В С# ведь можно ассемблерные ставки делать? Да и .net уже наверное у каждого стоит…
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-30 22:07:10.383333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
ORIGINAL: spikky quote:
Но такие вещи не очень логично писать на C#. Лучше всего Си + WinAPI, дабы не привязываться ни к каким разширениям ОС. Как по мне так без разницы. В С# ведь можно ассемблерные ставки делать? Да и .net уже наверное у каждого стоит… А зачем ассемблерные вставки? декриптор можно и записать легче, мы же опкоды знаем.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 10:19:24.656666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Правильно, зачем делать предназначенными для этого средствами, когда можно всё через (_!_) на C#? Нафиг париться с экспортированием и ассемблерными вставками, тем более, что это уже unmanaged код будет? Чем выбор C# аргументирован?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 10:43:03.293333
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
ORIGINAL: _SaZ_ Правильно, зачем делать предназначенными для этого средствами, когда можно всё через (_!_) на C#? Нафиг париться с экспортированием и ассемблерными вставками, тем более, что это уже unmanaged код будет? Чем выбор C# аргументирован? Ассемблерные вставки не обязательны.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 10:53:10.056666
|
|
|
Light Alloy
Сообщений: 1055
Оценки: 0
Присоединился: 2008-06-26 22:19:38.730000
|
мне тоже нужен криптор только написать не смогу а все крипторы уже давно палятся антивирусами
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 11:08:11.650000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
С каких это пор крипторы палятся антивирусами?
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 11:09:13.860000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: Sunzer quote:
ORIGINAL: _SaZ_ Правильно, зачем делать предназначенными для этого средствами, когда можно всё через (_!_) на C#? Нафиг париться с экспортированием и ассемблерными вставками, тем более, что это уже unmanaged код будет? Чем выбор C# аргументирован? Ассемблерные вставки не обязательны. Я цитировал автора. Он скорее всего сам не представляет, что ему нужно.
|
|
|
RE: Написание криптора с нуля на C# - 2008-12-31 18:02:58.240000
|
|
|
VENOM4X
Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
|
Light Alloy: Сами крипторы, как правило, не палятся антивирусами. Просто антивири их снимают/декриптуют, и потом палят то, что ты криптанул - т.е. саму малварь. Но, если создатели антивиря люди ленивые, то они не реализуют свой алгоритм расшифровки для каждого криптора, а просто добавляют в базу сигнатуру секции-декриптора. В таком случае действительно палится всё обработанное данным криптором, даже notepad.exe. Насчёт ассемблерных вставок: Зачем? Можно писать сразу опкоды. NOP - 90h, RETN - C3h, JMP ECX - FFE1 и т.д. В таком случае не принципиально на чём написан сам криптор.
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-01 12:47:24.183333
|
|
|
Light Alloy
Сообщений: 1055
Оценки: 0
Присоединился: 2008-06-26 22:19:38.730000
|
я криптовал троян который не палится каспером, проверил его каспером, файл размером 50 kb расшифровывал 50 сек. незаполил его а вот его загрузил на сервер и закрыли мне доступ по фтп иза вредоносной программы я не думаю что антивири будут умело расшифровывать все крипторы и палить то что криптонул, но в базе криптор может быть и поэтому может считатся подозрительным файлом
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-01 13:48:46.446666
|
|
|
Sunzer
Сообщений: 253
Оценки: 31190
Присоединился: 2007-06-15 19:23:32.436666
|
quote:
ORIGINAL: Light Alloy я криптовал троян который не палится каспером, проверил его каспером, файл размером 50 kb расшифровывал 50 сек. незаполил его а вот его загрузил на сервер и закрыли мне доступ по фтп иза вредоносной программы я не думаю что антивири будут умело расшифровывать все крипторы и палить то что криптонул, но в базе криптор может быть и поэтому может считатся подозрительным файлом Распаковщики к банальным крипторам делаются очень просто. А чаще всего палят саму сигнатуру криптора.
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-01 14:10:03.576666
|
|
|
VaZoNeZ
Сообщений: -6758
Оценки: 0
Присоединился: 2008-10-31 14:38:43.796666
|
есть длл-ка готовая для работы с секциями и т.д.
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-05 13:03:10.483333
|
|
|
treemout
Сообщений: 17
Оценки: 0
Присоединился: 2008-12-30 18:31:38.580000
|
а что такое криптор? это что-то вроде шифрования программы?
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-05 13:55:46.400000
|
|
|
repne_stosd
Сообщений: 10
Оценки: 0
Присоединился: 2008-12-08 08:45:25.093333
|
Криптор - это программа для защиты других программ от детектирования файловыми анализаторами антивирусов. Антивирусы используют две принципиально различающиеся технологии защиты: 1. Файловый анализ - анализ файла на диске (запуск, распаковка, в эмуляторе авера), детектирование по сигнатурам. 2. Проактивная защита - анализ поведения запущенного exe, осуществляется перехватом кернел-модных функций. Например в программе вызывается функция recv, происходит переход в ядро, а там стоит хук авера. Авер смотрит какой процесс пытается что-то отправить, и если его нет в списке разрешенных - ругается матом. Аналогично с WriteProcessMemory - опасное действие нах!!! Крипторы защищают только от первого. Чтобы не палила проактивная защита нужно лезть в ядро. И криптор способный на такое будет стоить на 50$, 10050$. Чтобы защититься от файлового анализа нужно сбить сигнатуру криптуемого файла (для этого файл и шифруется). Но! Когда криптованный файл будет запущен, он неминуемо будет расшифрован. Для этого и предназначены эмуляторы. Они запускают файл в своей песочнице (sandbox) (маленькая виртуальная машина, изолированная от окружающей среды) трейсят его до тех пор пока не дойдут до процедуры расшифровки и не выполнят ее. После расшифровки снова пробегаются своими сигнами по расшифрованным данным(коду). Найден вирус - ругаемся, нет - молчим. Чтобы избежать этого, нужно отправить эмулятор по ложному пути. Есть множество способов достижения этой цели, например, rdtsc, GetLastError и еще много чего. Ищите, кто ищет, тот всегда найдет;)
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-06 01:28:44.816666
|
|
|
Flint_ta
Сообщений: 3720
Оценки: 1120
Присоединился: 2007-01-26 15:49:18.323333
|
вот про GetLastError поподробнее пожалуйста quote:
Например в программе вызывается функция recv P.S. может не recv, а send? :)
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-06 02:12:25.703333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Обычно и то и то вызывается :) Сэнд с ресивом ходят парой… хотя синхронные сокеты - зло.
|
|
|
RE: Написание криптора с нуля на C# - 2009-01-06 17:27:47.363333
|
|
|
Archivarius
Сообщений: 164
Оценки: 0
Присоединился: 2008-10-26 00:16:25.630000
|
quote:
ORIGINAL: spikky В С# ведь можно ассемблерные ставки делать? Каким образом?
|
|
|
|
|