有没有办法通过十六进制的DLL代码来执行程序的执行?
例如,我想查看按下按钮时刚读过的部分。它必须适用于x64 DLL。
谢谢!
答案 0 :(得分:3)
是的,您将流程加载到调试器中并单步执行。
答案 1 :(得分:2)
答案 2 :(得分:0)
您可以使用http://ircdb.org处的工具来记录函数调用任意DLL。
它的名字是SocketSpy,因为最初它是为跟踪winsock.dll而创建的,但它确实允许你跟踪其他dll。
来自http://fixunix.com/programmer/95098-tracing-library-dll-calls-win32.html
使用选项 - >默认断点列表 用于添加或删除软断点的菜单 来自附加的DLL。放软 断点只在您需要的功能 最大化执行时间。
软断点表示socketspy 不仅仅停留在这个断点处 记录断点信息。硬 断点意味着socketspy DOES 停在这个断点处,然后 断点对话框已打开。指定 应该捕获什么电话, 来自EXE FILE或DLL(Combobox)。
指定日志文件文件 - >打开日志文件 菜单如果要保存功能 DLL调用文本文件,启用 记录(复选框)。
然后选择一个新动作或已经动作 进程(选择处理按钮)。该 工具只能在NT / 2000 / XP中使用
或者,有StraceNT,它可以跟踪任意Dll。它可以从http://www.intellectualheaven.com/default.asp?BH=projects&H=strace.htm
免费获得答案 3 :(得分:0)
我没有使用它,但我曾经偶然发现了一个英特尔工具,该工具对指令指针的上下文进行采样,并且能够使用符号文件将IP转换为实际的函数名称...... {{3}也许?
我猜可能还有其他类似工具
更新:又名。 VTune ...
答案 4 :(得分:0)
使用IDE进行调试不会显示与执行IL指令等效的汇编语言。你需要把你自己的钩子编写成一个合适的反汇编程序。