[어셈블리어 분석 실습] example 4
example4.asm의 코드는 아래와 같다. # example4.asm .file"example4.c" .section.rodata .LC0: .string"result : %d\n" .text .globlfunction .typefunction, @function function: .LFB0: .cfi_startproc pushq%rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq%rsp, %rbp .cfi_def_cfa_register 6 subq$16, %rsp movl%edi, -4(%rbp) movl%esi, -8(%rbp) movl-4(%rbp), %eax imull-8(%rbp), %eax movl%eax, %esi movl$.LC0, %edi mov..
2022. 5. 8.
[어셈블리어 분석 실습] example 2
example2.asm의 코드는 아래와 같다. # example2.asm .file"example2.c" .section.rodata .LC0: .string"result : %d \n" .text .globlmain .typemain, @function main: .LFB0: .cfi_startproc pushq%rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq%rsp, %rbp .cfi_def_cfa_register 6 subq$16, %rsp movl$10, -12(%rbp) movl$20, -8(%rbp) movl-8(%rbp), %eax movl-12(%rbp), %edx addl%edx, %eax movl%eax, -4(%rbp) movl-8(%rbp)..
2022. 5. 8.
[Dreamhack Reverse Engineering] STAGE 4
[x86 Assembly] 1. 어셈블리 언어 1) 어셈블리 언어 - 컴퓨터의 기계어와 치환되는 언어 - CPU에 사용되는 ISA의 종류만큼 많은 수의 어셈블리어가 존재 ex. x64에는 x64의 어셈블리어 존재 2. x64 어셈블리 언어 1) 기본 구조 - 명령어 + 피연산자로 구성 - 명령어 : 동사에 해당 - 피연산자 : 목적어에 해당 - 예시 2) 명령어 데이터 이동 mov, lea 산술 연산 inc, dec, add, sub 논리 연산 and, or, xor, not 비교 cmp, test 분기 jmp, je, jg 스택 push, pop 프로시저 call, ret, leave 시스템 콜 syscall 3) 피연산자 - 상수, 레지스터, 메모리 - 메모리 피연산자는 []으로 둘러싸인 것으로 표현..
2022. 5. 6.