리버싱에 필요한 것은? (레지스터, 어셈블리어)
리버싱에 필수적인 것으로 레지스터와 어셈블리어가 있습니다. 소스코드를 어셈블리 코드로 만드는 것을 컴파일, 어셈블리 코드를 기계어로 만드는 것을 어셈블이라 하고 반대로 기계어를 어셈블리 코드로 만드는 것을 디스어셈블, 어셈블리 코드를 소스코드로 만드는 것을 디컴파일이라고 합니다. 어셈블리어는 컴파일한 아키텍쳐어 따라서 Intel, Mips, Arm으로 나뉘고, 컴파일한 운영체제의 크기에 따라서 16, 32, 64비트로 나뉩니다. 이때 32비트는 x86, 64비트는 x64라고 표현합니다. 어셈블리는 레지스터를 이용해서 계산을 할 때 수식의 역할을 한다고 생각하면 편합니다. opcode는 명령어, operand는 인자값입니다. 이 어셈블리의 레지스터는 CPU의 변수입니다. 레지스터및 어셈블리의 정리는 이 링..
어셈블리 명령어&레지스터 종류 한눈에 보기
어셈블리 명령어 RAX와 EAX에서 R과 E의 차이 E는 32비트R은 64비트 프로그램 PUSH,POP - 스택에 값을 넣는 것을 PUSH, 스택에 있는 값을 가져오는 것이 POP이다. MOV - MOV는 값을 대입한다. LEA - LEA는 주소를 대입한다는 뜻이다. ADD, SUB - ADD a,b 는 a에 b만큼 값을 더하는 명령어이다. - SUB a,b는 a에서 b만큼 값을 빼는 명령어이다. INC,DEC - INC는 c언어의 i++; - DEC은 i--; 라고 생각하면 된다. AND, OR, XOR - 명령어 a,b 에서 and,or,xor연산을 한다. - XOR은 같은 값으로 XOR을 하면 0이 되기 떄문에 XOR로 같은 오퍼랜드를 전달했을떄, 이것은 변수를 0으로 초기화 하는 효과를 줄 수 있..