Хак виртуальной машины RarVM внутри WinRAR


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 084
Репутация
8 206
Специалист по безопасности Тэвис Орманди (Tavis Ormandy) и разработал для встроенной в архиватор виртуальной машины RarVM.
Мало кто знает, что внутри WinRAR есть примитивная x86-совместимая виртуальная машина. В ней всего , а вся виртуальная машина со стандартными фильтрами занимает чуть больше 1000 строк. Она реализована внутри архиватора с одной целью: улучшить сжатие x86-кода. Например, представим программу вроде такой.
Код:
mov foo, bar
cmp bar, baz
push foo
call write
push bar
call write
Повторяющиеся вызовы можно транслировать в абсолютные адреса и более эффективно заархивировать. Поэтому в RAR есть фильтры для десятка стандартных вызовов. Более того, в нём есть возможность создания новых фильтров в процессе архивации! То есть в архив RAR можно включать байткод, который будет исполняться встроенной виртуальной машиной RarVM.
До сих пор не существовало программ, которые бы использовали эту необычную функциональность, поэтому Тэвис Орманди разработал компоновщик и ассемблер, опубликовал документацию для работы с RarVM, в скором будущем планирует выпустить ещё дизассемблер и, может быть, портировать компилятор на основе llvm.
Пример программы, которая выводит классическое “Hello, World!” за счёт в проверке CRC.
Код:
    $ cat sample.rs
    #include
    #include
    #include
    #include
    ; vim: syntax=fasm
 
    ; Test RAR assembly file that just demonstrates the syntax.
 
    _start:
    ; Install our message in the output buffer
    mov r3, #0x1000 ; Output buffer.
    mov [r3+#0], #0x41414141 ; Padding for compensation
    mov [r3+#4], #0x0a414141 ; Padding for compensation
    mov [r3+#8], #0x6c6c6548 ; 'lleH'
    mov [r3+#12], #0x57202c6f ; 'W ,o'
    mov [r3+#16], #0x646c726f ; 'dlro'
    mov [r3+#20], #0x00000a21 ; '!\n'
    mov [VMADDR_NEWBLOCKPOS], #0x00001000
    mov [VMADDR_NEWBLOCKSIZE], #22
 
    ; Compensate to required CRC
    push RAR_FILECRC
    push [VMADDR_NEWBLOCKSIZE]
    push [VMADDR_NEWBLOCKPOS]
    call $_compensate_crc
    test r0, r0
    jz $finished
    call $_error
 
    finished:
    call $_success
    $ make sample.rar
    cpp -Istdlib < sample.rs > sample.ri
    ./raras -o sample.ro sample.ri
    ./rarld sample.ro > sample.rar
    rm sample.ri sample.ro
    $ unrar p -idq sample.rar
    AAc��!A
    Hello, World!

b4bbdbbd79c9.png

 
Автор темы Похожие темы Форум Ответы Дата
number571 Новости и статьи IT безопасности 0
X-Shar Новости и статьи IT безопасности 0
M Новости и статьи IT безопасности 0
M Новости и статьи IT безопасности 1
X-Shar Новости и статьи IT безопасности 2
virt Новости и статьи IT безопасности 12
Hooko Новости и статьи IT безопасности 2
X-Shar Новости и статьи IT безопасности 0
vasek112 Новости и статьи IT безопасности 1
Soren Lorensen Новости и статьи IT безопасности 2
Антоха Новости и статьи IT безопасности 0
Антоха Новости и статьи IT безопасности 2
GHETTO7292 Новости и статьи IT безопасности 3
X-Shar Новости и статьи IT безопасности 5
X-Shar Новости и статьи IT безопасности 0
X-Shar Новости и статьи IT безопасности 0
Похожие темы
Информация Хакните HL и заработайте 125.000 рублей
Новость Хакатон по кибериммунитету с призовым фондом 500 000 рублей
Опасность хакинга гражданской бытовой жизни: уязвимости в системах «Умный дом»
Сервисы сканирования URL-адресов: замаскированный инструмент хакеров или недоработка разработчиков
ВАЖНО «Я не специально». Какие отмазки хакеров могут сработать в суде
Юмор Осудили хакера
Новость Российские хакеры подозреваются во взломе систем регистрации избирателей в США
Информация Хакерские войны Positive Hack Days
Хакеры выпустили неподцензурную альтернативу Skype
Хакеры взломали аккаунты Skype
Брайан Кребс получил посылку от российских хакеров
Хакеры взломали серверы Opera Software
Хакеры пикетируют «Касперского»
Как меня пытались хакнуть....
Хакерша Cosmo призналась, что вывела из строя «Твиттер»
Gmail оповещает пользователей о вероятном взломе хакерами или правительством
Верх Низ