본문 바로가기

Reversing

어셈블리 기초

gdb 명령어 


Set disassembly-flavor intel

Disas main


B *main+number 브레이크 포인트


R run


P[변수명] 특정 변수값 확인


X $[레지스터:ex:rbp-0x4] 값확인






레지스터


EAX     사칙연산 리턴값                        

EDX     함수 파라미터

ECX     for문에서 I 루프 카운터

EBX     부족대비용

ESI     시작인덱스

EDI     목적지인덱스 (ESI EDI)

ESP     스택천장

EBP     ESP 임시저장,스택바닥



어셈블리


PUSH     스택에 값 저장

POP             스택에서 값 뺌

MOV     값대입

LEA             주소를 가져옴

ADD     src -> +dest

SUB             src -> -dest

INT             INTerrupt

CALL    함수호출[오퍼랜드]

INC            INCrease (I++)

DEC            DECrease (I—)

AND, OR XOR       연산

NOP            아무것도 안함 (패딩)

CMP            







/*


BYTE char 8bit

WORD short 16bit

DWORD long 32bit 

QWORD longlong 64bit


MOV a,b -> a=b

LEA a,b -> a=&b

ADD a,b -> a+=b

SUB alb -> a-=b

INC a -> a++

DEC a-> a—

MUL alb -> a*=b



JMP 0xabcd -> 무조건 점프

JLeast 왼쪽이 오른쪽보다 작을 점프

JGreat 왼쪽이 오른쪽보다 점프

JEqual, JZeroFlag -> ZF=1일때 점프

JNotEqual, JNotZeroflag -> ZF=0일때 점프