공부/리버싱핵심원리

    13장 PE File Format

    보호되어 있는 글입니다.

    11장 Lena's Reversing for Newbies

    어느덧 1부 마지막이다. 쌩 기초를 다 끝내려면 아직 먼 것 같다. 📖 1) 문제 파악 우선 먼저 실행해보자. 모든 성가신 잔소리를 없애고 registration code를 찾으라고 한다. MsgBox가 매우 많이 나올 것 같은 예감이다. 그냥 평범하게 생긴 것 같다. asdf로 Regist 해보자. 잘 실행되는 것은 확인이 된다. x32dbg로 뜯어보도록 하자. (성공한다면, IDA로도 뜯어보자.) 저번에 이런 코드를 봤던 것 같다. 간접호출 아니었나 ?? (00401162 주소에서 ThunRTMain 함수가 보인다.) Registration Code를 어떻게 찾을 지 생각해보자. 먼저 문자열들을 보자 프로그램을 실행했을 때 확인할 수 있는 문자열들이 나온다. 해당 주소로 가보자. 004028BD 주소..

    10장 함수 호출 규약 (Calling Convention)

    함수 호출 규약 (Calling Convention)에 관하여 알아보자. (학교 수업시간에 간단하게 듣기는 했다.) 1. 함수 호출 규약 Calling Convention은 '함수를 호출할 때 파라미터를 어떤 식으로 전달하는가?' 에 대한 일종의 약속이다. 우린 이미 함수를 호출하기 전에 파라미터를 스택을 통해 전달한다는 것을 알고있다. 스택이란, 프로세스에서 정의된 메모리 공간이며 주소가 줄어드는 방향으로 자라난다. PE헤더에 그 크기가 명시되어있다. 즉 프로세스가 실행될 때 스택 메모리의 크기가 결정된다. (malloc, new 같은 동적메모리는 영역이 다르다. 그래서 꼭 free를 해주어야 한다.) 함수가 실행완료 되더라도 스택내의 파라미터는 그대로 둔다. 스택에 저장된 값은 임시로 사용하는 값이기..

    9장 Process Explorer

    아직 8장을 완벽하게 끝낸 것은 아니다. 하지만 3개월 가량 이 책을 공부하지 않았고 다시 8장을 공부한다는 것은 비효율적이라 생각이 되기에 먼저 9장을 나가자. 나는 세계 최고의 해커가 될거니까 ㅎㅎ 1. Process Explorer Windows 운영체제에서 최고의 프로세스 관리 도구라고 한다. https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer Process Explorer - Windows Sysinternals Find out what files, registry keys and other objects processes have open, which DLLs they have loaded, and more. doc..

    8장 abex' crackme #2 (abexcm2) - Retry

    이전에 못끝낸 8장을 마무리하려고 한다. 하지만 감을 잃어버렸기에 처음부터 다시 진행하도록 하자. 1. Visual Basic 파일 특징 PEID로 분석을 하면 Microsoft Visual Basic 으로 제작되었음을 알 수 있다. Visual Basic은 초등학교 때 이후로 공부를 한 적이 없는 언어이다. 간단하게 VB의 특징을 짚고 넘어가보자. VB 전용 엔진 VB 파일은 MSVBVM60.dll (MicroSoft Visual Basic Virtual Machine) 이라는 VB 전용 엔진을 사용한다. The Thunder Runtime Engine 이라고도 불리운다고 하니, 알아두자. 메시지 박스를 사용한다면 VB 소스코드에서 MsgBox() 함수를 사용한다. 이 때 VB컴파일러는 MSVBVB60..

    8장 abex' crackme #2 (abexcm2)

    먼저 이 프로그램은 Visual Basic 으로 제작되었다. VB는 MSVBVM60.dll 이라는 VB 전용 엔진을 사용한다. (Visual Basic 6.0이다. 뭐 이런건가?) 또한 이 엔진은 The Thunder Runtime Engine 이라고 불리운다. 메시지 박스를 출력하고 싶을 때 VB 코드에서 MsgBox()를 출력하는데, 이런 것들이 사용 예이다. VB 컴파일러는 실제로 MSVBVM60.dll!rtc MsgBox()함수를 호출하게 하고, 이 함수 내부에서 Win32API인 user32.dll!MessageBoxW()함수를 호출해주는 방식으로 작동된다. (MsgBox()함수는 VB에서 MessageBoxW()함수를 부르기 위한 함수인가 ?) VB 소스코드에서 user32.dll!Messag..