본문 바로가기
728x90
반응형

Ghost의 어셈블리어 Note5

어셈블리어 C소스에서의 주소 버그... 햅버그.. 썰렁~~ 어셈블리어 C소스에서의 주소 버그 그림 1) CODE(코드) 영역의 주소와 DATA(데이타) 영역의 주소가 0으로 되있음. 1. 그림 1)을 보면 빨간 네모들 안에 0으로만 되어 있는 것을 확인 할 수 있는데 원래는 CODE(코드) 영역의 주소와 DATA(데이타) 영역의 주소가 나와야 하는데 나오지 않고 있다. 잘못된 버그이기 때문에 나오지 않는다. 그림 2) 전체 코드 중 처음 부분. 2. 그림 2)는 전체 코드 중에 가장 처음 부분으로 구조체와 함수 선언등이 있는 부분이며, 빨간 네모들이 있는 부분이 버그의 핵심 부분이다. 나중에 그 부분만 따로 볼 것이다. 그림 3) 전체 코드 중 중간 부분. 3. 그림 3)은 전체 코드 중에서 중감 부분에 해당 하며, 이 부분은 Main 함수 부분이 있다. 이렇게.. 2012. 9. 13.
어셈블리어 정수(사람?)를 더해서 화면에 출력.. 어셈블리어 정수(사람?)를 더해서 화면에 출력.. 그림 1> 메모리 DATA영역에 해당하는 코드. 1. 그림 1>에서 보면 ExitProcess라는 함수를 선언하였는데 거기에 인자로 stdcall 이라는 인자를 볼수 있다. 이 인자는 함수 호출 규약이라는 것이 있는데 자세한건 다음 기회에 넣어 볼까 한당. ㅎㅎ 다음으로 "include io.h"라고 되어 있는 부분이 있는데, 그 부분은 io.h 라는 헤더파일을 포함 시키고 있다. 그리고 .STACK 에서는 4 KByte 사용 하겠다고 지정 하였으며, .DATA는 메모리의 데이터 영역에 속하는 코드로 전역 변수들을 선언 하거나 정의 하였당... 그림 2> 메모리의 CODE영역에 해당하는 코드. 2. 그림 2>에서는 메모리의 코드영역에 해당하는 코드이며, .. 2012. 8. 27.
어셈블리어 MASM 컴파일. 어셈블리어 MASM 컴파일. 그림 1> MASM으로 컴파일전 필요한 파일들. 1. 이전에는 NASM으로 C 파일과 컴파일을 하였는데 이번에는 MASM으로 컴파일을 하였다. 그림1>에서는 MASM으로 컴파일 하기전에 필요한 파일들이당... 그런데 다른 파일 들은 빨간색인데 색이 다른 하나가 있는 것을 볼 수 있을 것이다. 그 파란색으로 된 windbg 파일은 디버깅을 하는데 필요한 파일이라서 따로 색을 주었고 지금은 신경쓰지 않아도 된당... ^^ 그림 2> ml 이라는 명령어로 First.obj 파일 생성하기. 2. 그림 2>에서는 링크를 걸리 위해 필요한 OBJ 파일을 생성 하기 위해서 ml 이라는 명령어를 썼다. 그러나 보면 알수도 있겠지만 NASM 컴파일과는 명령어가 다른 것을 볼 수 있다. NAS.. 2012. 8. 24.
어셈블리어와 C가 결혼? 링크 컴파일... 어셈블리어와 C소스와 링크 컴파일 하기. 그림 1> OBJ 파일 생성전. 1. 그림 1>에서 각각의 어셈블리어 파일과 C 파일이 있는 것을 확인 할수 있지만 아직 까지 실행 파일을 만들 수 있는 상태가 아니다. 실행 파일을 만들려면 일단 오브젝트 파일인 OBJ확장자 파일을 생성 해야 한다. 그림 2> first.asm 컴파일 명령어. 2. 그림 2>에서 first.ams이라는 어셈블리어 파일을 컴파일 하여 OBJ파일을 생성하기 위해 nasm 이라는 컴파일러를 사용 하였다. 일단 컴파일러는 masm 이라고 마이크로 소프트용 어셈블리어 컴파일과 nasm 이라는 컴파일러가 있다. 그 중에서 nasm 이라는 컴파일러로 first.asm 이라는 파일을 컴파일 하여 OBJ 파일을 생성 한다. 그림 3> first... 2012. 8. 22.
728x90
반응형