通过十六进制表示中的.DLL执行程序执行

时间:2010-06-28 21:25:11

标签: windows debugging dll hex

有没有办法通过十六进制的DLL代码来执行程序的执行?

例如,我想查看按下按钮时刚读过的部分。它必须适用于x64 DLL。

谢谢!

5 个答案:

答案 0 :(得分:3)

是的,您将流程加载到调试器中并单步执行。

答案 1 :(得分:2)

  1. 在visual studio中加载项目。
  2. 按“播放”或F5在调试器中启动程序。
  3. 您最终需要暂停执行,以便开始逐步执​​行代码或汇编代码。您可以通过插入断点或通过在visual studio IDE中点击break命令来中断执行来实现此目的。
  4. 暂停后,您可以右键单击代码视图窗口,然后选择“显示反汇编”。然后它会显示机器说明。
  5. 同样在visual studio调试器的监视窗口中,右键单击弹出菜单可以选择将所有变量显示为十六进制。我最近开始更喜欢hex,因为我可以更容易地看到无效的内存模式。

答案 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指令等效的汇编语言。你需要把你自己的钩子编写成一个合适的反汇编程序。