--------ex.S------------
#include <sys/syscall.h>
.globl main
main: popl %eax /* cick ret */
popl %eax /* cick argc */
movl (%esp),%eax /* eax=av */
movl $fname, %ebx /* ebx=fname */
movl %ebx,(%eax) /* av[0]=fname */
pushl %ebx /* needs to be on the stack too */
movl $SYS_execve,%eax /* execve */
call syscall
movl $SYS_exit,%eax /* exit */
call syscall
syscall:
int $0x80
ret
fname: .asciz "/bin/sh"
On Tue, 13 Mar 2001, Nickolay A. Kritsky wrote:
> Hi all!
> It seems to me that you guys are my last hope, but if i am asking in the
> wrong place - sorry.
>
> I wrote my first asm program for FreeBSD:
>
> section .code
> global _start
> _start:
> push dword envp
> push dword argvp
> push dword fname
> mov eax,59 ; execve
> int 80h
> hlt ; i should never get here
>
> section .data
> fname db '/bin/sh',0
> envp dd 0
> argvp dd 0
> ;End of program
>
> after compiling and linking i run it and got SIGBUS error
> when run under gdb i can see that int 80h returns with eax=2 (ENOENT? does
> it mean file not found?)
>
> I have a feeling that i have missed something very important.
>
> Thank you.
> NKritsky - SysAdmin InternetHelp.Ru
> http://www.internethelp.ru
> e-mail: [EMAIL PROTECTED]
>
>
>
> To Unsubscribe: send mail to [EMAIL PROTECTED]
> with "unsubscribe freebsd-hackers" in the body of the message
>
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message