更改函数返回值

| 我有一个.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 04ac4f​​d0 JIT MyNamespace.MyClass..ctor()   04b20230 04ac4f​​fc JIT MyNamespace.MyClass..cctor()   04acc081 04ac4f​​d8无MyNamespace.MyClass.ParentMethod()   04acc085 04ac4f​​e4无MyNamespace.MyClass.ChildMethod()   04b202c0 04ac4f​​f0 JIT MyNamespace.MyClass.InitializeComponent() 我找到了Naveen的博客条目,其中他描述了沿同一方向做某事的一些技巧,但是我不知道应该从这里采取什么确切的步骤。任何帮助将不胜感激。     
已邀请:
这是简单的步骤
bp 04acc085
-这是ChildMethod 当断点命中时,发出命令“ 1”,该命令在返回寄存器上设置断点 当第二个断点到达时,您可以使用
r eax=00000001
将值更改为true。
eax
寄存器将返回值存储在x86中 或者另一种方法是to4ѭ,它将在一行中完成相同的操作     

要回复问题请先登录注册