herm1t LIVE!ng room - Вливаем немного кода и медленно перемешиваем [entries|archive|friends|userinfo]
herm1t

[ website | twilight corner in the herm1t's cave ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

Вливаем немного кода и медленно перемешиваем [Jan. 5th, 2013|02:47 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|, , , , , , , , , , ]

Я уже, как-то пользовался подобной фичей, а тут умница Indy (я ведь не ошибаюсь, Danilova на васме - это он?), напомнил. В результате получился вот такой кодик:
        BITS    32
        global  main
        extern  printf, exit
main:   push    0x003eafcc
        push    0x100
        push    L1
        push    0
        mov     eax, 123
        mov     ebx, 1
        mov     ecx, esp
        mov     edx, 16
        int     0x80
        add     esp, edx
        xor     eax, eax
        cdq
        jmp     7:0
L1:     mov     edx, 0xc88cffff
        db      0x66, 0xea
        dd      L2
        jae     L2
L2:     push    edx
        push    eax
        push    format
        call    printf
        add     esp, 8
        push    0
        call    exit
format  db      "EAX=%08x EDX=%08x", 10, 0
EAX=7 EDX=FFFF Для тех, кто в танке, можно и подробнее:
main:   push    0x003eafcc      ; 32:0 T:2 R-X:1 G:0 NP:0 U:1
        push    0x00000100      ; limit
        push    L1              ; base
        push    0               ; entry
..................
L1:
        BITS    16
        mov     dx, 0xffff
        mov     ax, cs
        jmp     dword 115:L2
L2:     BITS    32
Ага? P.S. Привет дизассемблерам и кривоэмуляторам. Indy - respect.

UPD. Чтобы жизнь медом не казалась, переходим на x64:

L1:     BITS    16
        mov     ax, 20
        int     0x80
        mov     dx, 0xffff
        mov     ax, cs
        jmp     dword 0x23:L2
.............................
        add     esp, 8
        jmp     0x33:L3
L3:     mov     al, 60
        mov     di, 13
        syscall

$ strace ./a.out
execve("./a.out", ["./a.out"], [/* 26 vars */]) = 0
[ Process PID=19183 runs in 32 bit mode. ]
....
modify_ldt(0x1, 0xffe28ddc, 0x10)       = 0
Unknown value CS=0x07 while detecting personality of process PID=19183
getpid()                                = 19183
....
[ Process PID=19183 runs in 64 bit mode. ]
LinkLeave a comment

Comments:
From:(Anonymous)
Date:January 8th, 2013 - 09:28 pm

..

(Link)
Вот пример для нт:
6A 1B E8 0F 00 00 00 8D 1D B2 10 40 00 03 C3 2D 23 01 34 12 FF E0 6A 1B E8 15 00 00 00 6A 1F 33
F6 8D 80 78 56 34 12 E8 21 00 00 00 8D 84 23 01 66 CB 6A 1F 33 C0 E8 12 00 00 00 BE 34 12 8B DC
8D 80 20 10 2B C6 2D 00 10 2B C3 66 CB CB

Передаёт управленье на +178 от начала этого кода. Заранее должен быть создан сегмент:
LDT_MASK equ 100B
LDT_SEL equ KGDT_R3_CODE or RPL_MASK or LDT_MASK
MM_SHARED_USER_DATA_VA equ 7FFEFFFFH

%CREATE_DESCRIPTOR macro Base, Limit
mov eax,Base
mov edx,Limit
mov ecx,eax
and edx,0F0000H
shr eax,16
and ecx,0FF000000h
and eax,0FFH
lea edx,[eax + edx + 100H * 11111000B + 100000H * 1000B] ; Type 100B - code.
or edx,ecx
mov eax,Limit
mov ecx,Base
and eax,0FFFFH
shl ecx,16
lea ecx,[ecx + eax]
; Edx:Ecx
invoke ZwSetLdtEntries, LDT_SEL, Ecx, Edx, 0, 0, 0
endm

%CREATE_DESCRIPTOR 0, MM_SHARED_USER_DATA_VA/PAGE_SIZE

И досвидания дизасмы.

http://rghost.ru/42846833
[User Picture]
From:[info]herm1t
Date:January 9th, 2013 - 09:17 am

Re: ..

(Link)
Думал сам написать пример для винды, но вы меня опередили. :-) Спасибо за кодес! :-)
From:(Anonymous)
Date:January 12th, 2013 - 11:29 pm

Re: ..

(Link)
Вот есчо годный метод http://www.woodmann.com/forum/showthread.php?15000-SuppressDebugMsg-As-Anti-Debug-Trick&p=94024&viewfull=1#post94024
[User Picture]
From:[info]herm1t
Date:January 14th, 2013 - 01:04 pm

Re: ..

(Link)
Не совсем понял, что имелось в виду, но все равно спасибо.
From:(Anonymous)
Date:January 14th, 2013 - 03:33 pm

Re: ..

(Link)
http://indy-vx.narod.ru/RT.zip

herm1t

Антитрейс, также и всякий дизасм с аввм отвалится. Юзаем Int 0x2B, сей вектор из юзермодов невозможно обработать.
[User Picture]
From:[info]herm1t
Date:January 14th, 2013 - 03:49 pm

Re: ..

(Link)
> Юзаем Int 0x2B, сей вектор из юзермодов невозможно обработать.

Да, я почитал, и приблизительно понял принцип. Но я не достаточно хорошо знаком с NT, чтобы оценить в полной мере. ;-)