| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2363 人关注过本帖
标题:如果使用一个程序去执行另外一个程序的函数
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
已结贴  问题点数:100 回复次数:47 
如果使用一个程序去执行另外一个程序的函数
比如有一个程序A,程序A有一个函数void testFunc(int i, int j),这个函数是当点击一个按钮就会执行的。
这个程序A是处于运行之中的,然后又开启另外一个程序B,用程序B使得程序A的testFunc函数执行,但不能用
任何的模拟方式对程序A的按钮进行模拟点击进行执行这个函数。
搜索更多相关主题的帖子: 函数 
2010-07-31 14:07
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:14 
嘿嘿,你想做什么?好奇怪的需求,用DLL不能解决问题?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2010-07-31 14:25
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
上次的问题解决了?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2010-07-31 14:27
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:14 
方法1:如果该函数为静态或者全局,或者其所属类名,域名,所在库,那么可以另外一个进程里直接调用就是了。
方法2:已知该函数的结构的话,可以自定义一个功能相同的函数替换,
方法3:用OD或者ADI找出该函数的入口地址,进行跳转。
方法4:调用该函数无非就是对数据的值进行读取,计算操作,如该数据为全局的,静态的那么找出地址,写进去,如为动态,局部的CE搜索变量改变位置,OD定位指令位置,修改或添加一段汇编指令都可以。
函数替换,动态库挂钩搜索apihijack.h或者app 可以下载到源码,直接调用,类似的有DInputHook等源码。

以上纯属YY,无代码无真相,纯为分而来。
2010-07-31 14:27
yjm218
Rank: 2
等 级:论坛游民
帖 子:10
专家分:17
注 册:2010-7-31
收藏
得分:14 
没看明白
2010-07-31 14:28
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用Knocker在2010-7-31 14:25:56的发言:

嘿嘿,你想做什么?好奇怪的需求,用DLL不能解决问题?
呵呵。。。学习写后台外挂。

[ 本帖最后由 ioriliao 于 2010-7-31 14:59 编辑 ]

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-07-31 14:57
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用Knocker在2010-7-31 14:27:22的发言:

上次的问题解决了?
解决了一半,然后遇到这个问题了。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-07-31 14:57
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用hahayezhe在2010-7-31 14:27:26的发言:

方法1:如果该函数为静态或者全局,或者其所属类名,域名,所在库,那么可以另外一个进程里直接调用就是了。
方法2:已知该函数的结构的话,可以自定义一个功能相同的函数替换,
方法3:用OD或者ADI找出该函数的入口地址,进行跳转。
方法4:调用该函数无非就是对数据的值进行读取,计算操作,如该数据为全局的,静态的那么找出地址,写进去,如为动态,局部的CE搜索变量改变位置,OD定位指令位置,修改或添加一段汇编指令都可以。
函数替换,动态库挂钩搜索apihijack.h或者app 可以下载到源码,直接调用,类似的有DInputHook等源码。

以上纯属YY,无代码无真相,纯为分而来。
这个大概知道点,就是不知道具体的方法与原理。

/images/2011/147787/2011051411021524.jpg" border="0" />
2010-07-31 14:58
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
以下是引用yjm218在2010-7-31 14:28:31的发言:

没看明白
程序代码:
程序A.exe
void testFunc(int x, int j);
int main(){
    return 0;
}
void testFunc(int x, int j){
     printf("%d%d",x,j);
}
  程序B.exe
   int main(){
       //在这里执行程序A的testFunc,执行后的结果是反映在程序A.exe上。
   }


/images/2011/147787/2011051411021524.jpg" border="0" />
2010-07-31 15:02
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
void testFunc(int i, int j);是你自己写的?有源码没,还是你已经知道函数名了,
用ollyDBG或者IDA你可以知道该函数的PE结构地址,也可以查看到该函数数据段的操作属性
比如只读,只写等
2010-07-31 15:03
快速回复:如果使用一个程序去执行另外一个程序的函数
数据加载中...
 
   



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

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