Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我正在为REing一个用于学校的程序而工作,有两行我似乎不太清楚。
首先是程序调用
我们为什么要那样做?阅读
现在,为什么程序要用
还有什么其他
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我正在为REing一个用于学校的程序而工作,有两行我似乎不太清楚。
首先是程序调用
GetCurrentProcess
,然后下一行是:LEA eax, -something-
我们为什么要那样做?阅读
GetCurrentProcess
时,我发现它会返回当前进程的句柄,并将该句柄的值放在eax
中。现在,为什么程序要用
eax
删除lea
中返回的值?如果根本不使用返回值,为什么还要调用此函数呢?还有什么其他
GetCurrentProcess
可以证明其合理性吗? 最佳答案
在Windows操作系统下,您始终可以通过伪句柄访问当前进程,该伪句柄的值为(HANDLE)-1
。该值肯定是您发现直接在第二行的eax
中加载的值,但这也是GetCurrentProcess()
返回的值。
如果我很好地理解您是对软件进行逆向工程,我认为原始程序员决定从一个系统传递到另一个系统,从常量(HANDLE)-1
到GetCurrentProcess()
,或者通过反向传递而忘了注释掉前者选择。
您做出的任何选择都不应出现副作用。
有关更多信息,请参见https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx。
08-16 11:18