어셈블리어 튜토리얼 (9) DLL Injection (WinHook)

3. 리버스 엔지니어링 (1)
다른 프로세스(프로그램)이 내가 원하는 동작을 하게하려고 하면 크게 두가지 방법이 있다.
- 파일수정(exe) : 해당 프로그램을 직접 수정하는 방법
- 메모리수정 : 내가 만든 프로그램을 해당 프로그램에 침투하는 방법
첫번째 방법은 바이너리 패치라고하며 해당 프로그램(exe)을 어셈블리 단위로 파악해서(디어셈블) …
다른 프로세스(프로그램)이 내가 원하는 동작을 하게하려고 하면 크게 두가지 방법이 있다.
첫번째 방법은 바이너리 패치라고하며 해당 프로그램(exe)을 어셈블리 단위로 파악해서(디어셈블) …
headless browser 를 사용해 보았다.
headless browser 는 그래픽인터페이스 없는 웹브라우져인데 스크립트 제어, 네트워크 모니터링, 페이지 로딩제어등 여러가지 자동화를 지원해준다.
주로 자동화된 테스팅 도구로써 많이 사용된다.
내부적으로 ajax가 동작된다든지하는 클라이언트쪽 js스크립트와 연동하여 테스트할 경우 유용할 것 같다.
많은 headless browser가 …
사용자 DLL 라이브러리를 다뤄보겠다. DLL 라이브러리를 만들기전에 먼저 DLL 를 호출하는 방법을 살펴보겠다.
앞서 DLL 라이브러리(windows api)를 사용할 때에는 LIB파일(kernel32.lib, user32.lib, gdi32.lib)을 이용해서 DLL 의 함수들을 호출했다. 이번에는 LIB파일 없이 직접 DLL 에서 함수를 얻어 호출하는 방법을 …
win.asm
간단한 윈도우 프로그램이다. win32 프로그래밍(c/c++)을 다뤄봤다면 바로 이해할 수 있을 정도로 소스가 흡사할 것이다. 어차피 같은 라이브러리에서 windows api를 쓰는데다 앞서 설명한 .if .while invoke 등의 지시어를 이용하기 때문이다.
위도우 프로그래밍을 하려고 하는게 아니니 이것이 어떻게 …
웹 채팅 프로그램을 만들어 보았다.
flash socket을 이용하여 클라이언트를 만들고
node.js를 이용하여 서버를 만들었다.
도메인단위로 해당 iframe만 넣으면 어디에도 쉽게 붙일수 있도록 구성하였다.
요즘에는 잘쓰이지 않는 flash socket을 이용하여 만들어봤다.
flash socket보다는 socket.io 쪽으로 만드는것이 더 쉽고 강력한 방법같긴한데..
(더우기 …
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
… 몇가지 예제 프로그램을 만들어보면서 어셈블리어를 연습해보겠다.
간단한 프로그램들로 어셈블리 명령어와 레지스터를 쓴다는것만 빼면 c프로그래밍과 비슷할 것이다.
콘솔창에 “hello world” 를 출력하는 간단한 프로그램이다.
helloworld.asm
.686
.model flat, stdcall
option casemap :none
include c:\masm32\include\kernel32.inc
include c:\masm32\include\msvcrt.inc
… 이전글
push 대상
스택메모리에 값/레지스터/메모리
를 push한다. 스택메모리 최상단 주소는 esp
레지스터에 저장되어 있다.
push 1
; 스택메모리에 값 1을 넣는다.
mov eax, 1
push
…