본문 바로가기

바이러스개발을위한어셈블리어

(4)
어셈블리어로 사칙연산하기 하하 어셈블리어는 정말 깐깐한 언어인것 같다. 연산 방식도 하나하나 지정해줘야 하고 변수 정의할 때 레지스터 위치도 하나하나 지정해줘야 하는등 정말 태초적인 언어인것 같다. 파이썬은 밀키트 하는 느낌이라면 이건 재료를 하나하나 마트에서 사서 차근차근 조리 순서에 맞춰 조리하는 내가 직접 손수 만드는 가내수공업 같달까...? 그래서 어쨌든 오늘 어셈블리어로 사칙연산하는 코드를 게시할 것이다. 일단 사칙연산을 하기 전에 변수를 지정하고 변수 값을 출력하는 코드를 써보자. %include "io64.inc" section .data section .bss a resw 1 section .text global CMAIN CMAIN: GET_DEC 2, [a] NEWLINE PRINT_DEC 2,[a] xor r..
어셈블리어 문법 ※이 글은 철저히 INTEL cpu에서 사용하는 어셈블리어를 기준으로 서술한 글입니다!! 원래는 처음에 문법을 서술하는게 맞지만, 이건 너무 어려워서 코드를 보고봐야 이해할 수 있을것 같다. (물론 이거 내 기준) 코드 한줄을 보고 시작하자. mov rax, 1 어셈블리어는 코드를 opcode operand1, operand2로 서술할 수 있다. 여기서 opcode는 연산자를 의미하고(더하기 빼기 나누기 곱하기) operand는 연산을 당하는 피연산자를 의미한다. (3+5에서 '+'가 연산자/ '3', '5'가 피연산자) 그러니까 여기서 opcode는 mov이고 operand는 rax와 1이 된다. rax는 후문에 서술할 레지스터 중 1개이다. 여기까지는 INTEL이나 AT&T 둘다 똑같다.(아마..?)..
칼리리눅스 어셈블리어 코드 작성 하하하 정말 오랜만에 게시하는 어셈블리어 게시물인것 같다. 요즘 어셈블리어 공부의 중요성을 뼈저리게 느끼고 있다. 그래서 다시 작성을 시작해보려한다!하하하 정말 웃긴걸? *지난 게시물과 다르게 변동된 사항이 있다! 역어셈블러: SASM->NASM 야호! 오늘은 개발환경이 바뀌고 처음으로 코드를 작성한 날이다. 하하하 먼저, 칼리리눅스에 nasm을 깔아주자 (만약 자신이 이미 슈퍼유저 권한이 있다면 굳이 sudo를 붙일 필요는 없다.) *sudo: super user do 그리고 편집기를 이용하여 확장자가 .s인 어셈블리어 파일을 만들어주도록 하자. 오늘은 사용방법을 알려주는거니까 예시로 helloworld.s를 간단히 작성하고 만들어보도록 하겠다. 이렇게 작성을 하고 저장후 나가면 helloworld를 ..
어셈블리어 기본 내가 또 다른길로 빠져버렸다... 바로 어셈블리어인데, 오늘은 기본중의 기본을 작성할 예정이다. 사용할 어셈블리어 컴파일러는 SASM이니 이 점 알아두고 지금부터 본론으로 들어가도록 하겠다. *나도 다른 분의 블로그를 보고 공부하기 때문에 약간 내용이 겹칠 수 있는점 양해 부탁드림...* 항상 코딩언어를 처음 배울 때 출력하는 것이 있다. 바로 HELLO "자신이 배울 언어"인데 이 구문을 출력하는 코드를 작성해 보도록 하겠다. 그럼 내가 이번에 출력할 구문이 "HELLO ASSEMBLY"가 되겠지? 코드를 먼저 보여주고 설명을 하도록 하겠다. 여기에 어셈블리어 전용 코드블럭이 없어서 아무거나 썼는데 무슨 언어의 코드블럭을 썼는지 맞추면 내가 선물하나드림 %include "io64.inc" section..