调用GetCurrentProcess忽略返回的值

时间:2016-05-04 06:40:44

标签: c windows winapi assembly reverse-engineering

我正在研究学校的REing计划,有两行我似乎无法弄清楚。

  • 首先是程序调用{​​{1}},然后下一行是: GetCurrentProcess

    为什么我们会这样做?阅读LEA eax, -something-我发现它返回当前流程的句柄,将该句柄的值放在GetCurrentProcess中。

  • 现在为什么程序会删除eax中使用eax返回的值?如果它根本没有使用返回值,为什么还要调用这个函数?

lea还有什么能证明这一点吗?

1 个答案:

答案 0 :(得分:4)

在Windows操作系统下,您始终可以通过伪句柄访问当前流程,其值为(HANDLE)-1。这个值肯定是您在第二行的eax中直接加载的值,但这也是GetCurrentProcess()返回的值。
如果我很清楚你正在对一个软件进行逆向工程,我认为最初的程序员决定从一个系统转到另一个系统,从常量(HANDLE)-1GetCurrentProcess(),或者反过来忘了评论出以前的选择。
任何选择都不应产生任何副作用。
有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms683179(v=vs.85).aspx