2010-12-22 4 views
19

저는 Microsoft Detours를 처음 사용합니다. 프로세스 호출을 추적하도록 설치했습니다. 웹에서 가져온 다음 명령을 실행합니다.Microsoft Detours는 어떻게 작동하며 스택 추적을 얻으려면 어떻게 사용합니까?

syelogd.exe /q C:\Users\xxx\Desktop\log.txt 
withdll.exe /d:traceapi.dll C:\Program Files\Google\Google Talk\googletalk.exe 

로그 파일이 있습니다. 문제는 여기서 무슨 일이 일어나고 있는지 완전히 이해하지 못한다는 것입니다. 우회로는 어떻게 작동합니까? 시스템 호출을 어떻게 추적합니까? 또한 log.txt의 출력을 읽는 방법을 모르겠습니다. 여기

20101221060413329 2912 50.60: traceapi: 001 GetCurrentThreadId() 

마지막으로 내가 프로세스의 스택 트레이스를 취득 할 log.txt에의 한 줄입니다. 어떻게해야합니까?

답변

22

Detours를 사용하면 모든 기능을 차단할 수 있습니다. 그것은 여러분의 코드에 트램펄린을 만드는 것을 지정하는 주소에 jmp를 위치시킵니다. 마지막으로, 원하는 경우 이전 함수를 호출합니다. Detours를 사용하려면 인터셉트하려는 프로세스에 코드를 삽입해야합니다.

Deviare API Hook을 사용할 수있는이 과정을 단순화 할 않는 모든 사출 직원과 당신은을 다운로드 한 후 .NET, 델파이, C++, 파이썬을 포함하여 COM 기술을 지원하는 모든 프로그래밍 언어 등 에서 요격 응용 프로그램을 사용할 수 있습니다 패키지에는 몇 가지 예제가 있습니다. DeviareCSharpConsole이라는 콘솔이있어 전체 스택 추적 정보를 보여주는 모든 프로세스의 API를 가로 채게합니다.

Deviare API Hook 작품이지만 다른 프로세스 후크 응용 프로그램 만들려면 당신이해야 할 것입니다 : 에이전트가 대상 프로세스에서 작성해야

Deviare API Hook Design

이 요격을 원하는 API. 이러한 API를 가로 채려면 Detours를 사용할 수 있지만 해당 라이브러리에 포함되지 않은 IPC 스태프를 코딩해야합니다.

Deviare API Hook을 사용하여 대상 프로세스 내에 코드를 작성해야하는 경우 Deviare Custom Hooks을 사용할 수 있습니다. 이 기능을 사용하면 API를 인터셉트하고 처리 된 매개 변수를 비동기 적으로 처리 할 수 ​​있습니다. 또는 easyhook (32 비트 무료입니다) 대신 우회의

15

우선 API 후킹을 수행하려면 easyhook : http://easyhook.codeplex.com/ (오픈 소스)과 함께 할 것을 권합니다. 아주 좋고 쉽게 api-hooking 프레임 워크입니다.

스택 추적을 얻는 방법에 대해서는 정확히 어떻게 수행했는지 기억하지 않지만 WinAPIOverride32 : http://jacquelin.potier.free.fr/winapioverride32/ (오픈 소스)을 확인하십시오. 그는 정확히 그것을하고 있으며 오픈 소스입니다. 게다가 연구의 흔적이 필요한 경우 WinAPIOverride32는 응용 프로그램 작동 방식을 연구하는 데 사용하는 훌륭한 응용 프로그램입니다.

편집 : 애플리케이션을 한 개 더 추가하기 만하면됩니다. http://www.rohitab.com/은 WinAPIOVerride32와 비슷하지만 64 비트를 지원하며이 답변을 작성한 이후로 정말 개선되었습니다. 필자는 WinAPIOverride32에서 발견 한 API 호출을 놓친 경우가 있지만, 여전히 양호하다는 점을 지적해야합니다. 불행히도 출처는 공개되지 않습니다. API를 후킹 작품, 음의 긴 설명, 나는이 문서를 가리키는 것입니다 방법에 대한

: http://www.codeproject.com/KB/system/hooksys.aspx 그것은이 후드 수행하는 방법의 꽤 좋은 설명을 제공 (것 외에 다른 방법이있다 거기에 쓰여졌지만 여전히 아주 좋은 기사입니다).

희망이 있습니다. :-)

20

(이다, KHM하는 작은 지저분한 코드) 당신은 매우 깔끔한 코드와 BSD 라이센스 인 mhook 2.4을 체크 아웃 할 수 있습니다. x86 및 x64에서 작동하고 IP 상대 코드를 처리합니다.

사이트에서 작동하는 방식에 대한 철저한 설명이 있습니다.

alt text

스택 백 트레이스에 관해서는, 당신은 kernel32에서 CaptureStackBackTrace()를 사용하거나 공상을 원한다면, dbghelp에서 StackWalk64()을 사용합니다.

관련 문제