Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [ 86 ] 87 88

Sgenp:

@nomod:

mov cl, al

rcl al, 1

jnc @rioraod

xor al, IBh

xor al, cl

mov BYTE PTR ptbl[bx], cl

mov bp, cx

mov BYTE PTR pitbl[bp], Ы

inc Ы

jnz Sgenp

mov WORD PTR pitbl[0], 0 ret

genptbl ENDP

; Процедура генерации S-блока gensbox PROC NEAR

@gens:

@shift:

@zero:

mov mov

rol xor loop

xor xor raov raov raov inc jnz ret

bx, bx ax, ax

Ы, bl

@zero

al, OFFh

al, pitbl[bx]

bp, ax

al, ptbl[bp]

ah, al cx, 4

ah, 1 al, ah @shift

ah, ah al, 63h sbox[bx], al bp, ax

sibox[bp], bl Ы

@gens

Iceylen

read

terap

mixp

msgcpy

msguse

insgkey

rasgblk

rasgoper DB msgrder DB

rasgwrer DB

tables: END

begin

gensbox ENDP

; Процедура вывода строки

strout

PROC

NEAR

raov

strout

ENDP

infile

outfile

keyfile

keyn

blkn

inhndl

DW

outhndl

keyhndl

DW DW DW DW DW DW DW DB DB DB DB DB DB DB DB DB DB DB

Can Can

0 0 0 0

4 DUP(O)

OBh, Olh, Olh, 02h Rijndael Cryptor, ODh, OAh (c) Oleg V. Burdaev, 2001 ODh, OAh, $ Usage: rijndael.cora <srcfile> <destfile> <keyfile> [/k: <keylen>] [/b: <blocklen>] ODh, OAh, $

Invalid key length value! ODh, OAh, $

Invalid block length value! ODh, OAh, $

open file!, Odh, Oah, $ read frora file! ODh, OAh, $ write to file! ODh, OAh, $




Приложение 5

Демонстрация механизма пермутации

***********************************

[Electronic Souls] *********************************]

I

presents...

**0x4553 Perrautator**************

DEMO Perrautate Engine for Linux (c) Ares 2003 *********************************!

++++++++++++++++++www.0x4 55 3.org+

Описание

Это не универсальный механизм, а всего лишь демонстрация; поддерживает перму-тацию нескольких инструкций: хог, sub, test, or, mov.

Основным недостатком является отсутствие дизассемблера длин, поэтому механизм не поддерживает более сложных инструкций.

Ограничения по коду

xor\sub\or\test работают с маской регистр, регистр; mov - регистр \ регистр, переменная \ регистр;

максимальная длина - 5 байт: 1 байт на инструкцию и четыре на операнды;

нет поддержки памяти (mem).

Есть специальная функция для добавления свободного байта из текущей позиции (mov - пермутация ее использует).

Дата теряется после изменения размера.

Реализована антиотладочная функция: ни один отладчик не может правильно прочитать файл из-за смещения секций.

Что происходит: программа читает содержимое фала test и выдает все изменения в файл test.out.

Тестовая программа обязана быть написана ассемблере и откомпилирована либо nasm, либо gas (as/Id), но ни в коем случае не gcc. В противном случае из-за пермутации инструкций mov она работать не будет.

bash-2.05al cat 0x4553 Perrautator I wc -с

1040 bash-2.05af

Not bad yeah ?

.include "defines.inc" .text

.globl start start:

pushl %ebp

raovl %esp,%ebp

movl $5,%eax

raovl Sfile,%ebx

movl $2,%ecx

int $128

raovl %eax,FILE desc(%ebp)

raovl $19,%eax

raovl FILE desc(%ebp),%ebx

raovl $0, %ecx

movl $2,%edx

int $128

raovl %eax,FILE lenI%ebp)

movl $0, (%esp)

raovl FILE len(%ebp),%eax

raovl %eax,4 ( %esp)

raovl $3,8(esp)

raovl $2,12(%esp)

raovl FILE desc(%ebp),%eax

raovl %eax,16(%esp)

movl $0,20(%esp)

movl $90,%eax

raovl %esp,%ebx

int $128

raovl %eax,MEMORY data(%ebp)

raovl $count,COUNTER a(%ebp) main loop:

raovl COUNTER a(%ebp),%eax cmpl FILE len(%ebp),%eax



jl continue jrap exit

continue:

call chec)c byte next:

incl COUNTER a(ebp) jmp raain loop

Г u t a t e :

raovl $9,C0UNTER b{Siebp) mutate loop:

decl COUNTER b(%ebp)

movb COUNTER b(%ebp),%cl

testb %cl,%cl

jz return

raovl BYTE step(%ebp),%ecx crapb $l,FLAG BYTE first(%ebp) j e ml

crapb $l,FLAG BYTE second(%ebp) je ral sub

addl %ecx,BYTE second(%ebp) call raove data incl %eax

raovb BYTE second(%ebp),%Cl jmp ra2

addl %ecx,BYTE first(%ebp) addl %ecx,CHANGE BYTE second(lebp) raovb BYTE first(%ebp)7%cl jrap m2 ml sub:

call move data

addl %ecx, BYTE second(%ebp) incl %eax

incl CHANGE BYTE first(%ebp) movb BYTE second(%ebp),%cl

crapb %cl, (%eax)

jne rautate loop

raovl $4,%eax

raovl $l,lebx

гаЗ ;

movl Sstr,%ecx raovl $8,%edx int $128

call move data

.crapb Sl,FLAG BYTE first(%ebp) je m3

crapb $l,FLAG BYTE second(%ebp) je m3 sub

movb CHANGE BYTE first(%ebp),%cl movb id, ( %eax ) jrap ra4

CHANGE BYTE first(%ebp),%cl %cl, (%eax) mem resize move data

INSTRUCT len(%ebp),%eax CHANGE BYTE second(%ebp),%ebx Ibl, (%eax) ra4

CHANGE BYTE first(%ebp),%cl %cl, (%eax) raove data %eax

CHANGE BYTE second(%ebp),%ebx %bl,(%eax)

movb raovb call call addl raovl movb jrap

ra3 sub: movb raovb call incl raovl raovb

ra4 :

incl return: call ret

COUNTER a(%ebp) clear flags

check byte:

call raove data

raovb $0x68,CHANGE BYTE first(%еЪр)

raovb $0x5 7,CHANGE~BYTE second(%ebp)

movb $0xB7,BYTE £irst(%ebp)

raovb $l,BYTE step(%ebp)

raovb $1,FLAG BYTE first(%ebp)

raovb $l,BYTE add(%ebp)



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 [ 86 ] 87 88