-
-
GetProcAddress()Hack/Reversing 2015. 1. 16. 18:09
해당 함수를 이용해서 특정함수의가상 메모리주소를 알아낼수있다. 이 함수는 kernel32.dll에서 export하는 함수다. 해당함수는 함수가 속한 프로그램, 라이브러리등 핸들이 필요한데, 이 핸들을 쉽게 GetModuleHandle() 함수로 얻을수있다. GetProcAddress()와 GetModuleHandle()은 친구인셈.. 이제 브레이크포인트를 이용해야하는데 원리는 간단하게 모듈의 핸들을구하고 해당 모듈에서 브레이크포인트를 설정할 함수의 주소를 구해서 넣으면된다!
-
Soft BreakPointHack/Reversing 2015. 1. 16. 17:41
저번강의에서 소프트 브레이크포인트는 INT 3를 사용하고 하드 브레이크포인트는 INT 1을 사용한다고 했었다. INT 3,1은 인터럽트 구분을 위해서 사용되고, 이번엔 소프트 브레이크포인트에대해서 다룰것이다. 브레이크포인트를 설정하려면 프로세스의 메모리를 읽기,쓰기가 되어야하기때문에 두개의 함수가 필요하다. ReadProcessMemory(), WriteProcessMemory() 말그대로 프로세스메모리값을읽고, 쓰는 함수다. Read나 Write나 파라미터는 하나빼고 모두 같기때문에 하나의 파라미터만 올린다. 우선 hProcess는 메모리주소를 읽을 프로세스의 핸들 값이다. 그리고, lpBaseAddress는 읽거나 쓰기의 메모리 영역 시작주소를 넣는다. lpBuffer는 데이터를 읽거나 쓸때 사용하는..
-
-
DLL InjectionHack/Reversing 2015. 1. 15. 18:13
안녕하세요 송사리입니다. 이번 강의에서는 DLL Injection에대해서 다뤄보려합니다. DLL Injection이란 프로그램실행시 프로세스에 올라가게됩니다. 그 프로세스를 이용해서 DLL을 인젝션, 즉 주입시키는것입니다그럼 DLL은 메인에서는 자기의역할을하고 프로세스에서는 지정된역할을 할수있습니다 DLL Injection기법을이용하면 정말 최강의 공격이 탄생합니다 이로서, 강의해드리려합니다 일단 기본적인것부터 강의해드리려합니다. 아래와같이 DLL을 만들어봅시다 ㅎㅎ 우선 Visual C++ 6.0을 기준으로 설명해드릴겁니다. 우선 프로젝트생성을하시고 Win32 Dynamic-Link Library를 선택하신후 파일명을 입력해주시면됩니다 DLL은 Dynamic-Link Library의 약자입니다. 참고해..
-
CreateToolhelp32Snapshot()Hack/Reversing 2015. 1. 15. 02:52
해당함수는 kernel32d에서 임포트하는 함수다. 전에 OpenThread() 함수에서 설명한대로 쓰레드 리스트를 뽑아와야하는데 해당 함수가 쓰레드 리스트를 뽑아와준다. 추가로 이 함수는 프로세스의 힙리스트, 모듈리스트 까지 모두 뽑아와준다. 함수의 프로토타입이다. dwFlags에서는 해당함수가 무엇을 구할지 선택하는 인자이다. 이렇게 많은 인수들이있다. 우리는 실행중인 스레드의 리스트를 구하려면 TH32CS_SNAPTHREAD, 0ㅌ00000004를 주어야한다. 그뒤에 인자는 스냅샷을 구하고자하는 프로세스의 아이디를 입력하면된다.