能力值:
( LV9,RANK:160 )
|
-
-
2 楼
晕,这个能叫“句柄”?!狂汗………… 呵呵,想法倒是不错……不过没得这样的事情
|
能力值:
( LV9,RANK:380 )
|
-
-
3 楼
楼主去上大学吧~~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
LPTHREAD_START_ROUTINE entrypoint;
__asm
{
push eax;
lea eax,yourfunction;
mov entrypoint,eax;
pop eax
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
楼上写的什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
楼上各位可能没有看懂我的意思,
我重新做了说明,请大家再看看!
|
能力值:
( LV9,RANK:380 )
|
-
-
7 楼
还是一头雾水~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我的问题是如何用“类似的方法”获取主程序中的函数地址(不是DLL的函数地址),或者有这样的API、方法等
|
能力值:
( LV9,RANK:610 )
|
-
-
9 楼
GetProcAddress就是遍历导出表匹配函数名而已嘛,EXE也可以有导出函数的,如果导出了是可以这样的,不过一般情况下EXE是不导出函数的。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我的想法就是要导出在EXE中的函数。
注意,有些EXE与DLL类似,可用GetProcAddress导出内部函数,Windows中有些API就是放在这样的EXE中。
但是我们用的EXE大多数是不能用GetProcAddress导出内部函数,如何导出EXE内部函数,就靠大家了!
|
能力值:
( LV6,RANK:90 )
|
-
-
11 楼
看看这样做可行否
扫描代码段,找出所有的call 指令,把call指令后的操作数转换成函数地址(排除其中IAT中的项,也就是导入函数),剩下的就是内部函数的地址了.要导出内部函数名...没有符号文件是办不到的.若有了符号文件,额,内部函数直接从符号文件输出就得了
|
能力值:
( LV9,RANK:610 )
|
-
-
12 楼
扫描代码段,找出所有的call 指令
这红字的工作难道不需要一个反汇编引擎吗?
|
能力值:
( LV6,RANK:90 )
|
-
-
13 楼
赞同楼上的看法,感觉能用反汇编引擎来做这个就万无一失了.若是自己仅仅用call指令的几个机器码来匹配,很有可能会误判
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
先要感谢楼上几位的参与
楼上几位说的是在静态的情况下做这样的工作,动态时如何做?
就是在DLL中取主程序的函数地址,这个难度是相当大的
|
能力值:
( LV9,RANK:260 )
|
-
-
15 楼
没导出获取什么,特征码搜索吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
在DLL中可以通过回调函数的方法运行主控程序中的函数,这个回调函数地址是EXE通过指针传给DLL的 ,这可以理解为函数的导出。这个功能的实现是在静态设计时做好的。EXE中的函数地址地其运行过程中很容易获得,但这要经过编程实现。比如在EXE中做一个函数专用于获取所在主EXE中和所有函数地址。
如果EXE没有原码或者是别人提供的EXE它的函数地址就不能用上面说的方法了。
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
DLL可以通过回调函数的方法来调用EXE中的特定函数,但这个功能必须在设计中制定好才可使用,而且这类回调函数功能视设计要求而相对简单、固定。回调函数地址可以看做是EXE中某个函数导出到DLL的地址,也就是EXE中一个导出函数,供DLL使用。
实际上EXE中的所有函数都可获得,但要通过程序设计时增加一个获取函数地址的功能来实现,并传给DLL。但是大多数EXE是没有源代码的,如何在DLL中获取EXE中的函数地址这是我所期待的
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
.....使用 GetProcAddress 获取 dll 的中函数 是因为函数存在于dll文件的导出表中.
dll也分导出函数 和 内部使用的函数 .. 不存在导出表的函数是无法获得的
同理... 你的问题是无解的.. 我是这么认为的
;补充一点....主程序调用的api函数 是可以获取的.. 我指的是软件作者自己写的函数
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
感觉好像很高深,我知道DLL有相关函数句柄,其实那只是函数指针。其实看你怎么理解句柄这个东西。一般的普通函数(导出函数),都没有句柄的概念,就是一个函数地址啊。不懂楼主需要干什么坏事
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
看了半天终于理解了,就是想调用函数CALL嘛,写那么复杂。想做挂么?
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
通过大家的讨论,我好象搞清楚一了点,就是要获得函数地址就一定要有导出表!!
那么EXE中是否有导出表?据我的了解,Windows中有一些EXE中的函数是可以做API使用的,那么能提供API的EXE就一定有导出表?它是如何实现的?
|
能力值:
( LV9,RANK:260 )
|
-
-
22 楼
当然有导出表,都是PE结构。声明成导出函数就可以了。
获取个地址而已,特征码搜索不就完了……
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
“声明成导出函数就可以了”
那如何在做EXE时声明“导出函数表”的节。使EXE的函数可以导出?
|
能力值:
( LV9,RANK:260 )
|
-
-
24 楼
extern "C" __declspec(dllexport) xxx() {
xxx;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
To Fypher 首先感谢你对本问题的参与。
24楼的回复使小虾米看到了曙光。
能否给一个可放在EXE中用的完成代码?
|
|
|