물건이나기계장치혹은시스템등의구조,기능, 동작등을분석하여 그원리를이해하며단점을보완하고새로운아이디어를추가하는작업
= '완성품의설계도없이구조와동작과정을알아내는' 모든단계를의미
과정)
소스 코드가없는상태에서컴파일된대상소프트웨어의 구조를여러가지방법으로분석 메모리 덤프를 비롯한 바이너리 분석 결과를 토대로 동작원리와 내부구조파악 이를 바탕으로 원래의 소스가 어떻게 작성된 것인지 알아냄
→ 패치 , 크랙 , 게임핵 제작 등에 이용됨
정적분석방법(Static Analysis)
파일을 실행하지 않고 겉모습을 관찰하여 분석하는 방법
파일종류나크기,헤더(PE)정보, AP, 내부문자열, 실행 압축 여부, 등록 정보, 디버깅 정보, 디지털 인증서 등의 다양한 내용을 확인하는 것
동적분석방법( DynamicAnalysis)
파일을 직접실행시켜 분석하고디버깅통해 코드흐름과메모리상태 등을자세히살펴보는방법
파일, 레지스트리, 네트워크 등을 관찰하면서 프로그램 행위 분석 디버거를 이용하여 프로그램의 내부 구조와 동작 원리 분석 가능
미국국립 표준협회(ANSI)에서 표준화한 정보교환용7비트부호체계
[ 33개의출력불가능한제어 문자 +95개의출력 가능한 문자]
• 0x00(0), NUL: 널문자(10)
• 0X0A(10),LF:개행(LineFeed),줄바꿈
• OxOD(13), CR: 57/(Carriage Return)
• 0x00~0x1F, 0x7F(0~31, 127): 제어문자또는비인쇄문자
• 0x20(32):스페이스(공백)
• 0x21~0x2F(33~47), 0x3A~0x40(58~64), 0x5B~0x60(91~96),0x7B~0x7E(123~126) :특수문자
• 0 X 3 0 ~ 0 x 3 9 ( 4 8 ~ 5 7 ) : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7, 8 , 9 숫 자
• 0x41~0x5A(65~90):A부터Z까지알파벳대문자
• 0X61~0x7A(97~122) :a부터z까지알파벳소문자
엔디안(Endianness)
컴퓨터 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법
빅 엔디안(Big-endian)
최상위바이트(MSB- Most Significant Byte)부터 차례 로 저장하는 방식
리틀 엔디안(Little-endian)
최하위바이트(LSB- Least Significant Byte)부터 차례로저장하는방식
프로그램의 실행을 위해 컴퓨터의 운영체제에서 할당하는 공간
(메모리공간은 크게Stack, Heap, Data, Code(text)로, 4개의영역으로나눌수있음)
RAM( =주기억장치, 메모리)
자유롭게읽고쓸수있는기억장치 사용중인프로그램이나데이터가저작됨 휘발성 메모리
ROM
기억된내용을읽을수만 있는기억장치 변경가능성이없는시스템 소프트웨어를 기억시키는데 이용 비휘발성메모리
기계 코드가 실행되는 한 번의 과정
CPU에서 명령어를 실행하는 동안 필요한 정보를 저장하는 기억 장소 레받을수도 지스터의 개수와 크기는 중앙처리정치 종류에 따라 다름
목적에 따라 레지스터 종류가 나눠짐- > 전용/범용
범용레지스터(General Register)
명령어 포인터레지스터(EIP=Extended Instruction Pointer)
Intel&AT&T
둘 다 어셈블리어로 서로 호환되지 않는 문법 지님

Intel Syntax: <명령어><피연산자1><피연산자2>; 주석
Ex) mov eax, 5
데이터 이동
스택 조작
연산
흐름 제어
프로시저
window 터미널에서 문제 파일 실행

IDA를 활용해서 문제풀이

F5를 클릭하여 디컴파일

sub_140001000을 클릭하여 내부코드 확인

"Compar3_the_string" 확인 후 window 터미널에 삽입

gdb 와 pwngdb 설치



IDA를 활용해서 문제풀이

F5를 클릭하여 디컴파일 -> 326 확인

326 확인 후 pwndbg int_reversing에서 run 입력 후 삽입

IDA를 활용해서 문제풀이

F5를 클릭하여 디컴파일 -> Hacked_By_ISly 확인

Hacked_By_ISly 확인 후 pwndbg string_reversing에서 run 입력 후 삽입
