어셈블리어와 악성코드 17

INT(Interrupt), NOP(No Operation), LOOP

INT(Interrupt)와 NOP(No Operation) INT(Interrupt) 소프트웨어 인터럽트를 발생시켜 운영체제의 서브루틴을 호출한다. 인터럽트 LIst (http://stanislavs.org/helppc/) - Interrupt Services DOS/BIOS/EMS/Mouse 자세한 내용은 다음에 다뤄보도록 하겠습니다. 양식으로는 상수만 사용할 수 있다. INT imm Ex) INT 10 NOP(No Operation) 아무 일도 하지 않는 명령어이며, 리버싱 작업에서 목적에 따라 유용하게 사용 될 수 있다. 실습 환경 VMware Workstation 15 Player (FREE 버전) Windows XP Professional SP3 (32Bit) CMD창을 열어 debug 명령어..

스택(Stack), PUSH, POP

스택(Stack), PUSH, POP 스택(Stack) 나중에 들어온 것이 먼저 나간다는 LIFO(Last In First Out) 방식입니다.먼저 들어온 것이 나중에 나가는 FILO(First In Last Out) 방식이라고도 할 수 있습니다.말의 차이일 뿐 크게 신경쓸 필요는 없습니다. 스택에 데이터를 넣는 것을 PUSH, 스택에서 값을 빼는 것을 POP이라고 하며, 일반적으로 TOP으로 명명되는 현재 스택 포인터가 사용됩니다. PUSH가 될 때마다 스택 포인터가 하나씩 증가되고 POP이 될 때마다 스택 포인터가 하나씩 감소합니다. 실습 환경 VMware Workstation 15 Player (FREE 버전) Windows XP Professional SP3 (32Bit) CMD창을 열어 debu..

어셈블리어 명령어 [SHL, SHR]과 Flag

어셈블리어 명령어 [SHL, SHR]과 Flag 어셈블리어에서 사용하는 명령어 SHL, SHR과 Flag에 대하여 알아보겠습니다. SHL (Shift Left) Destination 피연산자를 Source 피연산자의 크기만큼 왼쪽으로 각 비트를 시프트 시킨다. 최상위 비트는 캐리 플래그(CF)로 복사되고 최하위 비트는 0으로 채워진다. SHL 명령어로 1번 이동할 때 마다 값이 2배씩 증가합니다. SHR (Shift Right) Destination 피연산자를 Source 피연산자의 크기만큼 오른쪽으로 각 비트를 시프트 시킨다. 최상위 비트는 0으로 채워지고 최하위 비트는 캐리 플래그(CF)로 복사된다. SHR 명령어로 1번 이동할 때 마다 값이 2배씩 감소합니다. SHL과 SHR은 사용하는 양식은 같습..

어셈블리어 XOR을 이용하여 값 바꾸기

어셈블리어 명령어 [XOR]XOR 명령어를 사용하면 temp 변수를 사용하지 않고 AX와 BX에 저장되어 있는 값을 바꿀 수 있습니다. 실습 환경 VMware Workstation 15 Player (FREE 버전) Windows XP Professional SP3 (32Bit) 먼저 다음과 같이 입력합니다. -a 100 MOV AX, 1234 MOV BX, 5678 XOR AX, BX XOR BX, AX XOR AX, BX 우선 MOV 명령어를 이용하여 AX=1234, BX=5678의 값을 입력합니다. 그리고 첫 번째 XOR AX, BX을 통하여 AX와 BX의 XOR한 결과 값을 AX에 저장합니다. AX=444C 값이 저장됩니다. 2 번째 XOR BX, AX을 진행하여 BX와 AX의 XOR 결과 값을 ..

어셈블리어 명령어 [AND, OR, XOR]

어셈블리어 명령어 [AND, OR, XOR] AND (Logical AND) Destination과 Source 피연산자의 각 비트가 AND 연산 됩니다. AND 연산은 각 비트가 모두 1일때만 결과 값이 1이 됩니다. 레지스터, 상수, 메모리를 사용할 수 있습니다. AND reg, reg AND reg, imm AND reg, mem AND mem, imm AND mem, reg X Y X (AND) Y 0 0 0 0 1 0 1 0 0 1 1 1 OR (Inclusive OR) Destination과 Source 피연산자의 각 비트가 OR 연산 됩니다. OR 연산은 각 비트가 하나라도 1이면 결과 값이 1이 됩니다. 결과에 따라 CF, OF, ZF 플래그가 세트 될 수 있습니다. 레지스터, 상수, 메모..

반응형