Анимация
JavaScript
|
Главная Библионтека 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 ; Процедура вывода строки
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 |