当前位置:  技术问答>linux和unix

为什么函数参数值莫名其妙改变了???

    来源: 互联网  发布时间:2015-04-04

    本文导语:  请看下面代码片断:当我调用解密函数CPDcrypt的时候传进去7个参数,可以刚刚进入函数之后它的第七个参数值就莫名其妙的改变了,请看看我跟踪这部分代码,就可以发现最后一个参数在进入函数之前&shit=0xbfffddd8,可...

请看下面代码片断:当我调用解密函数CPDcrypt的时候传进去7个参数,可以刚刚进入函数之后它的第七个参数值就莫名其妙的改变了,请看看我跟踪这部分代码,就可以发现最后一个参数在进入函数之前&shit=0xbfffddd8,可是进去之后马上就变成0x804d1bc了,紧接着引用这个参数时就出现越界而segment fault了。我实在是不明白为什么,请高手指点,非常感谢。

2706            DWORD shit=128;
2707            if(CPDecrypt(hProv,
2708                             hXchgKey,
2709                             NULL,
2710                             true,
2711                             0,
(gdb) l
2712                             pbBuffer,
2713                             &shit))
2714            {
2715                    printf("decrypt ok in line 2714n");
2716            }
2717            else
2718            {
2719                    perror("error decrypt in line 2718!");
2720            }
2721
(gdb) print hProv
$2 = 134557416
(gdb) print hXchgKey
$3 = 134558120
(gdb) print pbBuffer
$4 = (BYTE *) 0x8053cf8 "30-盌?"
(gdb) print shit
$5 = 128
(gdb) print &shit
$6 = (DWORD *) 0xbfffddd8
(gdb) l
2722                    file://鐎电厧鍤粔渚?鎸?,閸忓牐骞忛崣鏍х槕闁姐儵鏆辨惔锟?
2723            pbData = NULL;
2724            cbData = 0;
2725            if(!(CPExportKey(hProv,
2726                                            hSignKey,
2727                                            NULL,       //hKey
2728                                            PRIVATEKEYBLOB,
2729                                            0,
2730                                            pbData,
2731                                            &cbData)))
(gdb) s
CPDecrypt (hProv=134557416, hKey=134558120, hHash=0, Final=1, dwFlags=0,
pbData=0x8053cf8 "30-盌?", pcbDataLen=0x804d1bc)


|
你在开发过程中是否改过函数原型?你的库和主程序使用的头文件一致吗?把库和主程序全部重新编译一遍看看。

|
你的cbData是栈型的变量么?如果是全局变量或者静态变量,地址当然不是0xbffff???了!你用DWORD shit=128;声明shit变量,是在栈中声明的,所以是0xbfffddd8,而且你的cbData和shit根本就不是一个变量,你说的“最后一个参数在进入函数之前&shit=0xbfffddd8,可是进去之后马上就变成0x804d1bc了”,我实在是不明白。

    
 
 

您可能感兴趣的文章:

  • Python函数默认参数和字典参数及可变参数(带星号参数)
  • java类中的方法就是函数了,函数参数全是传值了,传址参数怎样表示?
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • unix shell 下进程的命令行参数与源程序 main函数的入口参数 是同一回事吗? 第一次编 .sh 文件,哪一位肯帮忙?
  • 很菜,shell脚本中怎么写函数,怎么使用带参数的函数???
  • 如何将comm 2>>的重定向结果传输到一个函数呢,作为这个函数的参数输入
  • 各位高手:java是不是不支持缺省参数。为什么我在写一个类的构造函数时,加入缺省参数出现错误。
  • JAVA中函数调用时,能不能向 C/C++一样函数的入口参数可以为传出值(就是引用,或指针)
  • 急:unix的shell脚本中,定义了一个函数getDate(),在后面的执行命令参数用要使用这个函数的返回值,应该怎么写?
  • java中函数的缺省参数怎么定义?
  • probe函数参数传递过程?
  • 对recv函数第四个参数置0的疑问
  • 求助:ioctl函数的命令参数
  • Linux0.11 内核源码 main函数的参数问题
  • gtk 回调函数的参数传递问题!
  • 函数参数入栈顺序以及参数地址间隔的问题
  • ioctl函数的参数问题
  • write(1,buff,len);这个函数中的第一个参数是常数1??
  • 关于main()函数参数调用的问题,老师请进~谢谢
  • c++函数参数的含义
  • main函数中的参数args[]???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • Linux c++虚函数(virtual function)简单用法示例代码
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析
  • cityhash 32位,64位和128位介绍及函数列表
  • 谁能告诉我,在JAVA中,哪个函数和ASP中的Int()函数等同,也就是取整函数


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3