본문 바로가기

스터디/파이썬 해킹 프로그래밍

(27)
Soft Breakpoint 까지의 이론 정리 소프트 브레이크 포인트를 설정하려면 프로세스의 메모리를 읽고 쓸 수 있어야 하는데, 이를 위해 ReadProcessMemory() 함수와 WriteProcessMemory() 함수를 이용한다.아래는 두 함수의 프로토 타입이다. BOOL WINAPI ReadProcessMemory( HANDLE hProcess , LPCVOID lpBaseAddress, LPVOID lpBuffer‘, SIZE_T nSize, SIZE_T* lpNumber‘OfBytesRead ); BOOL WINAPI riteProcessMemory( HANDLE hProcess , LPCVOID lpBaseAddress , LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumber OfBytes itten..
파이썬 해킹 프로그래밍 서적 오류 수정 다음은 Fandu 형이 정리하신"파이썬 해킹 프로그래밍" 서적에 대한 오류 정리 글을 퍼온 것이다.출처 : http://fandu.tistory.com/entry/Gray-Hat-Python%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%95%B4%ED%82%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%B1%85%EC%97%90-%EC%9E%88%EB%8A%94-%EC%98%A4%EB%A5%98-%EB%B0%8F-%ED%95%B4%EA%B2%B0%EB%B2%95%EB%B2%95-%EC%A0%95%EB%A6%AC 절대 내가 쓴것이 아님을 다시 한번 밝힌다. 출처출처출처출처출처출처출처출처출처출처출처출처 Grat Hat Python을 공부해 보신 분이..
디버거 이벤트 헨들러 구현 출처! 저번에는 디버거에 PID를 이용해 프로세스를 attach 까지 했다. 이번에는 디버거 핸들러 구현을 할것이다.이벤트가 발생했을 때 디버거가 그 이벤트에 반응하려면, 각 디버깅 이벤트에 대한 핸들러가 있어야 한다.--> WaitForDebugEvent() 함수를 이용하는데, 이 함수는 이벤트가 발생할 때마다 DEBUG_EVENT 구조체를 반환한다. DEBUG_EVENT 구조체의 구조는 typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Exception; CREATE_THREAD_DEBUG_INFO CreateThread; CREATE_P..
디버거와 프로세스를 연결하는 방법, CPU 레지스터 값을 출력하는 방법 지식출처: http://scytalezz.tistory.com/21 BOOL CreateProcess { } 프로세스를 디버깅 하려면 일단 디버거와 프로세스를 연결해야 한다.그래서 디버거에서 직접 프로세스를 실행시키거나, 이미 실행한 프로세스의 PID를 이용해 붙여야 한다. 프로세스를 실행시키는 경우, 프로세스의 코드가 실행되기 전 디버거가 제어를 할 수 있다는 장점이 있다.윈도우에서 프로세스를 실행시킬 때 CreateProcess() 함수를 호출한다. BOOL CreateProcess( LPCWSTR pszImageName, // 실행시킬 실행 바이너리 경로 LPCWSTR pszCmdLine, // 커맨드라인 인자 전달 LPSECURITY_ATTRIBUTES psaProcess, LPSECURITY_A..
DLL 기초개념 http://xenostudy.tistory.com/6 출처의 내용으로 내용을 정리.스터디 중에 나온 질문에 대한 답변 링크. 글쓴이 : Xeno출처 : Visual C++ programming Bible Ver.6.x /MSDN DLL 이란? DLL(Dynamic Link Library)은 여러 함수의 공유 라이브러리로 사용되는 실행파일.동적 링크를 통해 프로세스에서 해당 프로세스의 실행 코드에 포함되지 않은 함수를 호출할 수 있음.함수의 실행코드는 DLL에 있음.DLL에는 이것을 사용하는 프로세스와는 별도로 컴파일, 링크 및 저장되는 하나 이상의 함수가 포함되어 있음.--> 여러 개의 응용 프로그램이 메모리에 있는 하나의 DLL 복사본 내용을 동시에 액세스 할 수 있음. [+] 함수 이름과 주소를 매..
스터디 질문 답변 Q3. JTP 12345 -> 12,345 예제에서 소스코드 구조 질문 # commanumber.py import string def comma_number(number): if number[0] in ['+', '-']: sign_mark, number = number[:1], number[1:] else: sign_mark = '' try: tmp = string.split(number, '.') num = tmp[0]; decimal = '.' + tmp[1] except: num = number; decimal = '' head_num = len(num) % 3 result = '' for pos in range(len(num)): if pos == head_num and head_num: res..
2015-01-15 스터디 http://xenostudy.tistory.com/6정리할 것 각자 질문 내용최호수1. 동적 라이브러리를 링크할 때, 외부에 제공하는 export 함수란?--> http://xenostudy.tistory.com/6 (DLL 작동방식) 2. 스택 프레임에서 스택은 아래서 위로 쌓아 올린다. 와이?--> 아래와 위에서 안쪽으로 쌓아 올려서 효율적인 메모리 활용이 가능하다. 정상민1. 파이썬 해킹 28페이지에서"하지만 함수 호출자가 스택을 정리하는 것이 아니라 호출된 함수가 리턴하기 바로 전에 스택을 정리한다."가 무슨 뜻인지 이해를 못함.--> 함수 호출 규약 (cdecl, stdcall) 자체가 다른 것. 스택을 호출자가 정리하느냐, 피호출자가 정리하느냐 차이.--> 추후 좀 더 찾아볼 것2. 유니언의..
2015-01-12 질문 정리 Q1. 책에서는 Win32 API가 stdcall을 사용한다고 말했는데, 어떤 곳에서는 윗 부분처럼 함수의 파라미터가 명확하게 정의되어 있어 함수 내부에서 파라미터를 pop하는 cdecl 방식을 주로 이용한다고 함. 진실은? Q2. 스택에서 꺼낼 때, 함수내에서 pop 하는 것과 호출자에서 pop 하는 것중 무엇이 다르며, 왜 함수 내에서 가변적인 파라미터를 스택에서 pop 할 수 없는가. Q3. JTP 12345 -> 12,345 예제에서 소스코드 구조 질문