[어셈블러] 어셈블러로 함수의 호출 원리를 알아보자!! 2탄
시작하기 전에... 사외교육을 갔다가 너무 내용이 좋아서 정리하면서 글을 올리게 되었다. 교육내용을 모두 올린건 은 아니고 일부분을 재구성해서 올렸다. 강석민 강사님께 감사 드립니다^^ cafe.naver.com/cppmaster 3. 교시 - 어셈으로 함수 호출과 스택프레임, calling convention 이번에는 어셈코드를 본격적으로 짜보면서 어셈으로 함수 호출방법에 대해 알아 보도록 하자. 2교시때와 마찬가지로 함수호출할 때 인자 전달 방법과 리턴방법에 대해 알아 볼 것이고, 함수가 호출될 때 스택의 관리에 대해 고민해 볼 것이다. 마직막으로 이를 토대로 calling convention에 대해 알아 보고, inline함수에 대해 간단히 알아 보도록 하자. 그전에!! 어셈을 컴파일 하고 obj파..
2008.08.30
[어셈블러] 어셈블러로 함수의 호출 원리를 알아보자!! 1탄
시작하기 전에... 사외교육을 갔다가 너무 내용이 좋아서 정리하면서 글을 올리게 되었다. 교육내용을 모두 올린건 은 아니고 일부분을 재구성해서 올렸다. 강석민 강사님께 감사 드립니다^^ cafe.naver.com/cppmaster C언어의 함수 호출 원리 함수를 호출할 때 인자값과 리턴값이 있기 마련이다. C언어에서는 어떤방법으로 인자값와 리턴값을 처리할까? 결론부터 말하면 인자값은 스택에 넣어서 함수로 가고, 리턴값은 eax레지스터에 넣어 돌려 보내준다. int add(int a, int b) { return 10; } void main() { add(1, 2); } add(1,2)의 함수를 호출 할 때 인자값은 스택에 넣는다고 했다. 스택이라는 자료구조의 특성상 인자값은 뒤에서부터 스택에 쌓이게 된다..
2008.08.30
no image
[WinDbg] vmware와 함께 사용하기
참조 : http://silverstr.ufies.org/lotr0/windbg-vmware.html 커널 영역에서 프로그램을 하다보면 디버깅이 반드시 필요하다.. 디바이스 드라이버를 공부하다가 WinDbg라는 디버깅 툴을 알게 되었고 컴퓨터에 세팅을 해보았다. 전에 선배가 해주었는데 오는 인터넷을 뒤적거리면 하나하나 내 손으로 해 보았다. 먼저 vmware의 guest os에 시리얼 포트를 만들어 주어야 한다. guest os를 우클릭 해보면 settings를 클릭하면 나오는 화면이다. 여기서 Add를 눌러서 Serial port를 추가 해준다. "Output to named pipe"를 클릭하고 각 항목을 위의 그림과 같이 설절해 준다. 설정이 다 되면 마지막으로 "I/o mode "에서 Yield ..
2008.08.27
Struct Packing!!
요새 C언어로 코드를 짜다 보니까 자잘자잘한 컴파일러 옵션이나 문법을 알게 된다. 전에는 몰랐던 구조체의 메모리 할당에 대해서 잘 알게 되었다. 컴파일러가 구조체의 메모리를 할당할때 가장 큰 타입의 메모리 곱하기 변수 개수를 한다는 것이다. struct AAA { int a; char b[2]; int c; }; 이렇게 하면 할당되는 메모리는 10byte일 것같지만 실제로 12byte가 된다. 속도를 좀더 올리려는 목적에서 그런다고 한다. 그리고 남는 2byte는 b의 뒤에 빈공간이 있다. 하지만 특별한 상황에는 실제 메모리를 정확하게 잡아야 할때가 있기 때문에 #pragma pack( ... )으로 해결 할 수 있다. #pragma pack( push ) #pragma pack( 1 ) // 구조체 선..
2008.08.01
많이 혼나야 겠어ㅠ
오늘 과제 하다가 계속 에러가 나서... 평소에 존경하는 선배의 블로그에 글을 남겼다.. 별 생각없이 올렸다가 과외를 마치고 오니 원근이 형이 "니 이제 죽었다! 승훈이형이 니 친구추가하 고 기다리고 있다! 화났나!"라고 하는 순간 가슴이 철렁했다. 네이트에서 승훈이형한테 첫 만남이지만 엄청 혼났다.. 이 바닥도 예의가 있는데 그것도 같은 학교 같은 멤버십 선배한테 예의 없이 질문했다고ㅠ 검색도 제대로 하지 않고.. 코드도 제대로 보지 않고 올렸다고 혼내고 나 혼자 다시 에러를 찾아 내도 록 시키셨다. 정망 혼나도 싸다..ㅠ 나도 평소에 친구들이나 누가 물으면 책에 있는거 묻는다고 귀찮아 하는데ㅠ 느낀점도 많다. 학교 선배라고 해도 나이 차이가 많이나서 한번도 본적이 없는데 이렇게 관심을 갖어 주시는것에..
2008.07.24
매크로때문에 식겁할뻔..ㅋ
코드를 짜다가 매크로함수를 만들었는데 계속 에러가 나서 참 애를 먹었다.. 매크로 함수에서 시작 괄호를 띄어 쓰면 안되는 줄 모르고 ...ㅋㅋ visual 2008에서 코딩하는데 에러 메세지가 더욱 정교해 졌다는데 나한테는 이상한 소리만 하는지.ㅠㅠ
2008.07.22
읽고 싶은 책이 생겼네.ㅋ
공부하다 보니까 보안쪽이 아주 먼 곳은 아니라는 것이 느껴졌다. 윈도우즈에서 시스템프로그래밍을 공부하는데 '루트킷'이라는 책을 알게 되었는데 보안에 관해서 이야기하는데 재밌을꺼 같다. 돈도 없는데 책을 질러버릴 것 같은..ㅠ 원서로 읽고 싶지만 아직 내공이 부족해서... 원서를 후딱 읽어 버리는 그 날 까지~ 화이팅!! 루트킷은 해커들이 공격하고자 하는 시스템에 지속적이면서 탐지되지 않은 채로 교묘히 접근할 수 있는 최고의 백도어라고 할 수 있다. 루트킷에 관한 최고의 전문가 두 명이 최초로 종합적인 루트킷 가이드를 집필했다. 루트킷이 무엇이고 어떻게 작동하며 제작하는지, 어떻게 루트킷을 탐지하는지 등에 대해 차례로 설명한다. rootkit.com의 그렉 호글런드와 제임스 버틀러는 블랙 햇에서 루트킷과 ..
2008.07.14
no image
2008 멤버십 오픈데이
2008.06.06
no image
히라가나 가타가나 50음도
다 똑같이 생겼지만 자세히 보면 조금 다른듯... -_-;;; 무조건 외우고 봐야함
2008.04.04