본문 바로가기

분류 전체보기231

3장-3 디버그 이벤트 핸들러 구현 디버그 이벤트 핸들러 구현이벤트가 발생했을 때 그 이벤트에 반응하기 위해서는 각 디버깅 이벤트에 대한 핸들러를 구현해야 한다. DEBUG_EVENT구조체에대해 자세히 알아보고 구조체 내부의 정보를 이용해 어떻게 디버깅이벤트를 처리할 것인지 판단할 것이다.DEBUG_EVENT-----------------------------------------------------typedef struct DEBUG_EVENT {DWORD dwDebugEventCode;DWORD dwProcessId;DWORD dwThreadId;union {EXCEPTION_DEBUG_INfO Exception;CREATE_THREAD_DBUG_INFO CreateThread;CREATE_PROCESS_DEBUG_INFO Creat.. 2015. 1. 15.
3장-2 CPU 레지스터 상태 얻기 CPU 레지스터 상태 얻기디버거는 언제든지 CPU 레지스터의 상태 정보를 캡처할 수 있어야 한다.그러기 위해 OpenThread() 함수를 이용해 디버깅 대상 프로세스의 핸들을 얻어야 한다.OpenThread() 함수의 프로토타입-----------------------------------------------------HANDLE WINAPI OpneThread(DWORD dwDesiredAccess,BOOL bInheritHandle,DWORD dwThreadId);-----------------------------------------------------OpenProcess() 함수의 프로토타입-----------------------------------------------------HAN.. 2015. 1. 14.
3장-1 디버기 디버기프로세스를 디버깅하려면 어떤 식으로든 먼저 해당 프로세스에 연결해야 한다.디버깅할 프로세스를 실행시키거나 이미 실행중인 프로세스에 붙여야 한다.윈도우는 이 두 가지 작업을 쉽게 수행할 수 있게 하는 디버깅 API를 제공한다. 프로세스를 실행하는 것 // 프로세스에 붙히는 것프로세스를 실행시키는 경우는 해당 프로세스의 코드가 실행되기 전에 제어를 할 수 있다는 장점이 있다. 악성코드를 분석할 때 좋겠다.프로세스에 붙히는 것은 단지 이미 실행 중인 프로세스에 연결하는 것이다. 관심이 있는 특정 영역의 코드만을 분석할 수 있다.디버깅하려는 대상 프로세스가 어떤 것인지, 분석하려는 목적이 무엇인지에 따라 두 가지 방법 중 하나를 선택하면 된다. 프로세스를 실행시켜 디버깅하기디버거가 실행 바이너리를 직접 실.. 2015. 1. 14.
2장-디버거 디버거디버거는 해커에게 매우 중요함디버거는 실행 중인 프로세스를 트레이스하거나 동적 분석을 한다.동적 분석은 악성 코드 조사나 퍼저 적용에 있어 필수적인 요소다.디버거는 프로세스를 실행시키거나 일시 정지시킬 수 있으며, 브레이크 포인트를 설정하거나 레지스터와 메모리 값을 수정할 수 있다.디버거는 두 가지 종류로 나뉜다.화이트박스 디버거 : 대부분의 개발 플랫폼이나 IDE는 개발자가 자신이 작성한 소스코드를 트레이스 할 수 있게 디버거를 자체적으로 내장하고 있는데 이를 화이트 박스 디버거라 부른다.개발 과정에서 유용하게 사용된다고 한다.블랙박스 디버거 : 소스코드가 없는 환경에서 사용되는 디버거를 블랙박스 디버거라 부른다.어셈블리 코드만을 알 수 있을때에 사용되는 디버거란다. 숙련된 리버스 엔지니어링 고수.. 2015. 1. 12.
1장 ctypesctypes은 파이썬 개발자가 이용할 수 있는 가장 강력한 라이브러리 중 하나다.ctypes 라이브러리 에서는 세 가지 방법으로 동적 라이브러리를 로드할 수 있다.cdll() - cdecl 호출 규약을 이요하는 함수를 익스포트 하는 라이브러리를 로드하는데 사용 windll() - 마이크로소프트 win32 API가 사용하는 stdcall 호출 규약을 이요하는 함수를 익스포트하는 라이브러리를 로드하는 데 사용 oledll() - windll() 방법과 동일하게 동작하지만 익스포트 함수가 반환하는 값이 HRESULT라 가정한다. 이 세 가지의 방법의 차이점은 익스포트 함수를 호출하는 방법과 리턴 값을 반환하는 방법에 있다.익스포트함수가 뭔지 모르겠다... 알게되면 수정을 해야겠다.HRESULT =>.. 2015. 1. 12.
점투파-4_2(파이썬 날개달기) 모듈모듈은 다른 파이썬 프로그램에서 불러올 수 있는 파이썬 파일을 말한다. 모듈 만들고 블러보기#mod1.pydef sum(a,b)return a+b >>>import mod1>>>print mod1.sum(3,5)8 첫번째는 모듈을 만든것이고 두번째는 만든 모듈을 불러낸 것이다. if__name__ == "__main__" : 의 의미mod1.py 처럼 직접 실행 시켰을 때는 위의 식이 참이되지만다른 파일에서 mod1.py를 실행하면 위의 식이 거짓이 되어 if문 아래의 문장들이수행이 되지 않는다. 책에 예제가 많다. 꼭 봐야 이해가 갈것이다. 다른곳에있는 모듈 불러오기일단 sys모듈을 불러온다>>>import sys sys.path.append("위치")를 실행 후sys.paht를 실행하면 다른곳에 .. 2015. 1. 11.
728x90