Reversing 썸네일형 리스트형 Lena Reversing tutorial 17 - Removing NAGs 프로그램 동작 방식Nag 창은 프로그램을 실행하거나 버튼을 누를 때 나타나는 오류창이 문제에서 해야하는 것은 Nag 창 1, 2를 없애는 것 콜 스택Call Stack은 프로그램에서 사용하는 서브루틴에 대한 정보를 저장하기 위한 자료구조Call Stack을 사용하는 목적은 서브루틴 간 호출 순서를 추적할 수 있는 정보를 저장하는 것 [ 콜 스택 분석 ]Open file → Run (F9) → Pop up Nag1 → Pasue (F12) → Check Call Stack [ Called from ] : 호출하는 코드[ Procedure ] : 호출되는 서브루틴 목적 : ReverseMe.NAGs.exe 모듈에서 Nag 창을 띄우는 코드를 찾는 것 사용자 코드에서 서브루틴을 호출하는 코드를 못 찾을 수도.. 더보기 abex crackme 5 프로그램 동작 방식 Delphi마이크로소프트 윈도우 응용프로그램을 위한 통합개발환경(고속개발도구) serial을 입력하는 창 GetVolumeInformation() 함수: 지정된 루트 디렉터리가 속한 파일 시스템 정보와 볼륨 정보를 가져오는 함수 BOOL GetVolumeInformationA( [in, optional] LPCSTR lpRootPathName, [out, optional] LPSTR lpVolumeNameBuffer, [in] DWORD nVolumeNameSize, [out, optional] LPDWORD lpVolumeSerialNumber, [out, optional] LPDWORD lpMaximumComponentLength, [out.. 더보기 abex crackme 4 프로그램 동작 방식 Visual Basic: Microsoft사에서 쉽고 간편하게 Windows 프로그램을 만들 수 있게 출시한 프로그래밍 툴이자, 프로그래밍 언어MSVBVM60.DLL에 있는 API를 호출하면서 동작을 수행함.이벤트 기반 언어 → 그래픽을 기반으로 화면을 구성하고 이벤트를 등록해 프로그램을 만듦.함수와 변수는 관련된 Event Handler에 종속되어있다.Interpreter 방식으로 동작함기계어가 아닌 중간 상태인 p-code 상태로 저장되어있어서 프로그램 실행시 p-code를 기계어로 바꿔주는 작업이 추가로 필요함. 임의의 숫자를 입력하더라도 Registered 버튼이 활성화되지 않음.올바른 Serial 입력하면 Registered 버튼이 활성될 것으로 보임. API 검색오류메시지를.. 더보기 abex crackme 3 프로그램 동작 방식Detect It Easy 프로그램을 통해서 PE 구조를 살펴볼 수 있음프로그램을 분석하기 전에 가장 먼저 알아야 할 것은 어떤 언어로 개발되었고, 패킹이 되었는지 알아보는 것.Delphi로 만들어졌다는 것을 알 수 있음. 실행 화면 오류창 어떤 이름의 파일을 생성해야하는 지 알아내야함.생성한 파일을 규칙에 맞도록 변경. 함수 호출 규약 (Calling Convention): 함수를 호출할 때 인자를 전달하는 방식이나, 함수 실행이 끝나고 스택을 정리하는 방식에 대한 약속cdecl인자가 오른쪽에서 왼쪽으로 순서대로 스택으로 전달된다. 함수가 종료될 때 호출자가 피호출자의 스택 프레임을 정리한다.stdcall인자가 오른쪽에서 왼쪽으로 순서대로 스택으로 전달된다, 함수가 종료될 때 피.. 더보기 abex crackme 2 프로그램 동작 방식사용자의 Name과 관련있는 Serial을 찾아내야함.Name이 짧은 경우Serial이 틀린 경우 프로그램 실행 (Paused & Running)프로그램을 실행하면 사용자 입력을 기다리는 입력 창을 먼저 띄운다.Name과 Serial을 입력하고 Check 버튼을 누르면 처리 결과를 보여주고 다시 사용자 입력을 기다린다. → 사용자 입력을 기다리면서 프로그램이 계속 기다리는 것.디버거로 프로그램 실행시 Entry Point에서 실행이 멈춘다.프로그램 상태 = Paused프로그램 실행을 하면 MSVBUM60.ThunRTMain()함수에서 실행이 멈춘다.프로그램 실행 상태 = RunningName과 Serial를 입력하는 창을 띄워주고 사용자 입력을 가미하는 로직 내부로 들어가 있다는 것을 .. 더보기 abex crackme 1 프로그램 동작 방식목적 : 프로그램을 실행했을 때 하드디스크가 CD-Rom으로 인식되도록 변경 Entry PointEntry Point :디버거를 통해 프로그램을 열면 실행되지 않고 멈추는 지점OS가 사용자 프로그램에 최초로 제어를 넘기는 지점프로그래머가 만든 실행 코드가 최초로 실행되는 지점 PE 구조의 모든 실행 파일은 Header에 Entry Point가 RVA(Relative Virtual Address)로 지정되어 있다.프로그램은 로딩되면서 Base Address가 할당되고, 메모리에 Bass Address + RVA (베이스 주소와 상대주소가 더해진 위치)에 데이터가 저장된다. Address of Entry Point의 Data 값 00001000 → 메모리에 저장될 때 사용될 상대주소가 1.. 더보기 Introduction to reversing - Chapter 01 리버싱을 위한 프로그램 실행 구조컴퓨터의 기본 구성 요소 : CPU, Memory, HDD프로그램을 실행할 수 있는 파일(exe)은 기본적으로 HDD에 저장됨.PE(Portable Executable) 파일 = 윈도우의 실행파일Header와 Body로 구성됨Header : 프로그램을 실행하는 데 필요한 기본 정보 & 저장 위치를 알려주는 배치 정보 포함Body : Code & Dataexe, dll, ocx 등 다양한 종류가 있음PE 포멧 (Header + Body)로 구성된 실행 파일 클릭→ OS에 있는 Loader는 PE Header 정보를 분석 → PE Body에 있는 코드와 데이터를 Memory에 배치Code프로그램 코드가 들어감Data정적 변수 & 전역 변수Heap동적 메모리 할당Stack함수 .. 더보기 [Dreamhack] rev-basic-8 Reversing Basic Challenge #8이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요! 획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요. 예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana} sub_140001000 함수0x15 → 21byte_14000300 AC F3 0C 25 A3 10 B7 25 16 C6 B7 BC 07 25 02 D5 C6 11 07 C5 (unsigned __int8)(-5 * *(_BYTE *)(a1 + i))1. (-5) * a1[i] 연산a1[i]가 unsign.. 더보기 이전 1 2 3 4 다음