어셈블리어/Assembly_5_실습
어셈블리어/Assembly_5_실습
5. (실습) hello실습 world 문자열 패치
<리버싱에 필요한 언어>
C언어 API(win32, Linux API)
C++ API(MFC)
VB
자바, 파이썬, 펄 같은 언어들은 디컴파일러가 이미 있다.
상기 언어는 별도의 엔진이 필요한데, 악성코드 배포자의 입장에서는 범용적이지 않으면 쓸모가 없다.
<리버싱에 필요한 지식>
OS 지식(실행 파일 구조)
CPU 아키텍처
어셈블리어
프로세스 메모리 레이아웃 구조(code, data, heap, stack)
프로그래밍 언어(C - Win32, C++ - MFC, VB)
Packer / Protector
Anti-디버깅
코드 가상화
<어셈블리어의 종류>
윈도우는 MASM
리눅스는 GAS
리버싱은 플랫폼마다 그 방식이 다 다른데 플랫폼이 다양하기 때문에 어려운 것이다.
메모리는 하드디스크에 비해서는 속도가 매우 빠르지만 cpu 입장에서는 메모리도 느리기는 마찬가지이다.
레지스터의 역할 중에 하나는 데이터 백업
1. 범용 레지스터 -> 원하는 용도대로 마음대로 쓰는 것
EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP
EAX = 12345678
5678 = AX
56 = AH
78 = AL
E = 에코
읽을 줄만 알면 된다.
<EIP>
instruction pointer
프로그램 카운터 : cpu가 다음에 실행할 기계어 코드의 위치를 가리키는 곳
cpu는 절차적으로 수행하기 때문에 특정한 인카운터가 없으면 바로 다음 주소를 실행한다.
<E FLAGS>
Z - 연산의 결과가 0이면 1
S - 연산의 결과가 음이 되면 1
--------------------------- 실 습 ---------------------------
hello world가 출력되는 소스이다.
이 프로그램을 리버싱 하여 다른 문자가 출력되게 해 보자!!!!
우선 printf나 hello world 문자열을 찾으면 된다.
어디서??
“odbg110” 프로그램 설치 후 인터페이스를 확인부터하자.
hello wolrd가 담겨있는 404000을 찾아보자
주소와 아스키코드가 보이는Dump Window에 가서 ctrl + G를 하여 404000 주소를 입력한다.
아스키코드를 바꿔서 hello man을 만들어보자.
이렇게 바꿔주면,
hello man으로 바뀐 것을 볼 수 있다.
Dump window창에서 바꾼 문자열을 드래그하고Copy to executable file을 누르고 save file을 하면 패치가 된다.
https://it-life-on.tistory.com/31
어셈블리어/Assembly_1
1. 레지스터란? CPU 내부에 존재하는 작은 고속의 메모리이다. 레지스터의 종류 > 위 레지스터들은 범용레지스터, 인덱스레지스터, 포인터레지스터라고 한다. > 32비트 환경에서는 첫 글자가 E(Exten
it-life-on.tistory.com
https://it-life-on.tistory.com/32
어셈블리어/Assembly_2
2. 어셈블리어(Assembly language)란? - 기계어와 1대1 대응되는 컴퓨터 프로그램의 저급 언어. 어셈블러(Assember)란? - 어셈블리어로 작성된 소스 코드를 기계어로 변환하는 프로그램. 어셈블리어 구조 C
it-life-on.tistory.com
https://it-life-on.tistory.com/33
어셈블리어/Assembly_3_엔디언
3. 엔디언(Endianness)이란? 컴퓨터의 메모리와 같은 1차원 공간에 여러 개의 연속된 대상을 배열하는 방법이다. 빅 엔디언(Big-endian)과 리틀 엔디언(Little-endian)으로 나눠진다. 빅 엔디언(Big-endian) 최
it-life-on.tistory.com
https://it-life-on.tistory.com/34
어셈블리어/Assembly_4_Break Point(브레이크 포인트)
4. Break Point(브레이크 포인트)란? 프로그램을 실행하는 도중에 유저가 필요한 시점에서 프로그램을 일시정지 시키는 역할. 디버깅 기법 중 하나. 명령을 실행하는 CPU를 일시 중지, 한 바이트 명령
it-life-on.tistory.com