忽略返回值调用 GetCurrentProcess
Calling GetCurrentProcess disregarding the returned value
我正在为学校重新设计一个程序,但有两行我似乎不太明白。
首先是程序调用GetCurrentProcess
,然后下一行是:
LEA eax, -something-
我们为什么要这样做?阅读 GetCurrentProcess
我发现它 returns 当前进程的句柄,将该句柄的值放入 eax
.
现在为什么程序会用 lea
删除 eax
中返回的值?如果它根本不使用返回值,为什么还要调用这个函数?
还有什么 GetCurrentProcess
可以证明它的合理性吗?
在 windows 操作系统下,您始终可以通过 伪句柄 访问当前进程,其值为 (HANDLE)-1
。这个值肯定是你在第二行的eax
中直接找到的值,但这也是GetCurrentProcess()
returns.
的值
如果我很清楚你正在对一个软件进行逆向工程,在我看来,最初的程序员决定从一个系统传递到另一个系统,从常量 (HANDLE)-1
到 GetCurrentProcess()
,或者相反而忘记了注释掉之前的选择。
您做出的任何选择都不应存在副作用。
有关详细信息,请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx。
我正在为学校重新设计一个程序,但有两行我似乎不太明白。
首先是程序调用
GetCurrentProcess
,然后下一行是:LEA eax, -something-
我们为什么要这样做?阅读
GetCurrentProcess
我发现它 returns 当前进程的句柄,将该句柄的值放入eax
.现在为什么程序会用
lea
删除eax
中返回的值?如果它根本不使用返回值,为什么还要调用这个函数?
还有什么 GetCurrentProcess
可以证明它的合理性吗?
在 windows 操作系统下,您始终可以通过 伪句柄 访问当前进程,其值为 (HANDLE)-1
。这个值肯定是你在第二行的eax
中直接找到的值,但这也是GetCurrentProcess()
returns.
的值
如果我很清楚你正在对一个软件进行逆向工程,在我看来,最初的程序员决定从一个系统传递到另一个系统,从常量 (HANDLE)-1
到 GetCurrentProcess()
,或者相反而忘记了注释掉之前的选择。
您做出的任何选择都不应存在副作用。
有关详细信息,请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx。