focusbh99
驱动牛犊
驱动牛犊
  • 注册日期2007-07-04
  • 最后登录2010-01-25
  • 粉丝0
  • 关注0
  • 积分472分
  • 威望68点
  • 贡献值0点
  • 好评度47点
  • 原创分0分
  • 专家分0分
阅读:5942回复:14

知道dll中某个函数名及参数,但其没有导出.如何调用.

楼主#
更多 发布于:2007-10-22 10:50



如题,求助,请给出可操作的办法.
GoodOnline
驱动小牛
驱动小牛
  • 注册日期2007-04-11
  • 最后登录2009-02-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望204点
  • 贡献值0点
  • 好评度191点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-09 04:16
Load it into memory and then get the address of this function, call it.
kgdiwss
驱动牛犊
驱动牛犊
  • 注册日期2005-11-30
  • 最后登录2009-02-11
  • 粉丝2
  • 关注0
  • 积分655分
  • 威望89点
  • 贡献值0点
  • 好评度65点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-12 09:24
HANDLE hDll = LoadLibrary("xxx.dll");
GetFuncAddress(hDll , "函数名");
就是用这两个函数了,后面的函数名字有点忘了.
bbs.80dnst.com -- 驱动/逆向
kgdiwss
驱动牛犊
驱动牛犊
  • 注册日期2005-11-30
  • 最后登录2009-02-11
  • 粉丝2
  • 关注0
  • 积分655分
  • 威望89点
  • 贡献值0点
  • 好评度65点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-12 09:28
GetFuncAddress如果不对就是GetProcAddress之类的,一下子居然想不起来叫什么名字了,晕.
bbs.80dnst.com -- 驱动/逆向
codez
驱动牛犊
驱动牛犊
  • 注册日期2005-06-20
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望73点
  • 贡献值0点
  • 好评度49点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-11-12 14:35
引用第1楼GoodOnline于2007-11-09 04:16发表的  :
Load it into memory and then get the address of this function, call it.


正解!既然没有导出, GetProcAddress 当然无效
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-11-13 08:08
如果通过名字,或通过序号导出,可以用GETPROCADDRESS来获得地址,不然的话,就只有自己解析了。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
laoye360
驱动牛犊
驱动牛犊
  • 注册日期2006-07-04
  • 最后登录2020-12-03
  • 粉丝0
  • 关注0
  • 积分615分
  • 威望127点
  • 贡献值0点
  • 好评度62点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2008-01-04 11:01
没有导出可以这样吗?
fatorange
驱动牛犊
驱动牛犊
  • 注册日期2006-03-15
  • 最后登录2008-09-20
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-01-20 17:35
用那两个函数的话就不用LIB了。
oasky
驱动牛犊
驱动牛犊
  • 注册日期2002-11-15
  • 最后登录2009-03-30
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-02-21 23:13
如果分析的出这个函数的地址,直接CALL就好了
Haha
gxm_nicholas
驱动牛犊
驱动牛犊
  • 注册日期2007-05-14
  • 最后登录2010-01-25
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望11点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2008-02-24 15:41
我告诉你方法,首先,获取这个dll实际加载到内存中的地址,然后用idapro反汇编这个dll,找到那个函数在dll里的偏移,用dll加载地址+偏移,便得到那个函数在内存中的实际地址,然后call
就行了
guaiguaiguan
驱动中牛
驱动中牛
  • 注册日期2003-10-11
  • 最后登录2011-01-12
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望556点
  • 贡献值0点
  • 好评度490点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2008-02-28 16:03
loadlibrary ,得到模块在内存中的基地址,然后从基地址搜索函数实现的汇编指令码(为避免两个函数入口几个字节相同,可以多用几个字节)来定位函数入口地址。然后,
push xxx
...
..
call 即可。
cnwarror
驱动小牛
驱动小牛
  • 注册日期2005-08-20
  • 最后登录2013-07-31
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望257点
  • 贡献值0点
  • 好评度134点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2008-03-12 13:30
  




易用专业的PCI、USB、LED方案

我告诉你方法,首先,获取这个dll实际加载到内存中的地址,然后用idapro反汇编这个dll,找到那个函数在dll里的偏移,用dll加载地址+偏移,便得到那个函数在内存中的实际地址,然后call
就行了
hgwolf
驱动中牛
驱动中牛
  • 注册日期2002-05-16
  • 最后登录2011-12-12
  • 粉丝0
  • 关注0
  • 积分1035分
  • 威望520点
  • 贡献值0点
  • 好评度316点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2008-07-12 01:12
就是得到函数指针,然后调用
牛犊小牛中牛大牛老牛,天那,我什么时候能变成牛顿啊
achillis
驱动牛犊
驱动牛犊
  • 注册日期2008-04-14
  • 最后登录2009-01-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望17点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2008-07-19 23:04
2楼和11楼说的都是正解
jnhotice
驱动牛犊
驱动牛犊
  • 注册日期2008-11-07
  • 最后登录2009-04-17
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2008-11-07 20:03
普通动态调用DLL的方法。。
我为技术狂!
游客

返回顶部