herm1t LIVE!ng room - Post a comment [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

herm1t
Я уже, как-то пользовался подобной фичей, а тут умница 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. ]
Link Read Comments

Reply:
From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.