【发布时间】:2019-08-01 07:37:07
【问题描述】:
我正在尝试在 Windows 中使用 .dll 来测试 Windows 中的自定义登录。这是source of dll。
注意: 这更像是一个一般的调试问题(可能不需要我正在使用的 .dll 插件的工作)
Dll 加载正常(我可以在 Windows 登录屏幕上直观地验证这一点)但是当我输入密码和 Otp 并提交时,它会给出错误提示 stack around the variable onelinew is corrupted。据我所知,这意味着它要么是因为写入的数据超出缓冲区可以容纳的量,要么是因为试图引用不在内存中的东西?
我尝试附加windbg 调试器以查找堆栈损坏的来源并尝试查看堆栈帧/调用堆栈/寄存器值等各种事物......但我被困在如何理解这是因为我对这种调试方式有点陌生(现在 2 天)。
我将附上错误和堆栈调用的屏幕截图,希望有人能告诉从这里继续往哪里走。
此插件创建的日志文件中的最后一条日志是MultiotpCredential::Dll compiled with SKIP_OTP_CHECK !!!!!!!!",即defined here
出现在错误框中的变量onelinew是defined here:
void PrintLn(const wchar_t *message, int line)
{
INIT_ZERO_CHAR(date_time, MAX_TIME_SIZE);
GetCurrentTimeAndDate(date_time);
WriteLogFile(date_time);
// MessageBox(NULL, (LPCWSTR)message, NULL, MB_ICONWARNING);
wchar_t onelinew[1024];
swprintf_s(onelinew, sizeof(onelinew), message, line);
// OutputDebugStringW(message);
WriteLogFile(onelinew);
WriteLogFile("\n");
}
【问题讨论】:
标签: windows debugging dll windbg