Windows Trampoline

최근에 약간 실력을 키우기 위해서 아시는분에게 과제를 받고있다. 위 과제는 Foo을 호출시시작과 끝에 Boo와 Hoo과 출력되게 만들어야한다는것이다. 처음에는 std::cout와 std::endl 오버로딩으로 풀었지만 이는 답이 아니였다. 그래서 생각해낸게 코드패치이다. 코드 패치란 파일이나 메모리상의 코드영역을 수정하는 것이며 이를 통해 기존의 동작이 아닌 별도의 동작을 하게되는것이다. 코드 패치하는 코드는 위와 같다. 기본적으로 코드영역은 읽기 영역이기 때문에 쓰기 영역으로 소개 더보기 Windows Trampoline[…]

WINAPI INSTANCE란 도대체 무엇일까?

최근에 디버깅 관련해서 보고있습니다. 책중에서 winapi중에 INSTANCE이 값이 도대체 무엇인가 라는 답 하나를 찾았습니다. 결론부터 말하면 PE구조의 imagesBase + entry Point 값입니다 샘플코드는 VS에서 기본적으로 제공하는 Windows Project 코드입니다. 테스트 하기위해 아래에 randomized base address을 해제하겠습니다. 이 기능은 WIndows에서 Images Base 주소를 랜덤으로 해주는 기능입니다. 이 기능을 해제한후에 디버깅을 한뒤에 wWinMain의 인스턴스를 봐주시기 바랍니다. 해당 소개 더보기 WINAPI INSTANCE란 도대체 무엇일까?[…]

윈도우 DLL 디펜더시 보기

최근에 꽤 재미있는 툴을 발견했습니다. MS에서 공식적으로 해당프로그램이 어떤 DLL을 디펜던시 하는지 알수있도록 툴을 따로 제공하고있네여. 링크는 다음과 같습니다. http://www.dependencywalker.com/ 아무 DLL이나 exe를 클릭하게되면 디펜더시를 확인할수 있습니다.

WIN api를 이용한 스레드 생성

예전에 적었던 포스트를 정리 차원으로 해당 글을 포스팅합니다. 예전 싱글코어인 시절에는 운영체계가 여러프로게스들이 실행되도록 스케줄링을 작업을 해주었지만 (이를 멀티프로세싱) 지금 시점으로 멀티코어가 당연시 되면서 운영체계에서 여러코어들에 대해 멀티테스킹은 물론이와 멀티스레딩도 동시에 실행하게 되었습니다. 좀더 간단히 이야기하면 하나의 작업을 동시에 실행시키겠다라는 말이 됩니다. _beginthread함수도 있지만 이게 왜 만들어 졌는지에 대해 이야기하기전에 우선 CreateThread함수를 살펴보겠습니다. msdn의 createthread 소개 더보기 WIN api를 이용한 스레드 생성[…]

WinApi Handle이란

WinApi를 하게 되면 주로 만나는 단어가 Handle이다. 도대체 이건 무엇일까? 라고 책을 봐도 이거에 대해 명확하게 설명이 되어있지 않다.  또한 MSDN에서도 다음과같은 내용말고는 없다. An object is a data structure that represents a system resource, such as a file, thread, or graphic image. An application cannot directly access object data or the system resource that an object 소개 더보기 WinApi Handle이란[…]