소프트웨어, 수학 자료 정리

언패킹

리버스엔지니어링

프로그램을 해킹하지 못하게 막는 것을 패킹이라고 한다.


패킹을 하는 방법


암호화

XOR 연산 사용

정크 코드 삽입




이 패킹을 깨는 것을 언패킹이라 한다.


학습 자료

unpackme


참고 : 

'리버스엔지니어링' 카테고리의 다른 글

(스크랩) Code Injection  (0) 2018.03.21
함수 목록  (0) 2018.03.09
윈도우즈 API 프로그램 구조  (0) 2018.03.01
RadASM 편집기  (0) 2018.01.11
매크로 어셈블리어 개발 툴 다운 로드 받는 웹사이트  (0) 2017.08.18

(스크랩) Code Injection

리버스엔지니어링

DLL 인젝션


출처

http://www.reversecore.com/40


코드 인젝션 : code patch


JMP xxxxxx


JMP opcode "E9XXXX"


XXXX = 점프할 주소 - 현재 명령어 주소 -5


출처: http://www.reversecore.com/67


참고: 


https://asecurity.so/2017/01/hooking-%ED%9B%84%ED%82%B9-code-path-inline-patch-%EC%BD%94%EB%93%9C-%ED%8C%A8%EC%B9%98-%EC%9D%B8%EB%9D%BC%EC%9D%B8-%ED%8C%A8%EC%B9%98/


http://blog.eairship.kr/303


http://flack3r.tistory.com/entry/%EC%9D%B8%EB%9D%BC%EC%9D%B8-%ED%8C%A8%EC%B9%98

'리버스엔지니어링' 카테고리의 다른 글

언패킹  (0) 2018.03.21
함수 목록  (0) 2018.03.09
윈도우즈 API 프로그램 구조  (0) 2018.03.01
RadASM 편집기  (0) 2018.01.11
매크로 어셈블리어 개발 툴 다운 로드 받는 웹사이트  (0) 2017.08.18

함수 목록

리버스엔지니어링

함수


abort()

atof()

asin

atan

atan2

cos

fabs

floor

flushall

fmod

fopen

fputs

fread

free

fseek

ftol

fwrite

lstrcmpA

malloc

memcmp

memcpy

memset

mktime

modf

setargv

sin

sprintf

sqrt

sscanf

strcat

strchr

strcmp

strcpy

stricmp

strlen

strncmp

strncpy

strstr

strtok

strtol

tan

time

toupper






























'리버스엔지니어링' 카테고리의 다른 글

언패킹  (0) 2018.03.21
(스크랩) Code Injection  (0) 2018.03.21
윈도우즈 API 프로그램 구조  (0) 2018.03.01
RadASM 편집기  (0) 2018.01.11
매크로 어셈블리어 개발 툴 다운 로드 받는 웹사이트  (0) 2017.08.18

윈도우즈 API 프로그램 구조

리버스엔지니어링

큰 틀

Start

WinMain

WinProc




문자열 출력

WM_PAINT


그래픽 출력

WM_PAINT


입력

키보드

WM_KEYUP

마우스

WM_MOUSEMOVE

리소스

WM_COMMAND
FindResourceA
LoadResource
LockResource

메뉴

툴바 



dialog

CreateDialogIndirectParamA
EndDialog
MessageBoxA
SendMessage CB_ADDSTRING


ini











RadASM 편집기

리버스엔지니어링

RadASM 편집기는 매크로 어셈블러 편집기보다 사용이 편하다.


링크

http://cherrytree.eu/radasmproblem.htm?

매크로 어셈블리어 개발 툴 다운 로드 받는 웹사이트

리버스엔지니어링

매크로 어셈블러 개발 툴 다운로드 받는 사이트이다.


http://www.masm32.com/


매크로 어셈블러를 사용하여 윈도우즈32 프로그래밍 강좌 웹사이트이다.


http://win32assembly.programminghorizon.com/tutorials.html


RadASM 편집기는 매크로 어셈블러 편집기보다 사용이 편하다.


링크

http://cherrytree.eu/radasmproblem.htm?

프로그램 후킹하는데 도움되는 프로그램

리버스엔지니어링
프로그램 후킹 은 프로그램이 작동할 때 중간에서 가로채는 것이다.
예를 드면 마우스, 키보드 같은 작업을 가로채는 것이다. 프로그램에 단축키 같은 기능을 넣어주는 것이다.

