首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EasyHook - CRT调试断言失败-“缓冲区太小”

EasyHook - CRT调试断言失败-“缓冲区太小”
EN

Stack Overflow用户
提问于 2017-02-05 23:18:49
回答 1查看 307关注 0票数 2

我有一个注入器,它调用以下(删节的)代码:

代码语言:javascript
复制
var processes = Process.GetProcessesByName("target");
/* ... */
var process = processes[0];
/* ... */
process.Kill();
RemoteHooking.CreateAndInject(process.MainModule.FileName, string.Empty, 0,
    InjectionOptions.NoService | InjectionOptions.DoNotRequireStrongName,
    typeof(EntryPoint).Assembly.Location, typeof(EntryPoint).Assembly.Location,
    out injectedProcessId, null);

应该注入的DLL只有以下代码:

代码语言:javascript
复制
public class EntryPoint : IEntryPoint {
    public EntryPoint(RemoteHooking.IContext InContext) {}

    public void Run(RemoteHooking.IContext InContext) {
        RemoteHooking.WakeUpProcess();
        Thread.Sleep(5000);
    }
}

不幸的是,注入器崩溃了,典型的Windows错误报告工具出现了,根本没有可视化的异常消息,甚至没有进入DLL。事件视图中的错误如下所示:

代码语言:javascript
复制
Faulting application name: TestInjector.vshost.exe, version: 14.0.23107.0, time stamp: 0x559b788a
Faulting module name: EasyHook64.dll, version: 2.7.0.0, time stamp: 0x589704aa
Exception code: 0xc0000409
Fault offset: 0x0000000000091a9b

在调试模式下运行时,我无法一步一步地遍历EasyHook代码以找到关键位置,但我至少得到了一个异常:

关于如何进一步调试这个问题并找出导致它的原因,您有什么建议吗?我甚至试图关闭各种应用程序以减少干扰,但都没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 09:35:16

我可以解决这个错误-我调用的应用程序也得到了一个命令行参数(不幸的是,它不在我的样例代码中),这对于库来说太长了。因此,我增加了缓冲区大小right here以及对它的引用调用right here,它现在可以正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42053685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档