高难!我有程序可执行文件.EXE,想知道某个函数是怎么调用的(该函数名是知道的).
我有一个开发包SDK(DLL方式的),我自己在调用其中一个函数(该函数名是知道的).
怎么都不对.另外我有一个DEMO程序可执行文件.EXE,它也对着个函数进行了调用,
我想通过这个EXE文件得知这个函数是怎么调用的,请问有人做过吗?
问题点数:100、回复次数:16Top
1 楼w100(石头~鱼儿)回复于 2004-11-03 11:49:56 得分 10
softice 之.Top
2 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-11-03 11:50:05 得分 10
楼主可说的是调用堆栈或者是传递的参数?Top
3 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-11-03 12:21:07 得分 10
把那个DEMO动态跟踪一次Top
4 楼flyelf(空谷清音)回复于 2004-11-03 12:37:52 得分 10
该sdk没有帮助?Top
5 楼roger_ding(海天一色)回复于 2004-11-03 12:58:08 得分 10
WinDasm,OllyDbg
这些工具可以静态分析出具体函数调用,很好用!Top
6 楼iamzxx()回复于 2004-11-03 15:36:55 得分 0
该sdk介绍该函数是用来"获取当前是否有扫描仪按钮按下事件发生,并得到按钮按下的
类型",我把它放在一个循环里面WHILE(TRUE),第一次它执行正确,循环执行到第二次就出错,
我想看下DEMO中是怎么调用的.WinDasm,SOFTICE都没用过.请问kugou123(酷狗):
"动态跟踪一次"使用什么工具?Top
7 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-11-03 16:15:19 得分 10
动态跟踪一次,就是让你把Demo程序单步跟踪执行一次,VC自己就有这个功能,可以用SoftICE,也可以用其他的调试工具,不过那个谁说的用WinDASM是胡扯,别听他误导^_^。
你的调用究竟如何不对?是编译不通过,还是运行结果不正确?把错报出来,让大家替你判断。Top
8 楼danyueer(淡月儿:从此以后,各人得各人的眼泪罢了)回复于 2004-11-03 16:16:18 得分 10
运行到第二次出错,很可能是你的数据在调用之前没有进行合理的初始化。Top
9 楼roger_ding(海天一色)回复于 2004-11-03 16:31:17 得分 10
to danyueer(淡月儿:清水上的足音)
你用过WinDASM吗?
Top
10 楼roger_ding(海天一色)回复于 2004-11-03 16:32:33 得分 0
我是说用Windasm分析“DEMO程序”,请问哪里错了?Top
11 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-11-03 18:01:17 得分 10
推荐用ollydbg动态跟踪。Top
12 楼iamzxx()回复于 2004-11-03 20:33:07 得分 0
Demo程序没有源代码,只有.EXE文件,在VC中能跟踪执行吗?Top
13 楼iamzxx()回复于 2004-11-03 20:34:10 得分 0
是跟踪进程吗Top
14 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2004-11-04 09:47:11 得分 10
不啊。用动态跟踪调试工具加载你的exe文件,然后可以设置断点。
断在你需要的地方,一步一步跟进,你就可以看到是怎么调用函数的了。
一般堆栈调用方式,就是把参数按相反的顺序压入堆栈,再用CALL指令,跳转到函数的开始地址。然后函数就把参数一个一个从栈中取出来执行。执行完以后,就回到CALL指令的下一条指令继续执行。Top
15 楼iamzxx()回复于 2004-11-04 11:03:44 得分 0
暂时找到了点头绪,用WIN32DASM反汇编DLL文件时找到了要用的函数名,下一步就是跟踪
了.Top
16 楼iamzxx()回复于 2004-11-07 12:18:10 得分 0
发现是线程优先级的问题,谢谢大家,结贴!!!Top




