반응형

전체 글 229

어셈블리어의 기초

mov를 기준으로 oprand(피연산자1) oprand2(피연산자2) commet 부분이다' 보통 피연사자가 1나만있는경우 push eax같은경우 스택영역의 eax값을올리는것이다 스택은 추후 나올예정 두가지에 예시는 이렇데 mov eax,1 이경우 opcode(명령어)는 mov고 oprand1은 eax oprand2은 1이다 앞에 oprand1이 destionation목적지가되고 뒤의 것이 소스코드가된다 3개짜리도있지만 그건 나중에하기로하자 REF(참고한 블로그및 서적들) http://seongwon654.blogspot.com/2017/06/assembly.html 어셈블리어(Assembly) 기초 0x01. 어셈블리 언어란 ? & 배우는 목적 CPU 에는 해당 프로세서에 명령을 내리기 위해 고유의 명..

플래그 레지스터

플래그 레지스터란? 1플래그 레지스터의 이름은 EFLAGS 이며 32 bit(4byte) 크기 입니다 2각레지스터 비트가 0과1 참또는거짓 on/off값을가진다 일부bit은 시스템설정 일부는 명령등 어셈블리어 실행때 설정된다 플래그 설명 1일때 0일때 OF(overflow) 자리넘침 OV(overflow) NV(not overflow) DF(direction) 방향 DN(down) UP(up) IF(interrupt) 가로채기 EI(enable) DI(disable) SF(sign) 부호 NG(negative) PL(plus) ZF(zero) 영(0) ZR(zero) NZ(not zero) AF(aux,carry) 하위 4bit의 캐리 AC(aux, carry) NA(not aux) PF(parity) ..

세그먼트레지스터

세그먼트 레지스터(segment register)는 현재 세그먼트라고 하는 메모리의 한 영역에 대한 주소지정을 제공한다. PC 계열에서 사용되고 있는 인텔 프로세서들은 자신의 주소지정 능력을 제공한다. CS,DS,SS,ES,FS,GS등이있다 CS레지스터 CS레지스터는 프로그램의 코드 세그먼트의 시작 주소를 포함한다. 이 세그먼트 주소에 명령어 포인터(instruction pointer, IP) 레지스터의 오프셋 값을 더하면, 실행하기 위해 메모리로부터 가져와야 할 명령어의 주소가 된다. 일반적인 프로그래밍에서는 이 레지스터를 직접 참조할 필요가 없다. DS레지스터 DS 레지스터는 프로그램의 데이터 세그먼트의 시작 주소를 포함함다. 명령어는 이 주소를 사용하여 테이터의 위치를 알아낸다. 이 주소에 명령어의..

범용레지스터 추가설명

추가적으로 더알아야할게있다 기본적으로 ax라는 16비트 상위레지스터 안에 하위레지스터인 AH AL이있다 외우는법은간단하다 H가 HIGH L이 LOW다 eax에서 ax는 0000???? 영역이다 ?가 ax범위 eax값이 0000FF12이다 범위는 마지막두자리다 이명령으로eax값 00002412 총정리 eax안에 는 ax라는 16bit레지스터가있고 그안에는 h는 high l은 low로 eax경우ah al 으로 두개로 나누어진다

리버스 엔지니어링,리버싱 정리2

이제 1편을 보았다면리버싱이 어떤것인지 알수있을것이다 이제 레지스터를 알아볼것이다일단적으로 범용레지스터 8개를 간단하게 이해시킬수있게노력해보겠다범용레지스터 8개의 용도는 나는 값을 저장 연산등으로정의해그것들을 그릇에 비유하겠다 그릇안에 값예시 12345678이라는 값이 있는 그릇이라고 나는범용레지스터의 용도를 정의한다그릇 끼리 같이 합쳐서 두배가될수도있고 적어질수도있고그런 연산작용을 한다이제 레지스터 8개의 각각 용도를 간단하게 알아보자 EAXEAX 연산할때 그값을 저장하는용도고 이걸 조금더자세히설명하면산술 연산을하며, 리턴값을 전달한다이게 제일 잘정리된 정의인것같다이런걸 알수있는 힌트가있다A 는 Accumulator로 계산이라는뜻을 지녔다EAX (Extended Accumulator Register) ..

리버스 엔지니어링,리버싱 정리1

리버싱에 대해서 정리해보자 기초적으로 어셈블리어와 기계어에대해서 간단한 역사를 알아보자 오래전 기계들은 0과1로 이루어진 예시 011010101 이런 명령을 사용헀다 이걸 효율적인 코딩을하기위해 거기서 한단계더 편한 어셈블리어가 나왔다 mov eax,100 add eax,100 sub eax,100 간단하게 eax의 변화로 이 말을해석하자면 eax에 100이라는 숫자를 입력했고 add 명령으로 100이라는 숫자가 더해 200이되었다 sub 명령으로 100이라는 숫자를 뺴서 100이다 이렇게 간단하게 볼수있다 이러한 리버싱을 통해 어떻게 코드가 짜여있는지알수있고 어떤 API 어떤구조인지도 알수있다 API 같은이야기등 모르는게있다면 구글에 한번쳐보는걸 추천한다 리버싱은 이렇게 정리하자 어셈블리어를 이용하여 ..

반응형