找动态加载的dll的函数地址记录(300分)

  • 主题发起人 主题发起人 brokensun
  • 开始时间 开始时间
B

brokensun

Unregistered / Unconfirmed
GUEST, unregistred user!
32位下
若静态加载可以通过PE格式,找到要使用的各函数的入口地址的记录处(注意:是记录处)
但若是动态加载的,通过什么好的方法能搜到记录着调用函数地址的地址呢?
 
程序运行时View modules(ctrl+Alt+M)
 
你可以单步执行,就可以看到了呀
 
sorry,是我问的不好:我是想看别的进程里待使用的动态加载的dll的函数(是记录地址的地址)
 
提一下,好久没弄这方面的东东了
 
先得到函数的地址:
hh:=getmodulehandle('user32.dll');
p:=getprocAddress(hh,'MessageBoxA');
pp:=dword(p);
然后再 ITA 中搜索!

如果PE中的 OriginalFirstThunk 有效,也可通过函数名进行搜索!
type
IMAGE_IMPORT_DESCRIPTOR=packed record
OriginalFirstThunk:dword; //****Here
TimeDateStamp:dword;
ForwarderChain:dword;
Name:dword;
FirstThunk:dword;
end;
 
真不意思,呵呵,这个ITA是什么全称,我这方面知识掌握的很少。
动态加载的调用地址应该不固定,只是一个变量赋了入口的地址,何谈getprocAddress?
不知我这样理解对么?
 
Import Table Address

如果程序对MessageBoxA有调用,那么MessageBoxA的地址应该在ITA中存在。
这是由PE装载器动态加载的。

你可以自己熟悉一下这方面的内容:
http://www.my169.com/~bigluo/iczelion.htm#3
http://www.my169.com/~bigluo/program/iczelion/lion-petut-c01.htm
 
谢谢,有时间我马上去看一下,最近较忙,有要先搁一下,对不起,过些日子再来
 
后退
顶部