분류 전체보기(333)
-
[9] 어셈블리 스택 메모리를 이용한 간단한 덧셈 ( leave, ret, call )
C언어 코드를 어셈블리코드로 표현하자 [ C언어 코드 ] int sum( int a, int b ){ int sum = 0 ; sum = a + b ; return sum ; } int main(){ int a = 10; int b = 20; int ret = 0; ret = sum(a,b); printf("Sum : %d\n",ret ); return 0 ; } [ 어셈블리 코드 ] extern printf section .dataprompt_hex: db '0x%08x',10,00prompt_int: db '%d',10,00prompt_sum: db 'Sum is : %d',10,00section .textglobal mainsum:push ebpmov ebp, esp ; function prolog..
2017.10.27 -
프로세스의 메모리 구조 ( + ESP, EBP )
[root@EH 3797]# cat maps 00000000-08048000 사용하지 않는 메모리 주소 08048000-08049000 r-xp 00000000 03:01 425373 /root/a.out : 1000 , 4096byte ,4K: text section - 코드가 위치하는 주소 08049000-0804a000 rw-p 00000000 03:01 425373 /root/a.out : 1000 , 4096buyr ,4K: data section( data,bss,heap ) - 전역변수, 힙 공간 등의 주소 08xxxxxx ~ 40xxxxxx : HEAP 영역을 위한 예약된 영역 40xxxxxx : 공유라이브러리영역 40000000-40013000 r-xp 00000000 03:01 3101..
2017.10.25 -
[8] 어셈블리 반복문 연습
C언어 반복문을 어셈블리로 직접 작성해보자 [ C언어 ]- 문자열의 끝을 파악해서 문자개수를 세고, 문자열의 뒤에서부터 출력한다 str buffer[1024] ; int index ; int i=0 ; int main(){ scanf("%s",string); while( string[i] != null ){ i++; } index--; for( i=index; i >= 0 ; i-- ){ printf("%c",string[i]); } printf("\n"); return 0; } [ 어셈블리 ] str string[1024]; int index; int i=0; scanf("%s",string); while( string[i] != null ){ i++; } index = i; while( i < 0 )..
2017.10.24 -
[7] 어셈블리 분기문 ( if, switch ) +cmp, jmp
1. cmp ( compare )레지스터나 메모리의 값을 변경하지 않는다플래그 레지스터에만 영향을 준다 ( flag register - 상태 레지스터 )-> SF(부호), CF(올림수), ZF(0,두개의 비교값이 같을 때 ) # 두 피연산자의 비교 ( CMP )cmp eax, ebx=> eax-ebx => 결과가 0인 경우: 같은 경우 => SF:0, CF:0, ZF : 1=> 결과가 음수인 경우 : eax SF:1 , CF:0, ZF: 0=> 결과가 양수인 경우 : eax > ebx => SF:0, ZF:0 , CF:0 0번이 시작7번 플래그() - SF 6번 플래그() - ZF cmp 10, 201 0 000111SF ZF cmp 10,100 1 000110SF ZFcmp 20,100..
2017.10.23 -
정보보안기사 실기 참고 내용 정리 3
1. 피싱 vs 파밍# 피싱전자우편이나 메신저 등을 이용해서 신뢰할 수 있는 사용자나 기업이 전송한 메시지인 것처럼 가장하여 개인정보를 빼내는 공격기법이다 # 파밍사용자의 컴퓨터를 악성코드에 감염시켜 정상 홈페이지에 접속하여도 피싱 사이트로 유도된다( DNS 서버의 응답을 대신하여 사용자의 컴퓨터에 피싱사이트의 IP주소로 응답한다 ) 2. 체스트안드로이드 악성코드로써, SMS로 전송된 인증번호를 이용하는 소액결제 방식의 허점을 악용한다① 사용자가 SMS에 링크 형식으로 포함된 악성코드를 다운로드한다② 해당 스마트폰은 좀비 스마트폰이 된다 ( 결제 사이트의 SMS가 사용자가 아닌 공격자에게로 전송된다 )③ 공격자는 체스트로 얻은 정보를 이용해서 소액결제를 시도한다④ 소액결제 사이트의 인증번호가 공격자에게 ..
2017.10.23 -
[6] 어셈블리 비트연산 ( shift, and, or, not )
1. 비트 연산 ( Shift 연산 )1-1. 부호가 없는 연산 shl : 왼쪽으로 이동shr : 오른쪽으로 이동 1-2. 부호가 있는 연산 sal : 왼쪽으로 이동sar : 오른쪽으로 이동 [ C언어에서 shift 연산 ]int eax=4;eax neg 명령어로 사용한다 부호를 변경할때 사용한다 mov eax, 15 neg eax=> eax 레지스터에는 -15가 저장되어 있다 나눗셈에서의 shift 연산 활용 mov eax, 0 ; eax 레지스터 초기화 mov ax, 10 ; ax 레지스터( 16bit ) 에 10 입력 mov dl, 4 ; dl 레지스터 ( 8bit ) 에 4 입력 div dl ; ax 레지스터 / dl 레지스터 : 16bit / 8bit => AH(나머지):AL(몫) shr ax,..
2017.10.20