Reverse Engineering
-
[리버싱 핵심원리 study] 7장 Stack FrameReverse Engineering 2020. 12. 1. 02:02
1. Stack Frame 개념 설명 Stack Frame이란 ESP(스택 포인터)가 아닌 EBP(베이스 포인터) 레지스터를 이용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소 등에 접근하는 기법을 말한다. ESP 값은 프로그램 안에서 수시로 변하기 때문에 EBP를 함수 시작 전에 저장하고 유지하면 안전하게 변수, 파라미터, 복귀 주소 등에 접근할 수 있다. Stack Frame의 어셈블리 코드 부분은 다음과 같다. PUSH EBP MOV EBP, ESP ... ... ... MOV ESP, EBP POP EBP RETN 함수가 호출되고 나면 PUSH EBP를 통해 기존 EBP값(함수 호출 이전의 EBP 주소)을 저장한다. 이후에 MOV EBP, ESP를 통해 ESP 값을 EBP에 저장하게 되면, 함수..
-
[dreamhack.io study] x64dbg로 hello world 디버깅해보기Reverse Engineering 2020. 11. 26. 03:15
이번 포스팅에서는 x64dbg를 이용하여 hello world를 디버깅해보겠다. dreamhack.io의 x64dbg사용법 강좌를 참고하였다. 1. x64dbg 다운로드 우선 x64dbg를 이전 Debugging Tools 작성글에 나와있는 링크를 통해 다운로드한다. 다운로드한 후 압축을 해제한 후, release폴더에 있는 x96dbg.exe 파일을 실행해보자. 이전 포스팅에서도 설명하였듯이, x64dbg는 32-bit 뿐만 아니라 64-bit도 지원한다. 원하는 모드를 선택하면 다음과 같은 창이 나온다. 위 사진은 x64dbg를 실행한 후, 임의로 실행파일은 열었을 때 나오는 화면이다. Ollydbg와 매우 유사한 것을 확인할 수 있으며, 단축키도 거의 비슷하다. 몇몇 주요 단축키들을 정리하면 다음과..
-
[리버싱 핵심원리 study] 6장 abex' crackme #1 분석Reverse Engineering 2020. 11. 25. 02:59
이번 포스팅에서는 crackme라는 프로그램을 실행하고 분석하여 최종적으로 crack 하는 것이 목적이다. 1. 프로그램 실행 우선 프로그램을 실행하여 어떠한 프로그램인지 알아보자. 이후 확인 버튼을 눌러보자. 확인 버튼을 다시 누르면 프로그램은 종료가 된다. 첫 번째 캡처 화면에서 보이듯이 HD를 CD-Rom으로 인식하게끔 크랙을 진행해야 함을 유추해 볼 수 있다. 2. Debugging (with Ollydbg) Ollydbg로 이제 본격적으로 디버깅을 해보자. 프로그램을 Ollydbg로 열면 다음과 같은 코드를 볼 수 있다. 어떠한 '조건'을 만족시켜야 원하는 대로 크랙을 할 수 있고, 그 '조건'을 만족시키지 못하기 때문에 프로그램이 그대로 종료되는 것 같다. 즉, '조건'과 관련된 명령인 분기문..
-
[리버싱 핵심원리 study] 2장 Hello World! 리버싱Reverse Engineering 2020. 11. 22. 03:32
처음 프로그래밍 언어를 배웠을 때, 아마도 가장 먼저 Hello World!를 출력해보는 프로그램을 작성할 것이다. 마찬가지로 리버싱에서도 Hello World! 프로그램을 분석해보는 방식으로 시작한다. (코드 작성은 Microsoft Visual C++ 2010 Express을 기준으로 하였다.) 1. 프로그램 작성 먼저 다음과 같은 코드를 작성하여 Hello World! 문구를 출력하는 프로그램을 만들어보자. #include "windows.h" #include "tchar.h" int _tmain(int argc, TCHAR *argv[]) { MessageBox(NULL, L"Hello World!", L"www.reversecore.com", MB_OK); return 0; } (HelloWor..
-
Debugging ToolsReverse Engineering 2020. 11. 20. 02:15
1. Ollydbg http://www.ollydbg.de/ OllyDbg v1.10 www.ollydbg.de 32-bit debugger이다. 위 첨부된 링크에서 다운 받을 수 있으며, 가벼워서 처음 리버스 엔지니어링을 접할 때 이용하기에 좋다. 앞으로 작성할 리버싱 핵심원리 공부 관련 포스팅에서는 Ollydbg를 이용하여 리버싱을 할 것 같다. 64-bit program에서 debugging 할 수 없는 제약사항이 있다. 2. x64dbg https://x64dbg.com/#start x64dbg Built on open-source libraries x64dbg uses Qt, TitanEngine, Zydis, Yara, Scylla, Jansson, lz4, XEDParse, asmjit an..