Tag Archives: api hooking

어셈블리어 튜토리얼 (8) DLL 프로그램

2.4. DLL

사용자 DLL 라이브러리를 다뤄보겠다. DLL 라이브러리를 만들기전에 먼저 DLL 를 호출하는 방법을 살펴보겠다.

앞서 DLL 라이브러리(windows api)를 사용할 때에는 LIB파일(kernel32.lib, user32.lib, gdi32.lib)을 이용해서 DLL 의 함수들을 호출했다. 이번에는 LIB파일 없이 직접 DLL 에서 함수를 얻어 호출하는 방법을 …

어셈블리어 튜토리얼 (7) Window 프로그램

2.3. Window 프로그램

win.asm

간단한 윈도우 프로그램이다. win32 프로그래밍(c/c++)을 다뤄봤다면 바로 이해할 수 있을 정도로 소스가 흡사할 것이다. 어차피 같은 라이브러리에서 windows api를 쓰는데다 앞서 설명한 .if .while invoke 등의 지시어를 이용하기 때문이다.

위도우 프로그래밍을 하려고 하는게 아니니 이것이 어떻게 …

어셈블리어 튜토리얼 (6) memcpy, strcmp

2.2. memcpy, strcpy, strcmp

memcpy.asm

메모리값을 복사하는 소스이다. c언어를 다뤄봤으면 이와비슷한 함수를 본적이 있을 것이다.

이 소스를 설명하며 함수선언과 몇가지 추가적인 명령어를 보도록 할 것이다.

.686
.model flat, stdcall
option casemap :none

include c:\masm32\include\kernel32.inc
include c:\masm32\include\msvcrt.inc
includelib c:\masm32\lib\kernel32.lib
includelib 

어셈블리어 튜토리얼 (5) HelloWorld

2. 기초 튜토리얼

몇가지 예제 프로그램을 만들어보면서 어셈블리어를 연습해보겠다.

간단한 프로그램들로 어셈블리 명령어와 레지스터를 쓴다는것만 빼면 c프로그래밍과 비슷할 것이다.

2.1. HelloWorld

콘솔창에 “hello world” 를 출력하는 간단한 프로그램이다.

helloworld.asm

.686
.model flat, stdcall
option casemap :none

include c:\masm32\include\kernel32.inc
include c:\masm32\include\msvcrt.inc

어셈블리어 튜토리얼 (4) 명령어 상세설명2

이전글

어셈블리어 튜토리얼 (3) 명령어 상세설명

1.8. 명령어 상세설명(2)

1.8.8. push : 스택메모리에 대상을 push해서 넣는다.

push 대상

스택메모리에 값/레지스터/메모리를 push한다. 스택메모리 최상단 주소는 esp 레지스터에 저장되어 있다.

push 1
; 스택메모리에 값 1을 넣는다.

mov eax, 1
push 

어셈블리어 튜토리얼 (3) 명령어 상세설명

1.8. 명령어 상세설명(1)

여기서 설명하는 명령어들는 이전에말한 디버거에서 실시간으로 테스트해 볼 수 있다.

x32dbg 를 실행하고 다시 helloworld.exe 를 열어보자.

F9를 눌러 Entry Point까지 이동하자.

디버거를 이용해서 어셈블리코드를 실행 하는 방법에는 크게 두가지 방법이 있는데

먼저 첫번째 간단한 방법

어셈블리어 튜토리얼 (2) 디버거

1.6. 디버거 설치

예제와 튜토리얼을 바로 확인 할 수 있도록 디버거를 설치한다.

디버거는 프로그램이 제대로 동작하는지 확인하거나 제대로 동작하지 않을때 확인 하려면 필수적으로 필요하다.

디버거는 여러가지가 있는데 64bit/32bit 모두 디버깅 할 수 있고 UI도 깔끔한 x64dbg (http://x64dbg.com/)를 설치한다.…

어셈블리어 튜토리얼 (1) 설치/기초

1. 시작

이 글의 목적은 어셈블리를 이용해 복잡한 프로그램을 짜는것이 아니고..

어디까지나 리버스 엔지니어링에 필요한 최소한의 어셈블리를 익히는 것이다.

해서 기초적인 어셈블리만 소개하도록 하겠다.

물논 복잡한 어셈블리는 나도 모름. ㄲㄲ

어셈블러는 MASM(The Microsoft Assembler) 으로 한다. NASM, FASM등 다른 어셈블러도 …

어셈블리어 튜토리얼 (0) 목차

어셈블리어(리버스 엔지니어링) 튜토리얼 정리

근래에 64비트 어셈블리에 관심이 생긴 겸사겸사 3년전에 정리하려고했던 asm, api hooking, binary patch등을 정리해보려고한다.

어셈블리는 리버스 엔지니어링에 필요한 최소한의 기초적인 어셈블리만 다룰려고 한다.

c/c++ 언어 기초적인 지식이 있으면 좀 더 쉽게 이해 할 수 있을거 같다.…