전체 글 (26) 썸네일형 리스트형 [리버싱] IDA 사용해보기 IDA란? Hex-Rays사에서 제작한 디스어셈블러 IDA의 메인 기능은 디스어셈블이지만 이 외에도 여러환경에서의 디버깅과 다양한 아키텍처 디컴파일과 같이 여러가지 기능을 제공 Helloworle.exe 파일 정적 분석해보기 우선 메인함수를 찾아보도록 하겠습니다. 메인 함수를 찾는데에는 크게 두가지 방법이 있는데요 첫번째는 프로그램의 시작 지점인 진입점(Entry Point, EP)부터 분석을 시작하여 원하는 함수를 찾을 때까지 탐색하는 것이고, 다른 하나는 대상 함수의 특성이나 프로그램의 여러 외적인 정보를 이용하여 탐색하는 방법입니다. 오늘은 후자의 방법을 이용하여 분석해보도록 하겠습니다. Shift+F12를 눌러 String창을 불러옵니다. Helloworld 문자열을 찾아줍니다. 저는 Ctrl+F.. [리버싱] PEViewer로 메모장 분석하기 DOS Header 주요 멤머 변수로는 e_magic 멤버면수와 e_Ifanew 멤버변수가 있습니다. e_magic 멤버변수는 DOS Signature로 PE파일을 나타내는 첫 바이트입니다. e_Ifanew 멤버변수는 NT Header가 시작되는 위치의 옵셋을 뜻합니다. e_Ifanew 값이 가리키는 위치에 NT Header 구조체가 존재해야합니다. 앞에 2바이트(e_magic변수)를 봤을 때 4D 5A가 먼저 적힘을 보아 little Endian을 통해, 시작점이 5A4D임을 확인할 수 있습니다. e_Ifanew를 봤을때 NT_Header의 시작점이 0X000000F0임을 알 수 있습니다. DOS Stub DOS 환경에서 실행되는 코드를 가진 영역, 일종의 옵션으로 없어도 파일 실행에 문제는 없습니다... [리버싱]X86 Assembly X64 어셈블리 언어 기본구조는 명령어와 피연산자로 구성됩니다 ex) move eax, 3 여기서 move가 명령어, eax와 3가 각각 피연산자1, 2 입니다. move는 피연산자1에 피연산자2의 값을 대입하라는 명령어입니다. 피연산자에는 상수(Immediate Value), 레지스터(Register), 메모리(Memory) 총 3종류가 올 수 있습니다. 메모리 피연산자는 []로 둘러싸인 것으로 표현되며 앞에 크기 지정자(Size Directive) TYPE PTR이 추가될 수 있습니다. 타입의 종류 BYTE 1바이트 WORD 2바이트 DWORD 4바이트 QWORD 8바이트 X86-64 어셈블리 명령어 데이터 이동 move dst, src src의 값을 dst에 옮김 lea dst, src src의 유.. 이전 1 2 3 4 5 6 7 ··· 9 다음