2017-07-25 19 views
0

使用IDA Pro的分析文件,我已经发现一些代码运行,我不太明白:这段代码暗示了什么:ss:dword_410CC5 [ebp]?

mov eax, ss:dword_410CC5[ebp] ; 
call eax; Indirect Call Near Proc 

去这个地址 - 410CC5 - 我看到这一点:

ile.........Clos 
eHandle......... 

我假设在EAX第一代码片段库函数的名称存储,然后将其称为由

call eax; Indirect Call Near Proc 

但问题是地址410CC5不充分对应于这个名字(见附件)。在这个地址实际上只是零。

这是否意味着无论如何,在

call eax; Indirect Call Near Proc 

我们称之为CloseHandle的?如果是这样,那么为什么不把正确的地址传递给EAX?

Code snippet

+5

'dword_410CC5 [ebp]'不是绝对地址'410CC5',应该加上'ebp'的值。这只是'[ebp + 410CC5]'的一个愚蠢的语法。另外,'call eax'不会按名称调用函数。 – Jester

+1

当然,在第一行代码中,有一条“MOV”指令丢失了? –

+0

是的,对不起。已更正 – ShHolmes

回答

1

call指令出现在拆卸时,这意味着另一例程/函数调用在该点。

如果例程具有绝对地址,则该指令将显示为call 0xaabbccdd

如果被调用函数的地址是动态地址(这种类型的地址在操作系统加载可执行文件时被解析),则通过一个已注册的值调用它。

但是,该指令用于调用例程 - 就这些。