Category Archives: Assembly

Livekd – 커널 라이브 디버깅

Livekd – 커널 라이브 디버깅 우리는 지금까지 커널 디버깅을 위하여, 가상의 머신과 호스트 머신, 2개의 머신이 필요하였었다. 이와 같은 불편함을 감소 시키기 위해, 로컬에서 디버깅 할 수 있는 환경을 Livekd를 이용하여 진행할 수 있다. Livekd는 Windbg의 로컬 디버깅에서 제한된 아래와 같은 기능을 이용할 수 있다. 레지스터 확인 덤프 생성 호출 스택 확인 로컬 머신에서 실행

Read More

Windbg – Display Memory Command D, DD, DW, DB

Windbg – Display Memory Command D, DD, DW, DB 메모리의 내용을 확인할 때 Windbg에서 사용하는 명령어로 매우 자주 사용되는 명령으로, 아래와 같이 사용할 수 있다. D 지정한 범위의 메모리 내용을 표시 DD range 지정한 범위의 메모리 내용을 DWORD(32bit)로 표시 DW range 지정한 범위의 메모리 내용을 WORD(16bit)로 표시 DB range 지정한 범위의 메모리 내용을 BYTE(8bit)로 표시

Read More

어셈블리 – INC/DEC 명령 MASM32 코드 예제

이 명령도 이름에서 알 수 있듯이 1을 증가/감소 시키는 명령이다. (앞서 CMP 명령 예제에서 진행했었다.)  피연산자는 1개이며, 메모리/범용 레지스터를 둘다 지정 가능하다.   // EBX 레지스터 값을 1 증가 inc ebx   // EBX 레지스터에 지정된 값의 메모리 주소에 있는 값을 1 증가 inc dword ptr [ebx]   // EBX 레지스터 값을 1 감소 dec

Read More

어셈블리 – PUSH/POP 명령 MASM32 코드 예제

이 명령은 스택에 데이터를 push(저장) 하거나 pop(꺼내기)라는 명령으로 스택과 밀접한 관계가 있다. (이후 진행되는 스택에서 자세히 다른다.) 이 명령의 사용은 자료 구조 스택과 동일하다. PUSH/POP 는 한개의 피연산자를 받는데, 이 피연산자는 직접값/메모리/레지스터(세그먼트 포함)가 될 수 있다. PUSH이 실행되면, ESP는 해당 바이트만큼 감소하고, POP 명령이 실행되면 ESP레지스터는 해당 바이트만큼 증가하게 된다.   masm6.asm .586 .model flat, stdcall

Read More