更改函数返回值
|
我有一个.net应用程序正在执行COM互操作并调用一些本机库API。这些API之一返回了一些意外的数据,这让我头疼。我正在寻找某种强制托管API返回值的方法。这不会解决我的问题,但是可以帮助我缩小一些范围。我在下面简化一些内容。
牢记所有这些,假设我的托管类名称为MyClass,它有两个方法ParentMethod()和ChildMethod()。 ParentMethod调用ChildMethod,后者内部调用这些本机API。 ChildMethod本身返回布尔值。
通过Windbg进入我的应用程序后,我首先运行!dumpheap -type MyClass命令,该命令给了我以下输出
0:027>!dumpheap类型的MyClass
地址MT大小
0ac7e7e4 04ac5030 100
共0个物件
统计:
MT计数TotalSize类名称
04ac5030 1100 MyNamespace.MyClass
总计1个物件
然后,我运行以下命令,尝试获取此类中方法的地址。
0:027>!dumpmt -md 04ac5030
EEClass:04ac1b20
模组:04ac49c8
名称:MyNamespace.MyClass
mdToken:02000002
文件:MyAssemblyName,版本= 1.0.0.0,区域性=中性,PublicKeyToken =空
基本大小:0x64
组件大小:0x0
VTable中的插槽:61
IFaceMap中的IFace数量:4
方法描述表
输入方法Desc JIT名称
04b20270 04ac4fd0 JIT MyNamespace.MyClass..ctor()
04b20230 04ac4ffc JIT MyNamespace.MyClass..cctor()
04acc081 04ac4fd8无MyNamespace.MyClass.ParentMethod()
04acc085 04ac4fe4无MyNamespace.MyClass.ChildMethod()
04b202c0 04ac4ff0 JIT MyNamespace.MyClass.InitializeComponent()
我找到了Naveen的博客条目,其中他描述了沿同一方向做某事的一些技巧,但是我不知道应该从这里采取什么确切的步骤。任何帮助将不胜感激。
没有找到相关结果
已邀请:
1 个回复
坛沤疲撑拆
-这是ChildMethod 当断点命中时,发出命令“ 1”,该命令在返回寄存器上设置断点 当第二个断点到达时,您可以使用
将值更改为true。
寄存器将返回值存储在x86中 或者另一种方法是to4ѭ,它将在一行中完成相同的操作