老文章——修改可执行文件路径和参数
看雪上看到一篇老文章,六年半前的。关于动态修改可执行文件路径和参数。
Ring3可以修改PEB的ProcessParameters成员的一些值,Ring0通过修改EPROCESS的ImageFileName成员值。可以瞒过一些东西。
但是现在看来这都不太现实,主防不会傻到这种程度,不过思路确实很有意思,而且它的代码中有一段很有启发性,解决了EPROCESS在不同系统上的不同。
ULONG GetNameOffsetInEProcss()
{
PEPROCESS pProcess = NULL;
ULONG i = 0;
pProcess = PsGetCurrentProcess();
for ( i = 0; i < 0x1000; i++)
{
if ( strncmp( "System", (PUCHAR)pProcess + i, strlen("System")) == 0)
{
return i;
}
}
return 0;
}
在DriverEntry中调用,可以找到ImageFileName域的偏移。