问大家一些简单的问题II下集(这次稍微复杂一些了)欢迎灌水,无论提前和“Listen”我都会在升仙之后划十字保佑你的(50分)

  • 主题发起人 主题发起人 HORNEY
  • 开始时间 开始时间
H

HORNEY

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟最近看了一份PE格式的参考,产生如下疑问:
在调用DLL引出函数时的汇编指令:CALL 函数,这个函数有时可以用指针代替,那么
这指针到底是RVA(相对虚拟地址)呢,还是VA?如果是VA那又是如何转化的,我的意思
是DLL调用者是如何知道DLL的装入地址的?要知道LOADLIBRARY和GETPROCADDRESS也是
两个DLL的引出函数(只不过这个DLL好像来头比较大一点)难道每次WINDOWS内核DLL装入
的地址都是一样使得我们可以顺利使用LOADLIBRARY和GETPROCADDRESS?
 
深奥!!关注!!!!!!
 
哈哈!!祝你早日升仙!!!
 
应该都不是固定的,只是看起来好像固定。。。[:)]
 
动态装入的dll才是用LoadLibrary
我们调用那些kernal32.dll里面的api,通过的是缺省装入,就是CreateProcess,
CreateProcess也是kernal32里面的,当程序开始运行的时候,那些动态链接的地址已经
设置好了(当然是RVA了)
 
你的回答我还是有些不懂,我知道调用API需要重新装定地址,但是我反编译某些EXE之
后,发现EntryPoint都是些0040xxxx之类的东西,而用快速查看看EntryPoint时又和这
些东西不一样,甚至不同的EXE调用相同的API的EntryPoint也是不一样的,我现在脑子
里已经是一团遭了,我想搞清的是快速查看中Dll function EntryPoint,反编译以后
的EntryPoint,还有RVA之间的关系,能告诉我它们是怎么重新装定的吗?
另外,CreateProcess不也是一个WIN32API函数吗?
 
快速查看中Dll function EntryPoint,反编译以后的EntryPoint是一样的吧
RVA是对模块地址的偏移
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
613
import
I
I
回复
0
查看
664
import
I
I
回复
0
查看
708
import
I
后退
顶部