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

3. 리버스 엔지니어링 (1)

다른 프로세스(프로그램)이 내가 원하는 동작을 하게하려고 하면 크게 두가지 방법이 있다.

  1. 파일수정(exe) : 해당 프로그램을 직접 수정하는 방법
  2. 메모리수정 : 내가 만든 프로그램을 해당 프로그램에 침투하는 방법

첫번째 방법은 바이너리 패치라고하며 해당 프로그램(exe)을 어셈블리 단위로 파악해서(디어셈블) …

[phantomjs/casperjs] 식단표 자동다운로드 (headless browser)

headless browser 를 사용해 보았다.

headless browser 는 그래픽인터페이스 없는 웹브라우져인데 스크립트 제어, 네트워크 모니터링, 페이지 로딩제어등 여러가지 자동화를 지원해준다.

주로 자동화된 테스팅 도구로써 많이 사용된다.

내부적으로 ajax가 동작된다든지하는 클라이언트쪽 js스크립트와 연동하여 테스트할 경우 유용할 것 같다.

많은 headless browser가 …

어셈블리어 튜토리얼 (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 등의 지시어를 이용하기 때문이다.

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

웹 채팅 프로그램 (flash socket/node.js) (0)

웹 채팅 프로그램을 만들어 보았다.

flash socket을 이용하여 클라이언트를 만들고

node.js를 이용하여 서버를 만들었다.

도메인단위로 해당 iframe만 넣으면 어디에도 쉽게 붙일수 있도록 구성하였다.

요즘에는 잘쓰이지 않는 flash socket을 이용하여 만들어봤다.

flash socket보다는 socket.io 쪽으로 만드는것이 더 쉽고 강력한 방법같긴한데..

(더우기 …

psp 자가 케이스 교체

추억의 psp다. 실제로 추억의 에물 게임밖에 안한다. 사쇼, 킹오파정도

psp의 뒷판 도장이 벗겨져 케이스를 갈아보았다.

벗겨진부분이 지저분한것도 지저분한거지만 무엇보다 부스러기가 여기저기 떨어져서 주변이 지저분해지는게 버티기가 넘나 힘들었다.

aliexpress 에서 구입했다. $10 내외로 가격은 꽤나 저렴한편

기본적인 공구도 포함되어있다. ..만 안씀.…

어셈블리어 튜토리얼 (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 

scara arm robot 제작(0)

scara arm robot 제작중.. 3d프린터로 뭐 재미난거 만들게 없을까하다 만들기 시작했다. end-switch만 달면 하드웨어는 완성인거 같다. arduino mega + ramps 에 연결해서 각 모터구동 테스트까지 해봤다.

생각보다 하드웨어 값이 비싸다;; 거의 3d프린터값이.. ㅋ 실제로 아크릴 프레임을 제외하면 부품 대부분이 일치한다.…

어셈블리어 튜토리얼 (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