리버스 엔지니어링,리버싱 정리2
이제 1편을 보았다면
리버싱이 어떤것인지 알수있을것이다
이제 레지스터를 알아볼것이다
일단적으로 범용레지스터 8개를 간단하게 이해시킬수있게
노력해보겠다
범용레지스터 8개의 용도는 나는 값을 저장 연산등으로정의해
그것들을 그릇에 비유하겠다 그릇안에 값
예시 12345678이라는 값이 있는 그릇이라고 나는
범용레지스터의 용도를 정의한다
그릇 끼리 같이 합쳐서 두배가될수도있고 적어질수도있고
그런 연산작용을 한다
이제 레지스터 8개의 각각 용도를 간단하게 알아보자
EAX
EAX 연산할때 그값을 저장하는용도고 이걸 조금더자세히설명하면
산술 연산을하며, 리턴값을 전달한다
이게 제일 잘정리된 정의인것같다
이런걸 알수있는 힌트가있다
A 는 Accumulator로 계산이라는뜻을 지녔다
EAX (Extended Accumulator Register)
EDX
EAX와 같이 연산에사용된다
주로 더하고 뺴고 곱하는 용도
변수의용도로도쓰인다
D의약자는 Data이다
EDX (Extended Data Register)
ECX
C의 약자는 count이다
프로그래머에게 쉽게이해시킬려면
루프문이다
하지만 초보자에게 설명하자면
반복문이 만약 5바퀴 돈다한다
5를넣고 1씩줄여서
0이되면 끝나는
반복문에 쓰인다
ECX (Extended Counter Register)
EBX
EAX,EDX,ECX가 부족할때사용하고
B는 base이다
EBX (Extended Base Register)
ESI,EDI
EAX~EDX는 주로 연산에사용된다
ESI,EDI는
주로 문자열,메모리값을 복사할때 원본주소를 가리킨다
S와D의약자는
Source와 Destination이다
ESI (Extended Source Index)
EDI (Extended Destination Index)
EBP,ESP
스택프래임의 시작주소와끝주로가 저장된다
각각의 약자는
ESP (Extended Stack Pointer)
EBP (Extended Base Pointer)
EIP
간단하게 다음에 실행할 명령어 주소가 저장된다
EIP (Extended Instruction Pointer)