0xlane/BypassUAC

debug 下 C语言代码出现异常

GUANCAIBAN opened this issue · 4 comments

BypassUAC.exe 已触发了一个断点。
没有多余的详细信息

release模式没问题?如果是这样,对比一下release和debug语言运行时环境的区别。
如果都有问题的话,将main函数中的几个函数挨个注释,观察一下是哪个函数产生的异常,然后分析处理一下

release模式没问题。排查出来了,
LPWSTR pwExplorer = (LPWSTR)malloc(MAX_PATH*8);
分配给pwExplorer的内存大小不足,我简单*8了一下,可以了。当然,规范的不应该这么写,但我也不晓得应该怎么给较好的大小。

还有另一变量需要初始化赋值
WCHAR chExplorer[MAX_PATH] = {0};

release模式没问题。排查出来了, LPWSTR pwExplorer = (LPWSTR)malloc(MAX_PATH*8); 分配给pwExplorer的内存大小不足,我简单*8了一下,可以了。当然,规范的不应该这么写,但我也不晓得应该怎么给较好的大小。

规范写法:LPWSTR pwExplorer = (LPWSTR)malloc(MAX_PATH * sizeof(WCHAR));