| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2363 人关注过本帖
标题:如果使用一个程序去执行另外一个程序的函数
只看楼主 加入收藏
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
哦,那么我要说,如果你在自己的进程中写好了一个函数,你想要这个函数执行。
有那些方法(提示:2种)?

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-01 13:04
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用东海一鱼在2010-8-1 13:04:15的发言:

哦,那么我要说,如果你在自己的进程中写好了一个函数,你想要这个函数执行。
有那些方法(提示:2种)?
一种是直接调用,一种是取得这个函数的地址进行调用,如下:
程序代码:
procedure testFunc();begin
     ShowMessage('ok');
end;
procedure TForm1.Button1Click(Sender: TObject);
type
    pfunc=procedure();
var
    f:pfunc;
begin
    testFunc();
    f:=@testFunc;
    f();
end;


/images/2011/147787/2011051411021524.jpg" border="0" />
2010-08-01 13:17
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
windows核心编程  第22章 注入DLL和拦截API 讲解比较详细 也有例子。记得上次在你帖子里讲过。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-08-01 13:24
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
哦,我明白你的盲点在哪里了。

因为你上面的调用方法没有区别。
第二种调用方法是:CreateThread 把你的函数地址或外包函数地址放入这个API的某个参数中,
以获得的线程并行执行的能力。

而调用你的注入DLL的关键也在于此,因为你无法直接在你的进程中调用dll中的代码(它已属于目标进程),
但是通过创建线程却可以。不过,他和进程内创建线程稍有区别:
CreateRemoteThread
创建远程线程。好了,我想看到这里,你应该有种醍醐灌顶的感觉。这正是我所期望的。


[ 本帖最后由 东海一鱼 于 2010-8-1 13:29 编辑 ]

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-01 13:28
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用东海一鱼在2010-8-1 13:28:37的发言:

哦,我明白你的盲点在哪里了。

因为你上面的调用方法没有区别。
第二种调用方法是:CreateThread 把你的函数地址或外包函数地址放入这个API的某个参数中,
以获得的线程并行执行的能力。

而调用你的注入DLL的关键也在于此,因为你无法直接在你的进程中调用dll中的代码(它已属于目标进程),
但是通过创建线程却可以。不过,他和进程内创建线程稍有区别:
CreateRemoteThread
创建远程线程。好了,我想看到这里,你应该有种醍醐灌顶的感觉。这正是我所期望的。
谢谢!确实有顿开茅塞之快感,比找小姐都爽。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-08-01 14:11
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用你们都要疼我哦在2010-8-1 13:24:42的发言:

windows核心编程  第22章 注入DLL和拦截API 讲解比较详细 也有例子。记得上次在你帖子里讲过。
呵呵。。。我浏览了一下,这个问题对我来说不是主要的问题。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-08-01 14:12
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
老子云:形而上着谓之道,形而下者谓之器。尝见先道而后器者也!

‘道’(理论)是重要的,‘器’(实践)是必须的。

楼主何不先‘器’出一件小品,让众看客一睹为快哪?!

BTW:
我看用‘记事本’做目标就不错。先遥控它的‘关于’对话框吧。


举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-08-01 18:10
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用东海一鱼在2010-8-1 18:10:15的发言:

老子云:形而上着谓之道,形而下者谓之器。尝见先道而后器者也!

‘道’(理论)是重要的,‘器’(实践)是必须的。

楼主何不先‘器’出一件小品,让众看客一睹为快哪?!

BTW:
我看用‘记事本’做目标就不错。先遥控它的‘关于’对话框吧。
呵呵。。。谢谢仁兄提醒。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-08-01 18:32
快速回复:如果使用一个程序去执行另外一个程序的函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017731 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved