工作中遇到的问题:

在GDB调试时要进入下边该判断后边的函数,而m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen)的返回值是false,所以需要修改该函数的返回值,

-------------------------------------------------------------------------------------------------------------------------------------

if(TRUE== m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen))

{

}
else
{ //g_MdsLogEvent(RUNLOG,"Skip_Pkt_Seq:%d, pktlen:%d",g_nInPktSeq, dwPacketLen);
g_nPktFromEthDropCnt ++;
g_nL2NotIPTraffic += dwPacketLen;

if(m_EtherDecode.m_uiPtlOverMAC == PID_ETHERTYPE_IPV6)
{
g_nPktFromEthDropCnt_IpV6++;
}
return ;
}

-----------------------------------------------------------------------------------------------------------------------------------------

方法:

1,在调试到该函数时, s    (step) 进入该判断条件函数;

2,disassemble            ----反编译一下当前函数

3,i r (info registers)    ----查看当前寄存器的值,主要是第一个,可能是eax,也可能是rax,,我的就是rax,,,记住是第一行寄存器里边存着的就是返回值;

4,寻找判断位置,在函数执行完时,查看寄存器的值,(函数体内)   i  r      ;

5,在函数返回前,,,,当前行为----     }     ,在此处修改寄存器的值, set $rax= 1     通过set命令修改寄存器的值,需要在寄存器前边加 字符$    ----一个shell 判断当前指向的标志

6,i f    修改完寄存器后查看修改情况;

7, n   或者   s        进入下一行调试,修改完成。

GDB 修改当前判断函数的返回值(即修改寄存器的值)的方法的更多相关文章

  1. [sql]sql函数coalesce返回第一个非空的值

    下面来看几个比较有用的例子: 首先,从MSDN上看看这个函数的使用方法,coalesce函数(下面简称函数),返回一个参数中非空的值.如: SELECT  COALESCE(NULL, NULL, G ...

  2. JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集

    工具地址:https://github.com/BothEyes1993/bes-jstools bes-jstools 100多个基础常用JS函数和各种数据转换处理集合大全,此工具包是在 outil ...

  3. js进阶 12-8 如何知道上一个函数的返回值是什么(如何判断上一个函数是否执行成功)

    js进阶 12-8 如何知道上一个函数的返回值是什么(如何判断上一个函数是否执行成功) 一.总结 一句话总结:event的result属性即可. 1.event的result属性的实际应用场景是什么? ...

  4. Shell入门教程:Shell函数的返回值

    shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...

  5. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  6. C++中函数的返回值

    原文 [ 函数的返回值用于初始化在调用函数处创建的临时对象.在求解表达式时,如果需要一个地方储存其运算结果,编译器会创建一个没有命名的对象,这就是 临时对象.temporary object ] -- ...

  7. Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器

    函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  8. java 一个函数EnumMap返回多个值

    java 一个函数如何返回多个值   在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!! 网上这个问题的解决方法: 1.使用map返回值:这个方法问题是,你并不知道如何返回值 ...

  9. 终于懂了:Delphi消息的Result域出现的原因——要代替回调函数的返回值!(MakeObjectInstance不会帮助处理(接收)消息回调函数的返回值)

    MakeObjectInstance应该不会帮助处理(接收)消息回调函数的返回值,可是有时候又确实需要这个返回值,这可怎么办呢?我是看到这段文字的时候,想到这个问题的: 当WM_PAINT不是由Inv ...

随机推荐

  1. JAVA判断各种类型数据是否为空

    1.判断list是否为空(Map.Set同list) if(list != null && list.size() == 0){ } if(list != null && ...

  2. linux最常用的20条命令

    玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...

  3. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  4. python实现自动输入命令回车操作

    苦逼的在sf上等了一天(问题链接),都没人来解答,只好自己想办法,东平西凑还是勉强实现了,记录一下: 安装完python2.7后,在cmd命令行输入python回车,后出现python相关的提示信息, ...

  5. Beta版本——第三次冲刺博客

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  6. [USACO 2010 OPEN]SLIED

    传送门 这道题的题意描述简直有毒.题没看完一眼分层图,然后火速敲了个堆优化的dijkstra,然后就被样例教做人了QAQ 这里说的最坏的情况让我很迷茫?感觉很难判定到底什么是最坏的情况以及确定了最坏的 ...

  7. POJ1236Network of Schools(强连通分量 + 缩点)

    题目链接Network of Schools 参考斌神博客 强连通分量缩点求入度为0的个数和出度为0的分量个数 题目大意:N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后 ...

  8. Objective -C学习笔记之字典

    //字典:(关键字 值) // NSArray *array = [NSArray array];//空数组 // NSDictionary *dictionary = [NSDictionary d ...

  9. spring-data-jpa 的@Query注解的使用

    // ------------------------------------ 使用 @Query 注解 // 没有参数的查询 @Query("select p from Person p ...

  10. netty socket 客服端编程

    package com.ming.netty.nio; 2 3 import io.netty.bootstrap.Bootstrap; 4 import io.netty.channel.Chann ...