Code Injection
-
[리버싱 핵심원리 study] 28장 어셈블리 언어를 이용한 Code 인젝션Reverse Engineering 2021. 1. 15. 23:03
이번 실습에서는 28장의 Code injection과 동일하지만 ThreadProc() 함수를 어셈블리 언어로 작성하여 code 인젝션을 구현한다. 1. OllyDbg로 코드 작성 OllyDbg로 예제 파일인 asmtest.exe를 열고 401000 주소에 다음과 같이 New origin here 항목을 이용하여 EIP를 401000으로 변경해보자. 이제 여기다 ThreadProc() 함수를 작성해볼 것이다. (asmtest.exe는 단순히 OllyDbg를 이용하여 어셈블리 코드를 작성하기 위한 아무 의미 없는 프로그램으로 보면 된다.) 아래와 같이 작성해보자. 이제 문자열을 입력하기 위해 dump 창의 00401033(함수가 끝난 다음 주소)에 아래와 같이 "ReverseCore:를 입력해주자. (이때..
-
[리버싱 핵심원리 study] 27장 Code 인젝션Reverse Engineering 2021. 1. 14. 23:51
1. Code Injection Code 인젝션이란 상대방 프로세스에 독립 실행 코드를 삽입한 후 실행하는 기법이다. CreateRemoteThread() API를 이용하며 Thread 인젝션이라고 불리기도 한다. 대상 프로세스에 코드와 데이터를 삽입 하주는데 앞서 다뤘던 DLL 인젝션과 비교했을 때 다음과 같은 특징이 있다. (1) 메모리를 조금만 차지한다. (2) 흔적을 찾기 어렵다. (3) 별도의 DLL 파일이 필요 없다. (Injection하는 프로그램만 있으면 됨) Code 인젝션은 규모가 작고 간단한 일을 수행할 때 용이하다. 2. 실습 예제 실습에서는 notepad.exe 프로세스를 실행시킨 후, Process Explorer를 통해 notepad.exe의 프로세스 ID를 알아낸다. 알아낸 ..