리버싱 썸네일형 리스트형 Code Injection Code Injection Code Injection은 크게 2가지의 의미로 해석될 수 있다. 첫 번째는 소프트웨어의 버그(취약점)의 일종으로 애플리케이션의 신뢰할 수 없는 데이터를 입력받아 악의적인 행위를 수행하거나 코드를 실행하는 것을 의미한다. 두 번째로는 역공학(Reverse engineering, Reversing)에서의 Code Injection이다. 해당 글에서는 바로 후자의 관한 코드 인젝션에 대해 살펴보도록 하겠다. Code Injection은 목적 프로세스에 독립적인 실행 코드를 삽입한 후, 이를 실행하는 기법을 의미한다. DLL Injection과 마찬가지로 보통 CreateRemoteProcess( ) API를 이용하여 실행한다. Code Injection vs DLL Injecti.. 더보기 Win32 API 정리 API Hooking쪽을 공부하다가 C++ 코드를 읽는데 Win32 API 부분이 어려워서 공부 겸 정리하려고 글을 씁니다. API? API(Application Programming Interface) 운영체제가 응용프로그램을 위해 제공하는 함수의 집합 운영체제가 정한 규칙에 따라 하드웨어에 엑세스하거나 응용 프로그램끼리의 상호작용 가능 따라서 이를 위해 API를 제공. 변수 명명법 C에선 i,j와 같이 짧은 변수명을 사용했지만, 윈도우즈에선 많은 변수가 사용되므로 이해하기 쉽게 길게 표현한다. 관습적으로 정해진 접두어를 이용하기도 한다. cb(Count of Bytes) : 바이트 수 dw(double word) : 부호없는 long형 정수 h(handle) : 윈도우, 비트맵, 파일 등의 핸들 sz.. 더보기 DLL Injection DLL? DLL(Dynamic Link Library)는 마이크로소프트 윈도우에서 구현된 동적 링크 라이브러리다. 내부에는 다른 프로그램이 불러서 쓸 수 있는 코드와 데이터, 다양한 함수들을 포함하고 있다. DLL을 사용하면 효율적으로 코드를 모듈화하고 재사용할 수 있으며, 메모리 사용 효율성을 높이고 사용되는 디스크 공간을 줄일 수 있다. 따라서 운영 체제와 프로그램이 더 빠르게 로드 및 실행된다. DLL의 이점은 다음과 같다. 더 적은 리소스 사용 모듈식 아키텍쳐 활용 손쉬운 배포와 설치 DLL Injection? 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 행위를 의미한다. 이를 통해 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시킴으로써 코드를 실행시킬 수 있다. 일반적인 DLL .. 더보기 이전 1 다음