Hack/Reversing
-
PE Header(2)Hack/Reversing 2015. 2. 2. 02:55
DOS Stub DOS Stub이다. DOS Stub이 없어도 파일 실행은 정상적으로 된다. 단지 DOS Stub은 16비트 호환모드에대한 여부를 나타내는것이다. 드래그한곳은 16비트 어셈블리 명령어로, 16비트에서 실행할경우 WriteString()함수로 This program cannot be run in Dos mode를 출력시키고 종료한다. 32비트 윈도우즈는 해당 스튭코드들을 무시하고 실행하기때문에 해당 출력결과를 보기위해서는 16비트에서 돌려야한다.
-
PE HeaderHack/Reversing 2015. 2. 2. 02:44
DOS Header DOS HEADER 구조체이다. 해당 구조체는 2바이트씩 20개로, 40바이트 만큼의 크기를 가지고있다. 여기서 제일 중요한 멤버에는 e_magic과 e_lfanew이다. e_magic은 헥스로 exe파일을 한번쯤 열어보았으면 누구나 봤을것이다. e_magic값은 4D5A 즉, DOS Signature다. 아스키로는 MZ를 나타낸다. MZ는 DOS를 설계한 Mark Zbikowski가 자신의 이름을 본딴것이다. e_lfanew는 NT Header의 offset을 표시한다, 값은 가변적이다. MZ시그니처가 역시 존재한다. 저만큼이 IMAGE_DOS_HEADER다. e_lfanew값은 000000F0이다. 가변적이기때문에 이 값은 exe마다 다르다.
-
CreateRemoteThread()Hack/Reversing 2015. 1. 27. 01:41
해당함수는 스레드를 생성할때 사용된다. kernel32의 CreateRemoteThread() 해당함수의 프로토타입은 아래와같다. hProcess :스레드가 생성될 프로세스의 핸들lpThreadAttrubutes : 스레드핸들을 자식 프로세스에게 상속할수있는지의 여부를나타냄(NULL로설정시 상속되지않음)dwStackSize : 스레드의 스택크기lpStartAddress : 스레드가 실행될 메모리주소, 앞으로다룰 인젝션이 잘되게하려면 해당 파라미터로 주소를 잘 집어넣어주어야한다.lpParameter: 해당 파라미터에 들어오는 메모리주소는 lpStartAddress에 전달되는 함수파라미터주소dwCreationFlags : 스레드가 시작되는 방식지정 0: 바로스레드실행 0x00000004: 잠시 중지,0x00..
-
-
Message HookingHack/Reversing 2015. 1. 21. 03:16
메세지 후킹은 말그대로 메세지를 가로채는 기술이다. user32.dll의 setWindowsHookExA()함수를 사용하는데, 원리는 아래와같다. 윈도우(창)는 키보드와 마우스등에서 인풋되는것들을 모두 Hook Chain을 통해서 처리한다. 그럼, 훅체인에 원하는 프로세스에대한 포인터를 등록하게되면 메세지가 들어올때 그 코드가짜여진대로 실행된다. 대표적인 메세지 후킹 방법으로 키로거가 존재한다. 후킹 요약 해커 사용자SetWindowsHookExA() - > Hook Chain