대표적인 것이 오토핫키(autohotkey)다.

프로그램을 설치하고 원하는 키나 마우스 코드 파일을 만들어 실행하면 된다.


소프트 웨어 리버스 엔지니어링 하기 위해 필요한 지식

리버스엔지니어링

올리디버거(ollydbg), 아이다(ida) 5.0 freeware 가 필요하다.

프로그램 다운로드 웹사이트 주소

https://www.hex-rays.com/products/ida/support/download_freeware.shtml

디버깅할 때 두 프로그램을 모두 활용하면 편하다.

어셈블리 언어를 알아야한다.

디버깅하면 프로그램이 어셈블리 언어로 나오기 때문이다.
어셈블리 언어를 완벽하게 공부한 해야 하는 것은 아니다.
macro assembler
RdaASM 개발툴

윈도우즈 API를 알아야 한다.

올리디버그 같은 프로그램에서 MessageBox 같은 함수에  브레이크를 걸수 있기 때문이다.



메모리 구조를 알아야 한다.


Code

Data

Heap

stack

Register



image/svg+xml


PE실행 파일 구조 분석


PEview.exe, notpad++ 이용한다.


PEview로 fileoffset , RVA, VA 를 볼 수  있다.


notepad++는 hexa editor plug in을 사용하여 데이터를 검색, 수정할 수 있다.



프로그래머용 계산기가 필요하다.

윈도우 7에 설치 되어 있다. 10진수를 16진수로 변환할 때 도움이 된다.




mditest.asm 소스 코드 분석

매크로 어셈블러 설치 후 C:\masm32\examples\exampl01\mdidemo에 있슴





resource hack 프로그램

resource 구조를 확인할 때 편하다.




비주얼 스튜디오 2015, 윈도우즈32 프로그래밍, 마우스 클릭 상태에서 원 이동하기

리버스엔지니어링

비주얼 스튜디오 2015, 윈도우즈32 프로그래밍, 마우스 클릭 상태에서 원 이동하기


아래 코딩 입력 위치 (사람이 입력한 부분)


9 줄


22 ~ 26 줄


28 ~ 34 줄


167 ~ 171


177 ~ 179


183 ~ 190


191 ~ 196


197 ~ 208 




비주얼 스튜디오 2015, MFC, 마우스 선 그리기,C++

리버스엔지니어링

마우스 클릭으로 선 그리기


비주얼 스튜디오 2015에서 MFC를 사용하여 만든다.


소스 코드는 아래와 같이 노란색 부분을 입력한다.





dc.MoveTo() : 현재 위치를 옮긴다.

dc.LineTo()   : 현재 위치로부터 특정 위치까지 선으로 그린 후 현재 위치를 갱신한다.


출처: http://stoned.8m.com/Source/MFC/mousedraw.html


비주얼스튜디오2015 MFC로 간단한 윈도우즈 프로그래밍 만들기

리버스엔지니어링

비주얼스튜디오2015 MFC로 간단한  윈도우즈 프로그래밍 만들기



  • 파일 - 새로 만들기 - 프로젝트 클릭

  • MFC 응용 프로그램 클릭- 확인 클릭

  • 아래 화면 처럼 설정한 후에 "마침"을 클릭한다.

  • CChildView를 클릭한다.

  • 아래 이미지처럼 메세지를 추가한다. WM_CREATE 추가

  • WM_DESTROY 메세지 추가한다.

  • WM_PAINT 메세지를 추가한다.

  • 아래 이미지처럼 dc.TextOutW( 10, 10, _T("안녕")); 을 키보드로 입력한다.

  • 아래 이미지처럼 디버그 - 디버그하지 않고 시작 을 클릭한다.



비주얼 스튜디오 2015에서 윈도우즈32 api 간단한 프로그램 만들기 과정

리버스엔지니어링

비주얼 스튜디오 2015에서 윈도우즈32 api 간단한 프로그램 만들기 과정


  • 파일 - 새로 만들기 - 프로젝트 클릭

  • Visual C++ - win32 프로젝트 선택 후 확인 클릭

  • win32 응용 프로그램 마법사 시작 - 다음 클릭

  • 응용 프로그램 설정 - 마침 클릭

  • 아래 이미지처럼 디버그 - 디버그하지 않고 시작 을 클릭한다.