PDA

View Full Version : سوال: استفاده از mode_t در argv فانکشن ها



G3n3Rall
یک شنبه 12 مرداد 1393, 09:31 صبح
سلام دوستان

یکی از فانکشن هایی که میخام استفاده کنم تو اسمبلی لینوکس x86 داری چند argv هست
مثل فانکشن chmod()


chmod (__const char *__file, __mode_t __mode)


شماره تابع در لینوکس دبیان 15 هست که میزارم تو eax و
شماره مقدار __const char *__file رو میزارم ebx و
مقدار ecx رو نمیدونم باید چجوری بزارم ! __mode_t چی هست دقیقا و چجوری باید
بهش مقدار بدیم ؟

سورس من :



section .text
global _start
_start:
mov eax,15
mov ebx,path
mov ecx,mod
int 0x80
mov edx,len
mov ecx,msg
mov ebx,1
mov eax,4
int 0x80
mov ebx,0
mov eax,1
int 0x80
section .data
msg db "Hello",0xa
len equ $ - msg
path db "/root/Desktop/xpl/1.txt"
mod db "S_IWUSR|S_IWGRP|S_IWOTH"




برنامه Hello رو چاپ میکنه ، chmod رو اجرا میکنه و exit میشه
ولی بعد از اجرا فقط hello رو چاپ میکنه و exit میشه و فانکشن ، permission فایل رو تغیر نداده
( بنده میخام دسترسی write رو به فایل بدم ) ، کسی هست راهنمایی کنه؟

متشکرم

kernel.programmer
یک شنبه 12 مرداد 1393, 11:00 صبح
پارامتر mode رشته نیست یک عدد اکتال هست اینجوری میتونی مقدارشو وارد کنی


mov ecx,00222Q

G3n3Rall
یک شنبه 12 مرداد 1393, 11:12 صبح
سلام ، هش رو چطوری تولید کردی؟ int to oct ، text to oct یا .... ؟ این هش شده چه مقداری هست ؟

kernel.programmer
یک شنبه 12 مرداد 1393, 11:16 صبح
اینجوری یک Q هم تهش برای اینکه بگیم اکتاله


S_IWUSR|S_IWGRP|S_IWOTH

G3n3Rall
یک شنبه 12 مرداد 1393, 11:34 صبح
بسیــــــــــــــــــــــ ــــــار متشکرم ، این اعداد رو برای بقیه هم میزارم کسی خواست استفاده کنه



S_ISUID (04000) set-user-ID (set process effective user ID on
execve(2))

S_ISGID (02000) set-group-ID (set process effective group ID on
execve(2); mandatory locking, as described in
fcntl(2); take a new file's group from parent direcق
tory, as described in chown(2) and mkdir(2))

S_ISVTX (01000) sticky bit (restricted deletion flag, as described in
unlink(2))

S_IRUSR (00400) read by owner

S_IWUSR (00200) write by owner

S_IXUSR (00100) execute/search by owner ("search" applies for direcق
tories, and means that entries within the directory
can be accessed)

S_IRGRP (00040) read by group

S_IWGRP (00020) write by group

S_IXGRP (00010) execute/search by group

S_IROTH (00004) read by others

S_IWOTH (00002) write by others

S_IXOTH (00001) execute/search by others