我是微软Detours的新手.我已经安装它来跟踪进程所做的系统调用.我运行以下来自网络的命令
syelogd.exe /q C:\Users\xxx\Desktop\log.txt
withdll.exe /d:traceapi.dll C:\Program Files\Google\Google Talk\googletalk.exe
Run Code Online (Sandbox Code Playgroud)
我得到了日志文件.问题是我不完全理解这里发生了什么.弯路如何运作?它如何跟踪系统调用?另外我不知道如何读取log.txt中的输出.这是log.txt中的一行
20101221060413329 2912 50.60: traceapi: 001 GetCurrentThreadId()
Run Code Online (Sandbox Code Playgroud)
最后,我想获得该过程的堆栈跟踪.我怎么能得到它?
Pab*_*abo 26
Detours让你拦截任何功能.它会在您指定的地址中放置一个jmp,为您的代码创建一个蹦床.最后,如果要执行此操作,请调用旧函数.要使用Detours,您必须在要拦截的过程中注入代码.
为了简化这个过程,您可以使用Deviare API Hook来完成所有注入人员,您可以使用任何支持COM技术的编程语言的拦截应用程序,包括.NET,Delphi,C++,Python等.下载软件包后,您将在其中找到一些例子.有一个名为DeviareCSharpConsole的控制台,可以拦截显示完整堆栈跟踪信息的任何进程的任何API.
这是Deviare API Hook的工作方式,但如果您想创建一个挂钩另一个进程的应用程序,则需要执行此操作:

应在目标进程中创建代理以拦截所需的API.要拦截这些API,您可以使用Detours,但您必须编写未包含在该库中的IPC人员.
如果您需要使用Deviare API Hook在目标进程内编写代码,则可以使用Deviare Custom Hooks.此功能允许您拦截API并异步处理已处理的参数.
mar*_*ona 22
取而代之的弯路(这是免费的,仅32位)或easyhook(这是KHM,一个的小有点乱码),你可能想看看mhook 2.4,这是非常整洁的代码和BSD许可.适用于x86和x64,处理IP相关代码等.
还有关于它如何在网站上工作的详尽描述.

对于堆栈跟踪,你可以使用CaptureStackBackTrace()的kernel32,或者如果你想获得幻想,用StackWalk64()从dbghelp.
TCS*_*TCS 16
首先,我强烈建议,如果你想执行API挂钩,我会选择easyhook:http://easyhook.codeplex.com/ (开源).这是一个非常好的,简单的api-hook框架.
关于如何获取堆栈跟踪,我不记得到底是怎么做的,但请查看WinAPIOverride32:http://jacquelin.potier.free.fr/winapioverride32/ (开源).他正是这样做的,而且它是开源的.此外,如果您需要用于研究的跟踪,WinAPIOverride32是一个很好的应用程序,用于研究应用程序的工作方式.
编辑:只需再添加一个应用程序.http://www.rohitab.com/就像WinAPIOVerride32,但它支持64位,自从我写这个答案后它真的有所改进.我必须指出它在某些情况下它错过了我在WinAPIOverride32中找到的API调用,但它仍然相当不错.不幸的是,该来源尚未发布.
关于api-hook如何工作,嗯这是一个很长的解释,我会指向你这篇文章:http: //www.codeproject.com/KB/system/hooksys.aspx 它给出了一个很好的解释如何在引擎盖(除了那里写的还有其他方法,但仍然是一篇非常好的文章).
希望能帮助到你!:-)
| 归档时间: |
|
| 查看次数: |
18860 次 |
| 最近记录: |