-
-
[原创]Gnu Prolog 内存大小设置不当 VirtualProtect函数487错误 启动失败修复
-
发表于: 2020-12-3 11:49 2915
-
Gnu Prolog 1.4.5
(compiled under x86_64 / Windows 7 with MSVC++)
由于Gnu Prolog Setting中默认的最大内存大小才32kb,实在不够看,所以lz在Setting里面将它调大了一些。
重启软件就闪出命令行窗口,不能打开GUI。
PwSh中执行gprolog.exe,看到以下报错:
应该是lz设置内存大小不当,导致内存页保护的函数Error了。
试着重装让其恢复默认,但是遗憾的是卸载的并不干净,程序的配置依然没有删除,重新安装后依然默认读取以前的配置,程序还是进不去……
卸载时lz注意到程序目录里面的文件是删除的很干净了,而重装回来的程序依然能读取到配置,故猜想程序的配置是保存在注册表中的。
所以思路就是删掉配置,让gprolog恢复默认,嗯,就酱。
扔进ida64,看导入表:
发现确实有注册表读写操作,查看函数的Xref交叉引用,定位到sub_48FDF0。
可以看出是进入HK\Software\GnuProlog中读取键值,但是这个HK具体是啥我不知道(对应图中hKey参数,是一个常量),索性百度一下RegOpenKeyEx。
ok,这回知道常量名字是啥了,拿出masm32的window.inc打开,搜索常量名字。
这回终于知道读取的是哪个主键了,HKCU。
注册表找到HKCU\Software\GnuProlog,发现果然储存着配置,直接整个注册表项干掉。
重新打开gprolog.exe,它终于正!常!启!动!了!泪目!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-12-3 11:51
被老刘NoOne编辑
,原因: 图挂了修一下
赞赏
他的文章
看原图
赞赏
雪币:
留言: