Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Помогите по полиморфизму (https://forum.antichat.xyz/showthread.php?t=47551)

zl0y 25.08.2007 02:44

Помогите по полиморфизму
 
Вот пишу полиморф движок дошел до генерирования мусора кодом,когда генерирвую строками ошибок нет,но делать это строками мне совесть не позволяет :)
Код:

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;

Так все работает нормально,но если делаю это в цикле прога вылетает... почему??? :(

dmnt 25.08.2007 11:01

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

Hellsp@wn 25.08.2007 12:11

бред =)

>> result:=IntToStr(reg_inc)+IntToStr(reg_dec);

получаются теже строки!!!

в какой цикл, что вылетает? ))) ольгу в зубы и смотреть код...

з.ы. вообще в битовыми масками нада работать, так проще...

Ni0x 25.08.2007 14:52

Ужасный код.
Ищи исходники Morphine, там 2 версии в архиве, как на С, так и на дельфи. Также почитай про способы генерации мусорных команд.

zl0y 25.08.2007 15:00

Цитата:

Сообщение от Ni0x
Ужасный код.
Ищи исходники Morphine, там 2 версии в архиве, как на С, так и на дельфи. Также почитай про способы генерации мусорных команд.

Я знаю,что ужасный :) но надо же как то разобраться с принципом ;)

Кттаи в морфине не лучше ;)
Цитата:

procedure TestReg32Rand(var AMem: PByte);
begin
AMem^:= $85;
Inc(AMem);
AMem^:= $C0 + RandomReg32All*9;
Inc(AMem);
end;
$85- опкод test reg32 =)

KEZ 25.08.2007 19:30

Херня ваши морфины. Героин круче;)
Генерация команд - полная лажа. Прикольнее разбивать код на куски, перемешивать их и делать джапмы друг на друга, просчитывая все остальные джапмы и колы.

zl0y 25.08.2007 19:39

Цитата:

Сообщение от kez
Херня ваши морфины. Героин круче;)
Генерация команд - полная лажа. Прикольнее разбивать код на куски, перемешивать их и делать джапмы друг на друга, просчитывая все остальные джапмы и колы.

А ты статеек подкинь номальных,а то мне самому кроме генерации по опкодам ничег ов голову неприходит :(

Hellsp@wn 25.08.2007 19:44

дык ничё сложного, наф статейки? дизасм нормальны и вперёд...
я пишу такую тулзу, надо будет выбрать участки кода и в итоге из них получится
лапша =)

GlOFF 04.09.2007 00:03

Самая дурь когда в твоём полиморфизме есть встроенный дизассемблер, который аналогичные команды заменяет своими, пример простой:
есть add eax, 1 твоя прога заменяет на inc eax + nop's !!! Т.е. интелектуальный способ создания ПОЛИ\МНОГО МОРФИЗМ\ТЕЛЬНОГО кода, т.е. твоя прога изменяет тело программы не влияя на функциональность, вот это было бы круто, а не просто генерация мусора :)

KEZ 04.09.2007 02:42

> есть add eax, 1 твоя прога заменяет на inc eax + nop's !!!

даа... просто гениальный метод, сложный в реализации. приватный наверное
антивирусам по*** что там inc eax, add eax,1 или sub eax, -1 - у них свой меж-скриптовый сценарий генерится, где все твои инструкции считаются одной и тойже - "прибавить к eax единицу"

Цитата:

А ты статеек подкинь номальных,а то мне самому кроме генерации по опкодам ничег ов
голову неприходит
нахера статейки? бери код, разбивай его на куски, делай джамп из одного в другой, все инструкции, зависящие от адреса (и старые джампы из одгого в другой) - перенастраивай

Что реально интересно - виртуальная машина например.
Вставлять нопы и заменять inc eax на add eax, 1 - бессмысленно


Время: 23:02