HELLO_HELL?

블로그 이미지

준P

'Development/Assembly'에 해당되는 글 4건

제목 날짜
  • 어셈블리 프로그래밍 2015.06.21
  • 리눅스 syscall table for x86_64 2014.09.18
  • 리눅스 system table for x86 2014.09.14
  • 어셈블리어 프로그래밍 helloword 2014.04.30

어셈블리 프로그래밍

Development/Assembly 2015. 6. 21. 01:19

어셈블리어(영어: Assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다.

컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 컴퓨터 CPU마다 지원하는 오퍼레이션의 타입과 개수는 제각각이며, 레지스터의 크기과 개수, 저장된 데이터 형의 표현도 각기 다르다. 모든 범용 컴퓨터는 기본적으로 동일한 기능을 수행하지만, 기능을 어떤 과정을 거쳐 수행할지는 다를 수 있으며, 이런 차이는 어셈블리어에 반영되게 된다.

게다가 단일 명령 집합에 대해 여러 니모닉과 통사론이 대응될 수 있다. 그런 경우에는 제조사가 만든 문서에서 쓰이는 것이 가장 자주 쓰이게 된다.

출처 : 위키 백과 


프로그램이 만들어질떄에는 코드를 짜고난뒤 컴파일러를 통해 기계어로 변역을 한다음 오브젝트 파일을 만들고 링커를 통해 실행가능한 파일로 만들어 짐니다.

어셈블리어는 컴파일 뒤 과정이기 떄문에 오브젝트 파일을 만들고 링커로 실행가능한 파일을 만듬니다.

이떄 오브젝트 파일로 만들어 주는것이 NASM, TASM, GCC 등 이 있습니다. 주로 NASM이 유명합니다.

어셈블리 프로그래밍을 할떄에는 syscall이라는 것을 사용하여 프로그래밍 합니다. syscall은 32비트와 64비트 마다 다릅니다.

32비트 : http://crasy.tistory.com/73

64비트 : http://crasy.tistory.com/75

또한 리눅스 기준으로 /usr/include/asm/unistd.h  에  정의  되어  있습니다. 


어셈블리어에는 두가지의 문법이 있습니다. 하나는 Intel문법과 at&t문법이 있습니다. 

이 두 문법의 차이는 어셈블리 프로그래밍을 하면서 비교하도록 하겟습니다.


NASM과 GCC를 이용하여 어셈블리 프로그래밍을 해보도록 하겠습니다.

리눅스 기준으로 

데비안 계열 sudo apt-get install gcc nasm

레드헷 계열 sudo yum install gcc nasm 

우선 NASM을 이용하여 프로그래밍을 하겟습니다.

확장자가 asm인 파일을 만들어 주세요


어셈블리 프로그래밍를 할때 가장 중요한것이 자신의 컴퓨터의 버전에 따라 코드가 달라지는것입니다.

컴퓨터에는 레지스터라는 시피유의 기억장소가 있습니다. 이 기억 장소에 값을 저장하고 그것을 연산합니다.

컴퓨터 버전에 따라서 레지스터가 달라지기 떄문에 주의 하셔야 합니다. 

32비트에는 eax, ebx, ecx, edx, edi, esi등이 있습니다. 허나 64비트에는 rax, rbx, rcx, rdx, rdi, rsi 등이 있습니다. 

또한 하위호환이 가능해서 64비트에서는 32비트 레지스터와 16비트 레지스터를 사용 가능합니다.

또한 32비트에서는 16비트 레지스터를 사용 가능합니다.

레지스터에 알맞은 값을 넣어 줘야만 정상적으로 코드가 작동합니다.


또한 pe 구조를 보면 프로그램에는 섹션으로 분리가 되어 있습니다. 

보통 data섹션에는 데이터가 들어가고 text섹션에는 코드가 들어감니다.

어셈블리에서는 변수명 - 자료형 - 데이터 순으로 변수를 만들어 사용할수 있습니다.

데이터 섹션에 들어가며 자료형은 db, dw, dd 등 이 있습니다.

위 코드에서 0x0A는 개행 입니다.


어셈블리에서는 syscall을 사용하는 코드가 시작 하기전 global _start라는 일종의 main함수를 선언해줍니다.

함수가 시작할때에는 : 를 뒤에 붙여서 구분을 해줌니다.

어셈블리에는 코드가 명령어로 구성이 되어 있습니다.  명령어 - 레지스터 및 데이터 값  (OpCode, operand)

또한 명령어는 컴퓨터 버전마다 다르게 나타날 수 도 있습니다.

하나의 syscall에 맞는 레지스터에 값을 넣어 주셧다면 32비트에서는 int 0x80으로 실행을 해주셔야 됨니다. 64비트에서는 syscall로 실행을 합니다.

또한 다 작성하신뒤에는 꼭 종료함수(예 exit)를 사용하여 종료를 해주셔야 합니다.


자 이제 코드에 대한 설명을 했으니 이제 오브젝트 파일을 만들고 실행 가능한 파일을 생성해 봅시다.

그전에 자신의 컴퓨터의 버전을 알아야 합니다. 모르신다면 uname -p로 x86이 나오면 32비트 x86_64면 64비트 입니다.


32비트 

nasm -f elf 파일명.asm

64비트

nasm -f elf64 파일명.asm

으로 알맞게 오브젝트 파일을 만들어 줍니다.

오브젝트 파일은 파일명에 확장자가 .o로 생성 됨니다.

ld 파일명.o -o 아웃풋 파일명

-o 옵션을 통해 자신이 원하는 파일명의 실행가능한 파일을 만들수 있습니다 이 옵션이 없으면 기본적으로 a.out이란 파일이 생성됨니다.


실행 가능한 파일을 만드셧다면 실행을 해보시면 hello_world라는 문자열을 보실 수 있습니다.

 


이제 gcc를 이용한 어셈블리어 프로그래밍을 해보겠습니다.

확장자가 .s인 파일을 만들어 주세요



nasm과 비슷한 부분은 설명을 하지 않겟습니다.

데이터 값, 변수 에는 $이  레지스터에는 %가 앞에 붙어야 합니다. 

또 section 이 생략됨니다. 

AT&T 문법을 사용합니다.





저작자표시 비영리 변경금지 (새창열림)

'Development > Assembly' 카테고리의 다른 글

리눅스 syscall table for x86_64  (0) 2014.09.18
리눅스 system table for x86  (0) 2014.09.14
어셈블리어 프로그래밍 helloword  (0) 2014.04.30
Posted by 준P

리눅스 syscall table for x86_64

Development/Assembly 2014. 9. 18. 19:19

리눅스 64비트에서 어셈블리로 프로그래밍을 할때 각함수의 이름과 레지스터 사용법입니다.


syscall로 실행해야 함니다.


출처 http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64


%raxSystem call%rdi%rsi%rdx%rcx%r8%r9
0sys_readunsigned int fdchar *bufsize_t count
1sys_writeunsigned int fdconst char *bufsize_t count
2sys_openconst char *filenameint flagsint mode
3sys_closeunsigned int fd
4sys_statconst char *filenamestruct stat *statbuf
5sys_fstatunsigned int fdstruct stat *statbuf
6sys_lstatfconst char *filenamestruct stat *statbuf
7sys_pollstruct poll_fd *ufdsunsigned int nfdslong timeout_msecs
8sys_lseekunsigned int fdoff_t offsetunsigned int origin
9sys_mmapunsigned long addrunsigned long lenunsigned long protunsigned long flagsunsigned long fdunsigned long off
10sys_mprotectunsigned long startsize_t lenunsigned long prot
11sys_munmapunsigned long addrsize_t len
12sys_brkunsigned long brk
13sys_rt_sigactionint sigconst struct sigaction *actstruct sigaction *oactsize_t sigsetsize
14sys_rt_sigprocmaskint howsigset_t *nsetsigset_t *osetsize_t sigsetsize
15sys_rt_sigreturnunsigned long __unused
16sys_ioctlunsigned int fdunsigned int cmdunsigned long arg
17sys_pread64unsigned long fdchar *bufsize_t countloff_t pos
18sys_pwrite64unsigned int fdconst char *bufsize_t countloff_t pos
19sys_readvunsigned long fdconst struct iovec *vecunsigned long vlen
20sys_writevunsigned long fdconst struct iovec *vecunsigned long vlen
21sys_accessconst char *filenameint mode
22sys_pipeint *filedes
23sys_selectint nfd_set *inpfd_set *outpfd_set*expstruct timeval *tvp
24sys_sched_yield
25sys_mremapunsigned long addrunsigned long old_lenunsigned long new_lenunsigned long flagsunsigned long new_addr
26sys_msyncunsigned long startsize_t lenint flags
27sys_mincoreunsigned long startsize_t lenunsigned char *vec
28sys_madviseunsigned long startsize_t len_inint behavior
29sys_shmgetkey_t keysize_t sizeint shmflg
30sys_shmatint shmidchar *shmaddrint shmflg
31sys_shmctlint shmidint cmdstruct shmid_ds *buf
32sys_dupunsigned int fildes
33sys_dup2unsigned int oldfdunsigned int newfd
34sys_pause
35sys_nanosleepstruct timespec *rqtpstruct timespec *rmtp
36sys_getitimerint whichstruct itimerval *value
37sys_alarmunsigned int seconds
38sys_setitimerint whichstruct itimerval *valuestruct itimerval *ovalue
39sys_getpid
40sys_sendfileint out_fdint in_fdoff_t *offsetsize_t count
41sys_socketint familyint typeint protocol
42sys_connectint fdstruct sockaddr *uservaddrint addrlen
43sys_acceptint fdstruct sockaddr *upeer_sockaddrint *upeer_addrlen
44sys_sendtoint fdvoid *buffsize_t lenunsigned flagsstruct sockaddr *addrint addr_len
45sys_recvfromint fdvoid *ubufsize_t sizeunsigned flagsstruct sockaddr *addrint *addr_len
46sys_sendmsgint fdstruct msghdr *msgunsigned flags
47sys_recvmsgint fdstruct msghdr *msgunsigned int flags
48sys_shutdownint fdint how
49sys_bindint fdstruct sokaddr *umyaddrint addrlen
50sys_listenint fdint backlog
51sys_getsocknameint fdstruct sockaddr *usockaddrint *usockaddr_len
52sys_getpeernameint fdstruct sockaddr *usockaddrint *usockaddr_len
53sys_socketpairint familyint typeint protocolint *usockvec
54sys_setsockoptint fdint levelint optnamechar *optvalint optlen
55sys_getsockoptint fdint levelint optnamechar *optvalint *optlen
56sys_cloneunsigned long clone_flagsunsigned long newspvoid *parent_tidvoid *child_tid
57sys_fork
58sys_vfork
59sys_execveconst char *filenameconst char *const argv[]const char *const envp[]
60sys_exitint error_code
61sys_wait4pid_t upidint *stat_addrint optionsstruct rusage *ru
62sys_killpid_t pidint sig
63sys_unamestruct old_utsname *name
64sys_semgetkey_t keyint nsemsint semflg
65sys_semopint semidstruct sembuf *tsopsunsigned nsops
66sys_semctlint semidint semnumint cmdunion semun arg
67sys_shmdtchar *shmaddr
68sys_msggetkey_t keyint msgflg
69sys_msgsndint msqidstruct msgbuf *msgpsize_t msgszint msgflg
70sys_msgrcvint msqidstruct msgbuf *msgpsize_t msgszlong msgtypint msgflg
71sys_msgctlint msqidint cmdstruct msqid_ds *buf
72sys_fcntlunsigned int fdunsigned int cmdunsigned long arg
73sys_flockunsigned int fdunsigned int cmd
74sys_fsyncunsigned int fd
75sys_fdatasyncunsigned int fd
76sys_truncateconst char *pathlong length
77sys_ftruncateunsigned int fdunsigned long length
78sys_getdentsunsigned int fdstruct linux_dirent *direntunsigned int count
79sys_getcwdchar *bufunsigned long size
80sys_chdirconst char *filename
81sys_fchdirunsigned int fd
82sys_renameconst char *oldnameconst char *newname
83sys_mkdirconst char *pathnameint mode
84sys_rmdirconst char *pathname
85sys_creatconst char *pathnameint mode
86sys_linkconst char *oldnameconst char *newname
87sys_unlinkconst char *pathname
88sys_symlinkconst char *oldnameconst char *newname
89sys_readlinkconst char *pathchar *bufint bufsiz
90sys_chmodconst char *filenamemode_t mode
91sys_fchmodunsigned int fdmode_t mode
92sys_chownconst char *filenameuid_t usergit_t group
93sys_fchownunsigned int fduid_t usergit_t group
94sys_lchownconst char *filenameuid_t usergit_t group
95sys_umaskint mask
96sys_gettimeofdaystruct timeval *tvstruct timezone *tz
97sys_getrlimitunsigned int resourcestruct rlimit *rlim
98sys_getrusageint whostruct rusage *ru
99sys_sysinfostruct sysinfo *info
100sys_timesstruct sysinfo *info
101sys_ptracelong requestlong pidunsigned long addrunsigned long data
102sys_getuid
103sys_syslogint typechar *bufint len
104sys_getgid
105sys_setuiduid_t uid
106sys_setgidgit_t gid
107sys_geteuid
108sys_getegid
109sys_setpgidpid_t pidpid_t pgid
110sys_getppid
111sys_getpgrp
112sys_setsid
113sys_setreuiduid_t ruiduid_t euid
114sys_setregidgit_t rgidgid_t egid
115sys_getgroupsint gidsetsizegid_t *grouplist
116sys_setgroupsint gidsetsizegid_t *grouplist
117sys_setresuiduid_t *ruiduid_t *euiduid_t *suid
118sys_getresuiduid_t *ruiduid_t *euiduid_t *suid
119sys_setresgidgid_t rgidgid_t egidgid_t sgid
120sys_getresgidgit_t *rgidgit_t *egidgit_t *sgid
121sys_getpgidpid_t pid
122sys_setfsuiduid_t uid
123sys_setfsgidgid_t gid
124sys_getsidpid_t pid
125sys_capgetcap_user_header_t headercap_user_data_t dataptr
126sys_capsetcap_user_header_t headerconst cap_user_data_t data
127sys_rt_sigpendingsigset_t *setsize_t sigsetsize
128sys_rt_sigtimedwaitconst sigset_t *uthesesiginfo_t *uinfoconst struct timespec *utssize_t sigsetsize
129sys_rt_sigqueueinfopid_t pidint sigsiginfo_t *uinfo
130sys_rt_sigsuspendsigset_t *unewsetsize_t sigsetsize
131sys_sigaltstackconst stack_t *ussstack_t *uoss
132sys_utimechar *filenamestruct utimbuf *times
133sys_mknodconst char *filenameint modeunsigned dev
134sys_uselibNOT IMPLEMENTED
135sys_personalityunsigned int personality
136sys_ustatunsigned devstruct ustat *ubuf
137sys_statfsconst char *pathnamestruct statfs *buf
138sys_fstatfsunsigned int fdstruct statfs *buf
139sys_sysfsint optionunsigned long arg1unsigned long arg2
140sys_getpriorityint whichint who
141sys_setpriorityint whichint whoint niceval
142sys_sched_setparampid_t pidstruct sched_param *param
143sys_sched_getparampid_t pidstruct sched_param *param
144sys_sched_setschedulerpid_t pidint policystruct sched_param *param
145sys_sched_getschedulerpid_t pid
146sys_sched_get_priority_maxint policy
147sys_sched_get_priority_minint policy
148sys_sched_rr_get_intervalpid_t pidstruct timespec *interval
149sys_mlockunsigned long startsize_t len
150sys_munlockunsigned long startsize_t len
151sys_mlockallint flags
152sys_munlockall
153sys_vhangup
154sys_modify_ldtint funcvoid *ptrunsigned long bytecount
155sys_pivot_rootconst char *new_rootconst char *put_old
156sys__sysctlstruct __sysctl_args *args
157sys_prctlint optionunsigned long arg2unsigned long arg3unsigned long arg4unsigned long arg5
158sys_arch_prctlstruct task_struct *taskint codeunsigned long *addr
159sys_adjtimexstruct timex *txc_p
160sys_setrlimitunsigned int resourcestruct rlimit *rlim
161sys_chrootconst char *filename
162sys_sync
163sys_acctconst char *name
164sys_settimeofdaystruct timeval *tvstruct timezone *tz
165sys_mountchar *dev_namechar *dir_namechar *typeunsigned long flagsvoid *data
166sys_umount2const char *targetint flags
167sys_swaponconst char *specialfileint swap_flags
168sys_swapoffconst char *specialfile
169sys_rebootint magic1int magic2unsigned int cmdvoid *arg
170sys_sethostnamechar *nameint len
171sys_setdomainnamechar *nameint len
172sys_ioplunsigned int levelstruct pt_regs *regs
173sys_iopermunsigned long fromunsigned long numint turn_on
174sys_create_moduleREMOVED IN Linux 2.6
175sys_init_modulevoid *umodunsigned long lenconst char *uargs
176sys_delete_moduleconst chat *name_userunsigned int flags
177sys_get_kernel_symsREMOVED IN Linux 2.6
178sys_query_moduleREMOVED IN Linux 2.6
179sys_quotactlunsigned int cmdconst char *specialqid_t idvoid *addr
180sys_nfsservctlNOT IMPLEMENTED
181sys_getpmsgNOT IMPLEMENTED
182sys_putpmsgNOT IMPLEMENTED
183sys_afs_syscallNOT IMPLEMENTED
184sys_tuxcallNOT IMPLEMENTED
185sys_securityNOT IMPLEMENTED
186sys_gettid
187sys_readaheadint fdloff_t offsetsize_t count
188sys_setxattrconst char *pathnameconst char *nameconst void *valuesize_t sizeint flags
189sys_lsetxattrconst char *pathnameconst char *nameconst void *valuesize_t sizeint flags
190sys_fsetxattrint fdconst char *nameconst void *valuesize_t sizeint flags
191sys_getxattrconst char *pathnameconst char *namevoid *valuesize_t size
192sys_lgetxattrconst char *pathnameconst char *namevoid *valuesize_t size
193sys_fgetxattrint fdconst har *namevoid *valuesize_t size
194sys_listxattrconst char *pathnamechar *listsize_t size
195sys_llistxattrconst char *pathnamechar *listsize_t size
196sys_flistxattrint fdchar *listsize_t size
197sys_removexattrconst char *pathnameconst char *name
198sys_lremovexattrconst char *pathnameconst char *name
199sys_fremovexattrint fdconst char *name
200sys_tkillpid_t piding sig
201sys_timetime_t *tloc
202sys_futexu32 *uaddrint opu32 valstruct timespec *utimeu32 *uaddr2u32 val3
203sys_sched_setaffinitypid_t pidunsigned int lenunsigned long *user_mask_ptr
204sys_sched_getaffinitypid_t pidunsigned int lenunsigned long *user_mask_ptr
205sys_set_thread_areaNOT IMPLEMENTED. Use arch_prctl
206sys_io_setupunsigned nr_eventsaio_context_t *ctxp
207sys_io_destroyaio_context_t ctx
208sys_io_geteventsaio_context_t ctx_idlong min_nrlong nrstruct io_event *events
209sys_io_submitaio_context_t ctx_idlong nrstruct iocb **iocbpp
210sys_io_cancelaio_context_t ctx_idstruct iocb *iocbstruct io_event *result
211sys_get_thread_areaNOT IMPLEMENTED. Use arch_prctl
212sys_lookup_dcookieu64 cookie64long buflong len
213sys_epoll_createint size
214sys_epoll_ctl_oldNOT IMPLEMENTED
215sys_epoll_wait_oldNOT IMPLEMENTED
216sys_remap_file_pagesunsigned long startunsigned long sizeunsigned long protunsigned long pgoffunsigned long flags
217sys_getdents64unsigned int fdstruct linux_dirent64 *direntunsigned int count
218sys_set_tid_addressint *tidptr
219sys_restart_syscall
220sys_semtimedopint semidstruct sembuf *tsopsunsigned nsopsconst struct timespec *timeout
221sys_fadvise64int fdloff_t offsetsize_t lenint advice
222sys_timer_createconst clockid_t which_clockstruct sigevent *timer_event_spectimer_t *created_timer_id
223sys_timer_settimetimer_t timer_idint flagsconst struct itimerspec *new_settingstruct itimerspec *old_setting
224sys_timer_gettimetimer_t timer_idstruct itimerspec *setting
225sys_timer_getoverruntimer_t timer_id
226sys_timer_deletetimer_t timer_id
227sys_clock_settimeconst clockid_t which_clockconst struct timespec *tp
228sys_clock_gettimeconst clockid_t which_clockstruct timespec *tp
229sys_clock_getresconst clockid_t which_clockstruct timespec *tp
230sys_clock_nanosleepconst clockid_t which_clockint flagsconst struct timespec *rqtpstruct timespec *rmtp
231sys_exit_groupint error_code
232sys_epoll_waitint epfdstruct epoll_event *eventsint maxeventsint timeout
233sys_epoll_ctlint epfdint opint fdstruct epoll_event *event
234sys_tgkillpid_t tgidpid_t pidint sig
235sys_utimeschar *filenamestruct timeval *utimes
236sys_vserverNOT IMPLEMENTED
237sys_mbindunsigned long startunsigned long lenunsigned long modeunsigned long *nmaskunsigned long maxnodeunsigned flags
238sys_set_mempolicyint modeunsigned long *nmaskunsigned long maxnode
239sys_get_mempolicyint *policyunsigned long *nmaskunsigned long maxnodeunsigned long addrunsigned long flags
240sys_mq_openconst char *u_nameint oflagmode_t modestruct mq_attr *u_attr
241sys_mq_unlinkconst char *u_name
242sys_mq_timedsendmqd_t mqdesconst char *u_msg_ptrsize_t msg_lenunsigned int msg_prioconst stuct timespec *u_abs_timeout
243sys_mq_timedreceivemqd_t mqdeschar *u_msg_ptrsize_t msg_lenunsigned int *u_msg_prioconst struct timespec *u_abs_timeout
244sys_mq_notifymqd_t mqdesconst struct sigevent *u_notification
245sys_mq_getsetattrmqd_t mqdesconst struct mq_attr *u_mqstatstruct mq_attr *u_omqstat
246sys_kexec_loadunsigned long entryunsigned long nr_segmentsstruct kexec_segment *segmentsunsigned long flags
247sys_waitidint whichpid_t upidstruct siginfo *infopint optionsstruct rusage *ru
248sys_add_keyconst char *_typeconst char *_descriptionconst void *_payloadsize_t plen
249sys_request_keyconst char *_typeconst char *_descriptionconst char *_callout_infokey_serial_t destringid
250sys_keyctlint optionunsigned long arg2unsigned long arg3unsigned long arg4unsigned long arg5
251sys_ioprio_setint whichint whoint ioprio
252sys_ioprio_getint whichint who
253sys_inotify_init
254sys_inotify_add_watchint fdconst char *pathnameu32 mask
255sys_inotify_rm_watchint fd__s32 wd
256sys_migrate_pagespid_t pidunsigned long maxnodeconst unsigned long *old_nodesconst unsigned long *new_nodes
257sys_openatint dfdconst char *filenameint flagsint mode
258sys_mkdiratint dfdconst char *pathnameint mode
259sys_mknodatint dfdconst char *filenameint modeunsigned dev
260sys_fchownatint dfdconst char *filenameuid_t usergid_t groupint flag
261sys_futimesatint dfdconst char *filenamestruct timeval *utimes
262sys_newfstatatint dfdconst char *filenamestruct stat *statbufint flag
263sys_unlinkatint dfdconst char *pathnameint flag
264sys_renameatint oldfdconst char *oldnameint newfdconst char *newname
265sys_linkatint oldfdconst char *oldnameint newfdconst char *newnameint flags
266sys_symlinkatconst char *oldnameint newfdconst char *newname
267sys_readlinkatint dfdconst char *pathnamechar *bufint bufsiz
268sys_fchmodatint dfdconst char *filenamemode_t mode
269sys_faccessatint dfdconst char *filenameint mode
270sys_pselect6int nfd_set *inpfd_set *outpfd_set *expstruct timespec *tspvoid *sig
271sys_ppollstruct pollfd *ufdsunsigned int nfdsstruct timespec *tspconst sigset_t *sigmasksize_t sigsetsize
272sys_unshareunsigned long unshare_flags
273sys_set_robust_liststruct robust_list_head *headsize_t len
274sys_get_robust_listint pidstruct robust_list_head **head_ptrsize_t *len_ptr
275sys_spliceint fd_inloff_t *off_inint fd_outloff_t *off_outsize_t lenunsigned int flags
276sys_teeint fdinint fdoutsize_t lenunsigned int flags
277sys_sync_file_rangelong fdloff_t offsetloff_t byteslong flags
278sys_vmspliceint fdconst struct iovec *iovunsigned long nr_segsunsigned int flags
279sys_move_pagespid_t pidunsigned long nr_pagesconst void **pagesconst int *nodesint *statusint flags
280sys_utimensatint dfdconst char *filenamestruct timespec *utimesint flags
281sys_epoll_pwaitint epfdstruct epoll_event *eventsint maxeventsint timeoutconst sigset_t *sigmasksize_t sigsetsize
282sys_signalfdint ufdsigset_t *user_masksize_t sizemask
283sys_timerfd_createint clockidint flags
284sys_eventfdunsigned int count
285sys_fallocatelong fdlong modeloff_t offsetloff_t len
286sys_timerfd_settimeint ufdint flagsconst struct itimerspec *utmrstruct itimerspec *otmr
287sys_timerfd_gettimeint ufdstruct itimerspec *otmr
288sys_accept4int fdstruct sockaddr *upeer_sockaddrint *upeer_addrlenint flags
289sys_signalfd4int ufdsigset_t *user_masksize_t sizemaskint flags
290sys_eventfd2unsigned int countint flags
291sys_epoll_create1int flags
292sys_dup3unsigned int oldfdunsigned int newfdint flags
293sys_pipe2int *filedesint flags
294sys_inotify_init1int flags
295sys_preadvunsigned long fdconst struct iovec *vecunsigned long vlenunsigned long pos_lunsigned long pos_h
296sys_pwritevunsigned long fdconst struct iovec *vecunsigned long vlenunsigned long pos_lunsigned long pos_h
297sys_rt_tgsigqueueinfopid_t tgidpid_t pidint sigsiginfo_t *uinfo
298sys_perf_event_openstruct perf_event_attr *attr_uptrpid_t pidint cpuint group_fdunsigned long flags
299sys_recvmmsgint fdstruct msghdr *mmsgunsigned int vlenunsigned int flagsstruct timespec *timeout
300sys_fanotify_initunsigned int flagsunsigned int event_f_flags
301sys_fanotify_marklong fanotify_fdlong flags__u64 masklong dfdlong pathname
302sys_prlimit64pid_t pidunsigned int resourceconst struct rlimit64 *new_rlimstruct rlimit64 *old_rlim
303sys_name_to_handle_atint dfdconst char *namestruct file_handle *handleint *mnt_idint flag
304sys_open_by_handle_atint dfdconst char *namestruct file_handle *handleint *mnt_idint flags
305sys_clock_adjtimeclockid_t which_clockstruct timex *tx
306sys_syncfsint fd
307sys_sendmmsgint fdstruct mmsghdr *mmsgunsigned int vlenunsigned int flags
308sys_setnsint fdint nstype
309sys_getcpuunsigned *cpupunsigned *nodepstruct getcpu_cache *unused
310sys_process_vm_readvpid_t pidconst struct iovec *lvecunsigned long liovcntconst struct iovec *rvecunsigned long riovcntunsigned long flags
311sys_process_vm_writevpid_t pidconst struct iovec *lvecunsigned long liovcntconst struct iovcc *rvecunsigned long riovcntunsigned long flags


저작자표시 비영리 변경금지 (새창열림)

'Development > Assembly' 카테고리의 다른 글

어셈블리 프로그래밍  (0) 2015.06.21
리눅스 system table for x86  (0) 2014.09.14
어셈블리어 프로그래밍 helloword  (0) 2014.04.30
Posted by 준P

리눅스 system table for x86

Development/Assembly 2014. 9. 14. 01:59

리눅스에서 어셈블리로 컴파일을 할떄 system call number을 알아야 하는데여


32비트에서는 int 0x80으로 실행을 합니다.


이 system call number 가 정이되어 있는 곳은 \usr\include\asm\unistd.h 에 지정되어 있습니다.


%eaxNameSource%ebx%ecx%edx%esx%edi
1sys_exitkernel/exit.cint----
2sys_forkarch/i386/kernel/process.cstruct pt_regs----
3sys_readfs/read_write.cunsigned intchar *size_t--
4sys_writefs/read_write.cunsigned intconst char *size_t--
5sys_openfs/open.cconst char *intint--
6sys_closefs/open.cunsigned int----
7sys_waitpidkernel/exit.cpid_tunsigned int *int--
8sys_creatfs/open.cconst char *int---
9sys_linkfs/namei.cconst char *const char *---
10sys_unlinkfs/namei.cconst char *----
11sys_execvearch/i386/kernel/process.cstruct pt_regs----
12sys_chdirfs/open.cconst char *----
13sys_timekernel/time.cint *----
14sys_mknodfs/namei.cconst char *intdev_t--
15sys_chmodfs/open.cconst char *mode_t---
16sys_lchownfs/open.cconst char *uid_tgid_t--
18sys_statfs/stat.cchar *struct __old_kernel_stat *---
19sys_lseekfs/read_write.cunsigned intoff_tunsigned int--
20sys_getpidkernel/sched.c-----
21sys_mountfs/super.cchar *char *char *--
22sys_oldumountfs/super.cchar *----
23sys_setuidkernel/sys.cuid_t----
24sys_getuidkernel/sched.c-----
25sys_stimekernel/time.cint *----
26sys_ptracearch/i386/kernel/ptrace.clonglonglonglong-
27sys_alarmkernel/sched.cunsigned int----
28sys_fstatfs/stat.cunsigned intstruct __old_kernel_stat *---
29sys_pausearch/i386/kernel/sys_i386.c-----
30sys_utimefs/open.cchar *struct utimbuf *---
33sys_accessfs/open.cconst char *int---
34sys_nicekernel/sched.cint----
36sys_syncfs/buffer.c-----
37sys_killkernel/signal.cintint---
38sys_renamefs/namei.cconst char *const char *---
39sys_mkdirfs/namei.cconst char *int---
40sys_rmdirfs/namei.cconst char *----
41sys_dupfs/fcntl.cunsigned int----
42sys_pipearch/i386/kernel/sys_i386.cunsigned long *----
43sys_timeskernel/sys.cstruct tms *----
45sys_brkmm/mmap.cunsigned long----
46sys_setgidkernel/sys.cgid_t----
47sys_getgidkernel/sched.c-----
48sys_signalkernel/signal.cint__sighandler_t---
49sys_geteuidkernel/sched.c-----
50sys_getegidkernel/sched.c-----
51sys_acctkernel/acct.cconst char *----
52sys_umountfs/super.cchar *int---
54sys_ioctlfs/ioctl.cunsigned intunsigned intunsigned long--
55sys_fcntlfs/fcntl.cunsigned intunsigned intunsigned long--
57sys_setpgidkernel/sys.cpid_tpid_t---
59sys_oldunamearch/i386/kernel/sys_i386.cstruct oldold_utsname *----
60sys_umaskkernel/sys.cint----
61sys_chrootfs/open.cconst char *----
62sys_ustatfs/super.cdev_tstruct ustat *---
63sys_dup2fs/fcntl.cunsigned intunsigned int---
64sys_getppidkernel/sched.c-----
65sys_getpgrpkernel/sys.c-----
66sys_setsidkernel/sys.c-----
67sys_sigactionarch/i386/kernel/signal.cintconst struct old_sigaction *struct old_sigaction *--
68sys_sgetmaskkernel/signal.c-----
69sys_ssetmaskkernel/signal.cint----
70sys_setreuidkernel/sys.cuid_tuid_t---
71sys_setregidkernel/sys.cgid_tgid_t---
72sys_sigsuspendarch/i386/kernel/signal.cintintold_sigset_t--
73sys_sigpendingkernel/signal.cold_sigset_t *----
74sys_sethostnamekernel/sys.cchar *int---
75sys_setrlimitkernel/sys.cunsigned intstruct rlimit *---
76sys_getrlimitkernel/sys.cunsigned intstruct rlimit *---
77sys_getrusagekernel/sys.cintstruct rusage *---
78sys_gettimeofdaykernel/time.cstruct timeval *struct timezone *---
79sys_settimeofdaykernel/time.cstruct timeval *struct timezone *---
80sys_getgroupskernel/sys.cintgid_t *---
81sys_setgroupskernel/sys.cintgid_t *---
82old_selectarch/i386/kernel/sys_i386.cstruct sel_arg_struct *----
83sys_symlinkfs/namei.cconst char *const char *---
84sys_lstatfs/stat.cchar *struct __old_kernel_stat *---
85sys_readlinkfs/stat.cconst char *char *int--
86sys_uselibfs/exec.cconst char *----
87sys_swaponmm/swapfile.cconst char *int---
88sys_rebootkernel/sys.cintintintvoid *-
89old_readdirfs/readdir.cunsigned intvoid *unsigned int--
90old_mmaparch/i386/kernel/sys_i386.cstruct mmap_arg_struct *----
91sys_munmapmm/mmap.cunsigned longsize_t---
92sys_truncatefs/open.cconst char *unsigned long---
93sys_ftruncatefs/open.cunsigned intunsigned long---
94sys_fchmodfs/open.cunsigned intmode_t---
95sys_fchownfs/open.cunsigned intuid_tgid_t--
96sys_getprioritykernel/sys.cintint---
97sys_setprioritykernel/sys.cintintint--
99sys_statfsfs/open.cconst char *struct statfs *---
100sys_fstatfsfs/open.cunsigned intstruct statfs *---
101sys_iopermarch/i386/kernel/ioport.cunsigned longunsigned longint--
102sys_socketcallnet/socket.cintunsigned long *---
103sys_syslogkernel/printk.cintchar *int--
104sys_setitimerkernel/itimer.cintstruct itimerval *struct itimerval *--
105sys_getitimerkernel/itimer.cintstruct itimerval *---
106sys_newstatfs/stat.cchar *struct stat *---
107sys_newlstatfs/stat.cchar *struct stat *---
108sys_newfstatfs/stat.cunsigned intstruct stat *---
109sys_unamearch/i386/kernel/sys_i386.cstruct old_utsname *----
110sys_ioplarch/i386/kernel/ioport.cunsigned long----
111sys_vhangupfs/open.c-----
112sys_idlearch/i386/kernel/process.c-----
113sys_vm86oldarch/i386/kernel/vm86.cunsigned longstruct vm86plus_struct *---
114sys_wait4kernel/exit.cpid_tunsigned long *int optionsstruct rusage *-
115sys_swapoffmm/swapfile.cconst char *----
116sys_sysinfokernel/info.cstruct sysinfo *----
117sys_ipc (*Note)arch/i386/kernel/sys_i386.cuintintintintvoid *
118sys_fsyncfs/buffer.cunsigned int----
119sys_sigreturnarch/i386/kernel/signal.cunsigned long----
120sys_clonearch/i386/kernel/process.cstruct pt_regs----
121sys_setdomainnamekernel/sys.cchar *int---
122sys_newunamekernel/sys.cstruct new_utsname *----
123sys_modify_ldtarch/i386/kernel/ldt.cintvoid *unsigned long--
124sys_adjtimexkernel/time.cstruct timex *----
125sys_mprotectmm/mprotect.cunsigned longsize_tunsigned long--
126sys_sigprocmaskkernel/signal.cintold_sigset_t *old_sigset_t *--
127sys_create_modulekernel/module.cconst char *size_t---
128sys_init_modulekernel/module.cconst char *struct module *---
129sys_delete_modulekernel/module.cconst char *----
130sys_get_kernel_symskernel/module.cstruct kernel_sym *----
131sys_quotactlfs/dquot.cintconst char *intcaddr_t-
132sys_getpgidkernel/sys.cpid_t----
133sys_fchdirfs/open.cunsigned int----
134sys_bdflushfs/buffer.cintlong---
135sys_sysfsfs/super.cintunsigned longunsigned long--
136sys_personalitykernel/exec_domain.cunsigned long----
138sys_setfsuidkernel/sys.cuid_t----
139sys_setfsgidkernel/sys.cgid_t----
140sys_llseekfs/read_write.cunsigned intunsigned longunsigned longloff_t *unsigned int
141sys_getdentsfs/readdir.cunsigned intvoid *unsigned int--
142sys_selectfs/select.cintfd_set *fd_set *fd_set *struct timeval *
143sys_flockfs/locks.cunsigned intunsigned int---
144sys_msyncmm/filemap.cunsigned longsize_tint--
145sys_readvfs/read_write.cunsigned longconst struct iovec *unsigned long--
146sys_writevfs/read_write.cunsigned longconst struct iovec *unsigned long--
147sys_getsidkernel/sys.cpid_t----
148sys_fdatasyncfs/buffer.cunsigned int----
149sys_sysctlkernel/sysctl.cstruct __sysctl_args *----
150sys_mlockmm/mlock.cunsigned longsize_t---
151sys_munlockmm/mlock.cunsigned longsize_t---
152sys_mlockallmm/mlock.cint----
153sys_munlockallmm/mlock.c-----
154sys_sched_setparamkernel/sched.cpid_tstruct sched_param *---
155sys_sched_getparamkernel/sched.cpid_tstruct sched_param *---
156sys_sched_setschedulerkernel/sched.cpid_tintstruct sched_param *--
157sys_sched_getschedulerkernel/sched.cpid_t----
158sys_sched_yieldkernel/sched.c-----
159sys_sched_get_priority_maxkernel/sched.cint----
160sys_sched_get_priority_minkernel/sched.cint----
161sys_sched_rr_get_intervalkernel/sched.cpid_tstruct timespec *---
162sys_nanosleepkernel/sched.cstruct timespec *struct timespec *---
163sys_mremapmm/mremap.cunsigned longunsigned longunsigned longunsigned long-
164sys_setresuidkernel/sys.cuid_tuid_tuid_t--
165sys_getresuidkernel/sys.cuid_t *uid_t *uid_t *--
166sys_vm86arch/i386/kernel/vm86.cstruct vm86_struct *----
167sys_query_modulekernel/module.cconst char *intchar *size_tsize_t *
168sys_pollfs/select.cstruct pollfd *unsigned intlong--
169sys_nfsservctlfs/filesystems.cintvoid *void *--
170sys_setresgidkernel/sys.cgid_tgid_tgid_t--
171sys_getresgidkernel/sys.cgid_t *gid_t *gid_t *--
172sys_prctlkernel/sys.cintunsigned longunsigned longunsigned longunsigned long
173sys_rt_sigreturnarch/i386/kernel/signal.cunsigned long----
174sys_rt_sigactionkernel/signal.cintconst struct sigaction *struct sigaction *size_t-
175sys_rt_sigprocmaskkernel/signal.cintsigset_t *sigset_t *size_t-
176sys_rt_sigpendingkernel/signal.csigset_t *size_t---
177sys_rt_sigtimedwaitkernel/signal.cconst sigset_t *siginfo_t *const struct timespec *size_t-
178sys_rt_sigqueueinfokernel/signal.cintintsiginfo_t *--
179sys_rt_sigsuspendarch/i386/kernel/signal.csigset_t *size_t---
180sys_preadfs/read_write.cunsigned intchar *size_tloff_t-
181sys_pwritefs/read_write.cunsigned intconst char *size_tloff_t-
182sys_chownfs/open.cconst char *uid_tgid_t--
183sys_getcwdfs/dcache.cchar *unsigned long---
184sys_capgetkernel/capability.ccap_user_header_tcap_user_data_t---
185sys_capsetkernel/capability.ccap_user_header_tconst cap_user_data_t---
186sys_sigaltstackarch/i386/kernel/signal.cconst stack_t *stack_t *---
187sys_sendfilemm/filemap.cintintoff_t *size_t-
190sys_vforkarch/i386/kernel/process.cstruct pt_regs----


출쳐 : http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html


#ifndef _ASM_X86_UNISTD_32_H

#define _ASM_X86_UNISTD_32_H 1


#define __NR_restart_syscall 0

#define __NR_exit 1

#define __NR_fork 2

#define __NR_read 3

#define __NR_write 4

#define __NR_open 5

#define __NR_close 6

#define __NR_waitpid 7

#define __NR_creat 8

#define __NR_link 9

#define __NR_unlink 10

#define __NR_execve 11

#define __NR_chdir 12

#define __NR_time 13

#define __NR_mknod 14

#define __NR_chmod 15

#define __NR_lchown 16

#define __NR_break 17

#define __NR_oldstat 18

#define __NR_lseek 19

#define __NR_getpid 20

#define __NR_mount 21

#define __NR_umount 22

#define __NR_setuid 23

#define __NR_getuid 24

#define __NR_stime 25

#define __NR_ptrace 26

#define __NR_alarm 27

#define __NR_oldfstat 28

#define __NR_pause 29

#define __NR_utime 30

#define __NR_stty 31

#define __NR_gtty 32

#define __NR_access 33

#define __NR_nice 34

#define __NR_ftime 35

#define __NR_sync 36

#define __NR_kill 37

#define __NR_rename 38

#define __NR_mkdir 39

#define __NR_rmdir 40

#define __NR_dup 41

#define __NR_pipe 42

#define __NR_times 43

#define __NR_prof 44

#define __NR_brk 45

#define __NR_setgid 46

#define __NR_getgid 47

#define __NR_signal 48

#define __NR_geteuid 49

#define __NR_getegid 50

#define __NR_acct 51

#define __NR_umount2 52

#define __NR_lock 53

#define __NR_ioctl 54

#define __NR_fcntl 55

#define __NR_mpx 56

#define __NR_setpgid 57

#define __NR_ulimit 58

#define __NR_oldolduname 59

#define __NR_umask 60

#define __NR_chroot 61

#define __NR_ustat 62

#define __NR_dup2 63

#define __NR_getppid 64

#define __NR_getpgrp 65

#define __NR_setsid 66

#define __NR_sigaction 67

#define __NR_sgetmask 68

#define __NR_ssetmask 69

#define __NR_setreuid 70

#define __NR_setregid 71

#define __NR_sigsuspend 72

#define __NR_sigpending 73

#define __NR_sethostname 74

#define __NR_setrlimit 75

#define __NR_getrlimit 76

#define __NR_getrusage 77

#define __NR_gettimeofday 78

#define __NR_settimeofday 79

#define __NR_getgroups 80

#define __NR_setgroups 81

#define __NR_select 82

#define __NR_symlink 83

#define __NR_oldlstat 84

#define __NR_readlink 85

#define __NR_uselib 86

#define __NR_swapon 87

#define __NR_reboot 88

#define __NR_readdir 89

#define __NR_mmap 90

#define __NR_munmap 91

#define __NR_truncate 92

#define __NR_ftruncate 93

#define __NR_fchmod 94

#define __NR_fchown 95

#define __NR_getpriority 96

#define __NR_setpriority 97

#define __NR_profil 98

#define __NR_statfs 99

#define __NR_fstatfs 100

#define __NR_ioperm 101

#define __NR_socketcall 102

#define __NR_syslog 103

#define __NR_setitimer 104

#define __NR_getitimer 105

#define __NR_stat 106

#define __NR_lstat 107

#define __NR_fstat 108

#define __NR_olduname 109

#define __NR_iopl 110

#define __NR_vhangup 111

#define __NR_idle 112

#define __NR_vm86old 113

#define __NR_wait4 114

#define __NR_swapoff 115

#define __NR_sysinfo 116

#define __NR_ipc 117

#define __NR_fsync 118

#define __NR_sigreturn 119

#define __NR_clone 120

#define __NR_setdomainname 121

#define __NR_uname 122

#define __NR_modify_ldt 123

#define __NR_adjtimex 124

#define __NR_mprotect 125

#define __NR_sigprocmask 126

#define __NR_create_module 127

#define __NR_init_module 128

#define __NR_delete_module 129

#define __NR_get_kernel_syms 130

#define __NR_quotactl 131

#define __NR_getpgid 132

#define __NR_fchdir 133

#define __NR_bdflush 134

#define __NR_sysfs 135

#define __NR_personality 136

#define __NR_afs_syscall 137

#define __NR_setfsuid 138

#define __NR_setfsgid 139

#define __NR__llseek 140

#define __NR_getdents 141

#define __NR__newselect 142

#define __NR_flock 143

#define __NR_msync 144

#define __NR_readv 145

#define __NR_writev 146

#define __NR_getsid 147

#define __NR_fdatasync 148

#define __NR__sysctl 149

#define __NR_mlock 150

#define __NR_munlock 151

#define __NR_mlockall 152

#define __NR_munlockall 153

#define __NR_sched_setparam 154

#define __NR_sched_getparam 155

#define __NR_sched_setscheduler 156

#define __NR_sched_getscheduler 157

#define __NR_sched_yield 158

#define __NR_sched_get_priority_max 159

#define __NR_sched_get_priority_min 160

#define __NR_sched_rr_get_interval 161

#define __NR_nanosleep 162

#define __NR_mremap 163

#define __NR_setresuid 164

#define __NR_getresuid 165

#define __NR_vm86 166

#define __NR_query_module 167

#define __NR_poll 168

#define __NR_nfsservctl 169

#define __NR_setresgid 170

#define __NR_getresgid 171

#define __NR_prctl 172

#define __NR_rt_sigreturn 173

#define __NR_rt_sigaction 174

#define __NR_rt_sigprocmask 175

#define __NR_rt_sigpending 176

#define __NR_rt_sigtimedwait 177

#define __NR_rt_sigqueueinfo 178

#define __NR_rt_sigsuspend 179

#define __NR_pread64 180

#define __NR_pwrite64 181

#define __NR_chown 182

#define __NR_getcwd 183

#define __NR_capget 184

#define __NR_capset 185

#define __NR_sigaltstack 186

#define __NR_sendfile 187

#define __NR_getpmsg 188

#define __NR_putpmsg 189

#define __NR_vfork 190

#define __NR_ugetrlimit 191

#define __NR_mmap2 192

#define __NR_truncate64 193

#define __NR_ftruncate64 194

#define __NR_stat64 195

#define __NR_lstat64 196

#define __NR_fstat64 197

#define __NR_lchown32 198

#define __NR_getuid32 199

#define __NR_getgid32 200

#define __NR_geteuid32 201

#define __NR_getegid32 202

#define __NR_setreuid32 203

#define __NR_setregid32 204

#define __NR_getgroups32 205

#define __NR_setgroups32 206

#define __NR_fchown32 207

#define __NR_setresuid32 208

#define __NR_getresuid32 209

#define __NR_setresgid32 210

#define __NR_getresgid32 211

#define __NR_chown32 212

#define __NR_setuid32 213

#define __NR_setgid32 214

#define __NR_setfsuid32 215

#define __NR_setfsgid32 216

#define __NR_pivot_root 217

#define __NR_mincore 218

#define __NR_madvise 219

#define __NR_getdents64 220

#define __NR_fcntl64 221

#define __NR_gettid 224

#define __NR_readahead 225

#define __NR_setxattr 226

#define __NR_lsetxattr 227

#define __NR_fsetxattr 228

#define __NR_getxattr 229

#define __NR_lgetxattr 230

#define __NR_fgetxattr 231

#define __NR_listxattr 232

#define __NR_llistxattr 233

#define __NR_flistxattr 234

#define __NR_removexattr 235

#define __NR_lremovexattr 236

#define __NR_fremovexattr 237

#define __NR_tkill 238

#define __NR_sendfile64 239

#define __NR_futex 240

#define __NR_sched_setaffinity 241

#define __NR_sched_getaffinity 242

#define __NR_set_thread_area 243

#define __NR_get_thread_area 244

#define __NR_io_setup 245

#define __NR_io_destroy 246

#define __NR_io_getevents 247

#define __NR_io_submit 248

#define __NR_io_cancel 249

#define __NR_fadvise64 250

#define __NR_exit_group 252

#define __NR_lookup_dcookie 253

#define __NR_epoll_create 254

#define __NR_epoll_ctl 255

#define __NR_epoll_wait 256

#define __NR_remap_file_pages 257

#define __NR_set_tid_address 258

#define __NR_timer_create 259

#define __NR_timer_settime 260

#define __NR_timer_gettime 261

#define __NR_timer_getoverrun 262

#define __NR_timer_delete 263

#define __NR_clock_settime 264

#define __NR_clock_gettime 265

#define __NR_clock_getres 266

#define __NR_clock_nanosleep 267

#define __NR_statfs64 268

#define __NR_fstatfs64 269

#define __NR_tgkill 270

#define __NR_utimes 271

#define __NR_fadvise64_64 272

#define __NR_vserver 273

#define __NR_mbind 274

#define __NR_get_mempolicy 275

#define __NR_set_mempolicy 276

#define __NR_mq_open 277

#define __NR_mq_unlink 278

#define __NR_mq_timedsend 279

#define __NR_mq_timedreceive 280

#define __NR_mq_notify 281

#define __NR_mq_getsetattr 282

#define __NR_kexec_load 283

#define __NR_waitid 284

#define __NR_add_key 286

#define __NR_request_key 287

#define __NR_keyctl 288

#define __NR_ioprio_set 289

#define __NR_ioprio_get 290

#define __NR_inotify_init 291

#define __NR_inotify_add_watch 292

#define __NR_inotify_rm_watch 293

#define __NR_migrate_pages 294

#define __NR_openat 295

#define __NR_mkdirat 296

#define __NR_mknodat 297

#define __NR_fchownat 298

#define __NR_futimesat 299

#define __NR_fstatat64 300

#define __NR_unlinkat 301

#define __NR_renameat 302

#define __NR_linkat 303

#define __NR_symlinkat 304

#define __NR_readlinkat 305

#define __NR_fchmodat 306

#define __NR_faccessat 307

#define __NR_pselect6 308

#define __NR_ppoll 309

#define __NR_unshare 310

#define __NR_set_robust_list 311

#define __NR_get_robust_list 312

#define __NR_splice 313

#define __NR_sync_file_range 314

#define __NR_tee 315

#define __NR_vmsplice 316

#define __NR_move_pages 317

#define __NR_getcpu 318

#define __NR_epoll_pwait 319

#define __NR_utimensat 320

#define __NR_signalfd 321

#define __NR_timerfd_create 322

#define __NR_eventfd 323

#define __NR_fallocate 324

#define __NR_timerfd_settime 325

#define __NR_timerfd_gettime 326

#define __NR_signalfd4 327

#define __NR_eventfd2 328

#define __NR_epoll_create1 329

#define __NR_dup3 330

#define __NR_pipe2 331

#define __NR_inotify_init1 332

#define __NR_preadv 333

#define __NR_pwritev 334

#define __NR_rt_tgsigqueueinfo 335

#define __NR_perf_event_open 336

#define __NR_recvmmsg 337

#define __NR_fanotify_init 338

#define __NR_fanotify_mark 339

#define __NR_prlimit64 340

#define __NR_name_to_handle_at 341

#define __NR_open_by_handle_at 342

#define __NR_clock_adjtime 343

#define __NR_syncfs 344

#define __NR_sendmmsg 345

#define __NR_setns 346

#define __NR_process_vm_readv 347

#define __NR_process_vm_writev 348

#define __NR_kcmp 349

#define __NR_finit_module 350

#define __NR_sched_setattr 351

#define __NR_sched_getattr 352

#define __NR_renameat2 353


#endif /* _ASM_X86_UNISTD_32_H */

저작자표시 비영리 변경금지 (새창열림)

'Development > Assembly' 카테고리의 다른 글

어셈블리 프로그래밍  (0) 2015.06.21
리눅스 syscall table for x86_64  (0) 2014.09.18
어셈블리어 프로그래밍 helloword  (0) 2014.04.30
Posted by 준P

어셈블리어 프로그래밍 helloword

Development/Assembly 2014. 4. 30. 18:55

안녕 하세요 준P입니다.


오늘은 리눅스에서 어셈블리어로 프로그래밍을 해 보도록 합시다.


그러면 일단 리눅스에 nasm이 설치되어있어야함니다.


sudo apt-get install nasm


으로 설치해 줍시다.


자 nasm이 설치 되엇으면 vim으로 asm.asm을 만들어줍시다. 


그리고 나서 


section .data

                        ;여기에는 데이터를 넣는 곳 입니다.

msg db "hello world",0x0A

                        ; hello world 라는 단어와 새줄 이라는 16진수 코드

section .text


global _start

  

_start

mov eax,4          ; write의 시스템 콜 번호

mov ebx,1          ; write의 표준 출력은 1번이다.

mov ecx,msg      ; write의 두 번쨰 인자에 메세지 주소 저장

mov edx,12        ; write 의 세 번쨰 인자에 문자열 길이 저장

int 0x80             ; 실행


mov eax,1         ; exit의 시스템 콜 번호

mov ebx,0         ; exit의 정상적인 종료

int 0x80             ; 실행


자 이제 작성이 끝낫다면


컴파일을 해야죠


하지만 그전에 자신의 리눅스 시스템이 32비트인지 64비트인지 알아야 합니다.


uname -p 


이 명령어로  x86이 나왓다면 32비트인것이고 x86_64라면 64비트 인 것 입니다.



참고로 저는 64비트 입니다.


자 이제 자신이 몇 비트 인지 알았으니


컴파일을 해봅시다.


32비트라면 nasm -f elf asm.asm    


64비트라면 nasm -f elf64 asm.asm    


nasm -f elf asm.asm     ;이 명령어 후에는 asm.o가 만들어 짐니다.


ld asm.o                     ;실행 파일로 만들어 줌니다. 


./a.out                       ;실행 입니다.




저 위 에러를 해석 하면


경고 : 레이블을 혼자 선에 콜론없이하는 것은 오류가있을 수 있습니다


라고 하는데요 주석 떄문 입니다. 간단히 무시 하시면 됨니다.


네 정상적으로 컴파일이 되엇습니다.



저작자표시 비영리 변경금지 (새창열림)

'Development > Assembly' 카테고리의 다른 글

어셈블리 프로그래밍  (0) 2015.06.21
리눅스 syscall table for x86_64  (0) 2014.09.18
리눅스 system table for x86  (0) 2014.09.14
Posted by 준P
이전페이지 다음페이지
블로그 이미지

by 준P

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

HELLO? (157)
스터디 (6)
Windows 구조와 원리 OS를 관통하는 프로그.. (6)
Development (44)
Android (5)
Assembly (4)
C/C++ (11)
C# (0)
HTML (1)
JAVA (2)
JSP (3)
JS Script (2)
Linux Shell Script (2)
Open GL (1)
PHP (0)
Python (1)
QT library (3)
SQL (1)
Swift (1)
MongoDB (0)
Express JS (1)
Angular JS (1)
Node JS (1)
SpongePoweredForgePluginDev.. (2)
Unity3d (1)
Docker (0)
Linux (22)
Linux Kernel Study (1)
Network (9)
WireShark (1)
Network Theory (6)
Hack the packet 2013 (2)
Reversing (50)
Windows PE (10)
Windows Reversing (1)
Linux PE (0)
Linux Reversing (0)
Android Reversing (2)
Reversing Tools (8)
CodeEngn (25)
Reversing.kr (2)
abex's (2)
Sites (3)
System (12)
FTZ (9)
Buffer Over Flow (3)
GDGkr (1)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
준P's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

HELLO_HELL?

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • HELLO? (157)
    • 스터디 (6)
      • Windows 구조와 원리 OS를 관통하는 프로그.. (6)
    • Development (44)
      • Android (5)
      • Assembly (4)
      • C/C++ (11)
      • C# (0)
      • HTML (1)
      • JAVA (2)
      • JSP (3)
      • JS Script (2)
      • Linux Shell Script (2)
      • Open GL (1)
      • PHP (0)
      • Python (1)
      • QT library (3)
      • SQL (1)
      • Swift (1)
      • MongoDB (0)
      • Express JS (1)
      • Angular JS (1)
      • Node JS (1)
      • SpongePoweredForgePluginDev.. (2)
      • Unity3d (1)
    • Docker (0)
    • Linux (22)
    • Linux Kernel Study (1)
    • Network (9)
      • WireShark (1)
      • Network Theory (6)
      • Hack the packet 2013 (2)
    • Reversing (50)
      • Windows PE (10)
      • Windows Reversing (1)
      • Linux PE (0)
      • Linux Reversing (0)
      • Android Reversing (2)
      • Reversing Tools (8)
      • CodeEngn (25)
      • Reversing.kr (2)
      • abex's (2)
    • Sites (3)
    • System (12)
      • FTZ (9)
      • Buffer Over Flow (3)
    • GDGkr (1)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바