Assembly

    2013.09.23_어셈블리_ 메모리에 변수값직접넣기

    ▶ SMART 함수가 LINUX 함수를 호출하고, LINUX 함수에 변수값 직접넣기 디버깅 수행 ▶ EFL 의 주소 확인 ▶ 특이한점은 Debug 시에 Trap Flag 로 인해서 : 346이 떠서 AND 를 이용해서 임의로 EFL 의 주소를 제대로 찍어줌 ▶ 나머지는 주석을 순서대로 확인! ----------- 소스 ------------ ----------------------------

    2013.09.12_ASM_Disassambly로 분석해보기

    Entry Code , Exit Code ▶ 함수가 시작하고 끝날때 항상 붙음. ▶ Entry Code , Exit Code 를 다른 명령어로도 표현 할 수 있다. __cdecl 과 __stdcll 호출 규약의 차이점 ▶ __cdecl 규약 호출을 해서 인자가 스택영역에 쌓이는 순서는 오른쪽에서 왼쪽으로 쌓인다. 호출을 한 장소 ( 여기서는 main ) 에서 값을 꺼낸다. 스택 반환 작업을 호출자쪽에서 ( ebp = ebp + 8 ) 한다. ▶ __stdcall 규약 호출을 해서 인자가 스택영역에 쌓이는 순서는 오른쪽에서 왼쪽으로 쌓인다. 스택 반환 작업을 호출당한 쪽(피호출자)에서 ( ebp = ebp + 8 ) 한다. ▶ 둘의 차이점__cdecl과 __stdcall의 가장 큰 차이점은 스택 정리 주체..

    2013.09.11_스택영역을 확인해보자_스크랩

    보호되어 있는 글입니다.

    2013.09.11_CODE Stack 영역 알아보기_수정중

    보호되어 있는 글입니다.

    2013.09.10_ASM_push_instructions, pop_instructions

    push Instructions , pop Instructions ▶ push 명령어 : 메모리 구성의 stack 영역에 직접 값을 집어 넣어주는 명령어 push eax 1. esp = esp-4; 2. eax = *esp .386 .MODEL FLAT ExitProcess PROTO NEAR32 stdcall, dxExitCode:DWORD .STACK 4096 .DATA .CODE _smart: mov eax , 0aaaaaaaah mov ebx , 0bbbbbbbbh mov ecx , 0cccccccch mov edx , 0ddddddddh push eax push bx push 0cch push 0ddh INVOKE ExitProcess, 0 PUBLIC _smart END ▶ 설명 : 처음위치 ..

    2013.09.04_jmp_instruction

    jmp Instruction ▶ jmp targetStatement : Label or 변위 만큼을 점프할 수 있다. ▶ jns targetStatement : 상태플래그가 SF가 '0' 이면 수행되는 명령 ( 변수 A 값이 0보다 크거나 같으면 점프 ! ) ▶ jnz targetStatement : 상태플래그 ZF가 '0' 이면 수행되는 명령 ▶ jne targetStatement : 상태플래그 ZF가 '0' 이면 수행되는 명령어( 변수 A가 0과 같지않다면 점프 ! ) ▶ cmp operand1, operand2 : compare 비교 명령어. cmp eax, 1 형식으로 사용합니다. cmp 명령은 혼자 사용되지 않고 언제나 조건 점프 명령어나 조건 이동(mov) 명령어와 함께 사용. 위는 4byte..