함수 호출 규약
# 함수 호출 규약(Calling Convention) - 함수(Caller)와 함수(Calle)간의 약속 - 파라메터를 어떤 방법으로 전달할 것인가? - 사용한 파라메터를 누가 정리할 것인가? - 규약의 종류는 _cdecl, _stdcall,...
함수호출 CALLER > CALLEE
CALLER 호출 함수 CALLEE 피호출 함수 CALL 주소 CALL 00401000 // 00401000에 있는 함수 호출 ->PUSH EIP ->JMP 00401000 RETN -> POP EIP RETN 값 -> POP EIP -> ADD...
분기 명령 JMP JE JZ JNE JNZ JG JGE JL JLE
# 무조건 분기 JMP 주소 JMP 00401000 // 00401000DMFH WJAVMGOFK -> EIP 레지스터 변수에 00401000을 넣어라 # 조건 분기 0을 기점으로 해야함!! JE, JZ == JNE, JNZ != JG, JGE...
메모리 주소 복사 LEA
MOV EAX, DWORD PTR[00406000] 00406000안의 값을 복사 LEA EAX, DWORD PTR[00406000] 00406000라는 주소를 복사 EX) INT N = 5; INT *P = &N; *P = 3; MOV...
반복명령 REP
-REP [어셈명령] // 어셈명령을 반복, 1번 수행할 때마다 ECX 값 1 감소 // ECX가 0이 되면 반복 중단 MOV EAX, 0 MOV ECX, 6 REP INC EAX9 대용량 초기화 INT ARR[100] = 0;...


비트 연산 AND(&) OR( | ) XOR(^) NOT(~)
AND, OR, XOR는 OPERAND 2개 NOT은 1개 # AND 연산 두개가 모두 1이여야 1 AND OPER1, OPER2 // OPER1 = OPER1 & OPER2 EX) AND EAX, EBX // EAX = EAX & EBX #...
기본 어셈블리 ASSEMBLY
기계어 - 2 진수를 가지고 기계가 이해할 수 있도록 표현한 언어 기계어와 어셈블리어는 1:1 매칭으로 이루어져 있음 #OPCODE, operand operand는 0 ~ 3개까지 올 수 있음. ex) MOV EAX, 10 MOV같은 어셈블리를...

RAM 구조, STACK, POP, PUSH, MOV
@ RAM (Random Access Memory) 구조 - 윈도우즈 계열에서는 PE구조를 기반으로 올라가는 메모리 구조 - 리눅스 계열에서는 ELF 구조를 기반으로 올라가는 구조 - 이 게시물에서는 PE 구조를 다룸 - 메모리 영역은 크게...

범용 레지스터: EAX, ECX, EDX, ESI, EDI, ESP, EBP, EIP, EFlags
1. EAX(Extended Accumulator Register) 첫번째로, EAX 레지스터에 대해 알아보도록 하겠습니다. EAX 레지스터는 산술(덧셈, 곱셈, 나눗셈 등), 논리 연산을 수행하며 함수의 반환값이 이 레지스터에 저장됩니다. 즉,...