x86 Assembly🤖: Essential Part(1) # 서론 - 컴퓨터 속에는 복잡한 논리적 인과관계가 존재하고, 여러 개체가 상호작용하며, 그 세계에서 통용되는 기계어(Machine Code)가 있음 - 해커가 하는 일은 그 거대한 세계의 허점을 공격하여 시스템을 장악하는 것 - 시스템 해커: 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 함 - David Wheeler: EDSAC을 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안 - 어셈블러(Assembler): 일종의 통역사, 개발자들이 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환 > 어셈블리어가 기계어보다는 인간이 이해하기 쉬웠으므로, 개발자들은..
Reversing Engineering - 2. x64 기초 1. Introduction # Intorduction - 디스어셈블 과정을 거쳐 나온 어셈블리 코드를 이해하기 위해 어셈블리 코드에 대해 공부할 것 - 어셈블리 코드는 기계 코드와 1:1 대응 - 기계 코드가 실제로 동작할 CPU에 따라 기계 코드 역시 달라지게 됨 > CPU에 따라 어셈블리 코드도 다름 2. 들어가기에 앞서 # Instruction Cycle - 어셈블리 코드는 기계 코드와 대응되므로, 기계 코드가 동작할 CPU가 어떤 역할을 하고 어떻게 동작하는지 알아보는 것이 어셈블리 코드를 이해하는데 도움이 됨 - CPU의 기본적인 동작 과정 > CPU: 다음 실행할 명령어를 읽어오고(Fetch) → 읽어온 명령어를 해석한 다음(Dec..