y0u_bat
C언어 - strchr 함수구현 #include int str_chr(char *p,char serarch); int main(int argc,char *argv[]){ char buffer[] = "test\n"; printf("%x\n",str_chr(buffer,'d')); } int str_chr(char *p,char serarch){ while(1) {if(*p == 0x0)return -1; if(*p == serarch) return p; *p++; } return 0; } 반환값: 1. 찾은 문자열를 가르키는 포인터 주소2. 못찾을 경우 반환값은 -1 그 포인터 주소로 해당 값을 바꾸거나 없애거나 가능 몇번째 해당문자열인지 알려면 ( 해당포인터주소 - 원래버퍼주소 + 1 ) 를 하면 된다.
strlen 함수 구현 int strlen(char *string){int i = 0 ;while(1) {if(string[i] == NULL) { return i; } i++; }}
system call == apiinterrput descriptor table (IDT)0 - timer8 - filoppy128 - System Service Descriptor Table (약자로 SSDT) ex) write 함수를 쓰고 싶다 하면, ssdt[4]() 이렇게 하면 write();가 완성된다.저기 있는 숫자는 syscall number 이다. syscall이란 - 시스템에 미리 만들어 놓은 함수를 이용하여 처리하는 것을 말한다. 호출은 인터럽터를 사용하며 리눅스는 IDT의 128번째인(int $0x80) 인터럽터를 사용한다. 우분투32비트 기준으로 /usr/include/asm/unistd_32.h 에서 syscall number를 볼수있다. 범용 레지스터eax(ax,ah,al) :곱..