Вот пишу полиморф движок дошел до генерирования мусора кодом,когда генерирвую строками ошибок нет,но делать это строками мне совесть не позволяет Code: function GetIncDec32():string; var I : integer; reg_inc,reg_dec : integer; begin randomize; i:=random(8); reg_inc:=0 reg_dec:=0; asm mov eax,40//Поместим в eax опкод inc mov ebx,48//Поместим в ebx опкод dec add eax,i//Добавим в eax,рандом регистр add ebx,i//Добавим в ebx,рандом регистр xchg reg_inc,eax//Получим в reg_inc нужный нам опкод xchg reg_dec,ebx//Получим в reg_dec нужный нам опкод end; result:=IntToStr(reg_inc)+IntToStr(reg_dec); end; Так все работает нормально,но если делаю это в цикле прога вылетает... почему???
вопервых лучше не использовать все 8 регистров для мусора, проблемы могут быть во вторых можно пойти по пути наимньшего сопротивления и задать сразу наборы мусорных инструкций, однобайтовых, двухбайтовых и т.д. а потом выбирать из них случайную
бред =) >> result:=IntToStr(reg_inc)+IntToStr(reg_dec); получаются теже строки!!! в какой цикл, что вылетает? ))) ольгу в зубы и смотреть код... з.ы. вообще в битовыми масками нада работать, так проще...
Ужасный код. Ищи исходники Morphine, там 2 версии в архиве, как на С, так и на дельфи. Также почитай про способы генерации мусорных команд.
Я знаю,что ужасный но надо же как то разобраться с принципом Кттаи в морфине не лучше $85- опкод test reg32 =)
Херня ваши морфины. Героин круче Генерация команд - полная лажа. Прикольнее разбивать код на куски, перемешивать их и делать джапмы друг на друга, просчитывая все остальные джапмы и колы.
дык ничё сложного, наф статейки? дизасм нормальны и вперёд... я пишу такую тулзу, надо будет выбрать участки кода и в итоге из них получится лапша =)
Самая дурь когда в твоём полиморфизме есть встроенный дизассемблер, который аналогичные команды заменяет своими, пример простой: есть add eax, 1 твоя прога заменяет на inc eax + nop's !!! Т.е. интелектуальный способ создания ПОЛИ\МНОГО МОРФИЗМ\ТЕЛЬНОГО кода, т.е. твоя прога изменяет тело программы не влияя на функциональность, вот это было бы круто, а не просто генерация мусора
> есть add eax, 1 твоя прога заменяет на inc eax + nop's !!! даа... просто гениальный метод, сложный в реализации. приватный наверное антивирусам по*** что там inc eax, add eax,1 или sub eax, -1 - у них свой меж-скриптовый сценарий генерится, где все твои инструкции считаются одной и тойже - "прибавить к eax единицу" нахера статейки? бери код, разбивай его на куски, делай джамп из одного в другой, все инструкции, зависящие от адреса (и старые джампы из одгого в другой) - перенастраивай Что реально интересно - виртуальная машина например. Вставлять нопы и заменять inc eax на add eax, 1 - бессмысленно
смысл в том, что какие-то действия заменить псвевдо-кодом (придумать свои инструкции) и написать обработчик - выполнялку этих инструкций. а тут уж замусорить код в самих инструкциях и обработчике. чем менее понятные, неконкретные и мелкие действия выполняют инструкции - тем хуевее будет человеку, который будет это отлаживать чему там весить? тем более каждый по своему сделает, можно mov eax, 1 превратить в десяток инструкций типа задать_регистр_для_работы(eax) задать_что_перемещать_будем DWORD выделить_буффер положить в буффер, с которым работаем "2" вычесть из буффера "1" скинуть_буфер_в_регистр, с которым работаем убрать_буффер тут все независимо от инструкция процессора - сам генерируй на одну инструкцию себе сколкьо хочешь всякого говна - то вычесть пять прибавить шесть вычесть один умножить на два, записать - убрать , переместить - поменять... и тд
Слуайте подскажите как генерить cmp reg32,reg32 Чот особой закономерности невижу,есть конечно догадки - но не более
А ты генеришь, основываясь на отличиях мнемоники команд?) Вообще-то описано какой у них должен быть опкод и как они формируются, в cadt by ms-rem дизассемблере видно как по cmp создается мнемоника, вот также и обратную сторону
В.Юров "Assembler. Специальный справочник". все там есть. и структура машинной команды и опкоды каждой инструкции
Воть тут сначало посмотрите!Если шарите в ассемблере то поймёте!Если шарите то тогда никчему эта тема! http://vx.org.ua/29a/main.html