问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用c语言在自己程序中执行另一个程序中(假如不是自己的)的函数

发布网友 发布时间:2022-10-26 22:30

我来回答

4个回答

热心网友 时间:2023-09-19 14:17

看你的执行顺序应该是分别执行两个 .c 文件。就是两个独立的进程。每个进程有相互独立的虚拟地址空间。你所得到的40059c是另一个进程的函数地址。 在exploit中的40059这个地址是非法使用的。要想在一个进程中使用另一个进程的函数,就必须要用进程间通信。如共享内存,注册函数,共用此函数。
看你的意图是想要在一个文件中利用函数指针调用别的文件中的函数。如果说你只是想要熟悉一下函数指针,那么这种方法是不可取的。因为函数在定义是并不分配存储空间,在调用的时候在栈中分配存储空间,返回时释放。
要想用数值强转成函数地址。这个函数的地址就必须不能改变。那么就需要将函数声明为静态函数。这样麻烦又来了,静态函数是文件内部使用,外部不能引用。所以,你这种做法是不可取的。

热心网友 时间:2023-09-19 14:17

看你的执行顺序应该是分别执行两个 .c 文件。就是两个独立的进程。每个进程有相互独立的虚拟地址空间。你所得到的40059c是另一个进程的函数地址。 在exploit中的40059这个地址是非法使用的。要想在一个进程中使用另一个进程的函数,就必须要用进程间通信。如共享内存,注册函数,共用此函数。
看你的意图是想要在一个文件中利用函数指针调用别的文件中的函数。如果说你只是想要熟悉一下函数指针,那么这种方法是不可取的。因为函数在定义是并不分配存储空间,在调用的时候在栈中分配存储空间,返回时释放。
要想用数值强转成函数地址。这个函数的地址就必须不能改变。那么就需要将函数声明为静态函数。这样麻烦又来了,静态函数是文件内部使用,外部不能引用。所以,你这种做法是不可取的。

热心网友 时间:2023-09-19 14:18

你的想法是好的,但现实是残酷的,你这想法是没办法实现的.当然,也不是完全没办法,还是可以用进程间通讯的方式来实现的.

热心网友 时间:2023-09-19 14:18

看到你对其他人的追问,想说的是如你现在有函数的原型(函数的声明),但没有函数体的定义,不过现在函数体A.exe,B.exe中想调用它是吗?
如果是这种情况,如果A.exe和B.exe都想使用同一个函数,得把函数放在DLL模块中,声明为导出,这样DLL模块的PE导出表才会有函数的信息,其他程序就能通过GetProcAddress获取函数的指针.

热心网友 时间:2023-09-19 14:18

你的想法是好的,但现实是残酷的,你这想法是没办法实现的.当然,也不是完全没办法,还是可以用进程间通讯的方式来实现的.

热心网友 时间:2023-09-19 14:18

看到你对其他人的追问,想说的是如你现在有函数的原型(函数的声明),但没有函数体的定义,不过现在函数体A.exe,B.exe中想调用它是吗?
如果是这种情况,如果A.exe和B.exe都想使用同一个函数,得把函数放在DLL模块中,声明为导出,这样DLL模块的PE导出表才会有函数的信息,其他程序就能通过GetProcAddress获取函数的指针.

热心网友 时间:2023-09-19 14:19

如果你不想用头文件include,那么就用extern声明该函数,前提是编译系统能够找到该函数所在的原型

具体到本例,就是编译系统要知道test.c在哪里,一般放在同一个文件夹下面就可以
如果不在同一文件夹下,最好还是include头文件,在头文件中声明

热心网友 时间:2023-09-19 14:19

如果你不想用头文件include,那么就用extern声明该函数,前提是编译系统能够找到该函数所在的原型

具体到本例,就是编译系统要知道test.c在哪里,一般放在同一个文件夹下面就可以
如果不在同一文件夹下,最好还是include头文件,在头文件中声明
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求抛物线y×y-6x=0的焦点坐标和准线方程 6-6x=6的解是x=0 .( ) 判断题 财富 一个方程问题:6x=0有没有解 6x=0,x=( ) 下列算式是方程的是( )A.101-1=100B.8x-2C.6x=0D.x-17 6X=0,这个方程没有解 对吗? 6x=0不是方程.××.(判断对错) 6x=0是方程. __ (判断对错) 今晚地球停电一小时,做点什么好呢 月经第八天还有褐色分泌物预防什么病 进程间可否使用回调函数 小学生读书名言100句简短 我的身高160cm,腰围是2.2尺,应该穿什么码的裤子啊? 整容前后的注意事项有哪些 整容后饮食需注意哪些? 我想问一下如何显示ppt进度 律所前台会找什么样的人 成都哪里有专门卖平板电脑的地方 求成都MID平板电脑实体店地址 成都哪里买平板电脑最好?我想买昂达平板电脑。请给点建议,谢谢。 成都平板电脑去哪里买比较好谁比较了解 潭柘寺求什么灵 阴宅修在庙边上可以不 对联上:庙边棠棣花开艳 广东省江门市台山市端芬镇庙边村委会庙边圩邮编是什么? 请问从庙边到横林骑自行车怎么走 寺庙旁边开店 在寺庙边上开店做生意好不好? 我的房子盖在庙边,可我没住,有影响吗? 庙边建房子好不 进程间软中断通信(signal函数和kill函数)相关问题 游泳真的能起到塑身瘦身的效果吗? 游泳能不能锻炼肌肉 游泳塑身有技巧吗? 游泳可以强身健体,冬泳有什么好处?怎样练冬泳? 显示器重影模糊是什么原因? 神舟10号飞了多长时间 描写圆明园毁灭后的的诗 老婆拿我的超市卡买了12杯香港兰芳园丝袜奶茶,很好喝吗? 十二星座专属奶茶(十二星座专属可爱杯) 关于保险和债务的法律规定 出汗多,吃什么可以补回来 成都维邦园林景观工程有限公司怎么样? 涉史随笔,大道之行也的大同社会有何不同 有人知道厦门大学附属心血管病医院上班时间么? 螺旋和轴抽粮机有啥区别? 梦见天气很冷是什么意思? 开小牛是什么意思 反绒鞋面怎么清理 反绒鞋面如何清理 在长沙工资税前32万,相当于上海的多少工资