`
tianzhihehe
  • 浏览: 20957 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

高级C代码的汇编分析--截取struct部分

 
阅读更多

高级C代码的汇编分析--截取struct部分

 

1:

2:    typedef struct {

3:        int a;

4:        int b;

5:        int c;

6:    }mystruct;

7:

8:    int func(int a,int b)

9:    {

0040B800   push        ebp

0040B801   mov         ebp,esp

0040B803   sub         esp,1D8h

0040B809   push        ebx

0040B80A   push        esi

0040B80B   push        edi

0040B80C   lea         edi,[ebp-1D8h]

0040B812   mov         ecx,76h

0040B817   mov         eax,0CCCCCCCCh

0040B81C   rep stos    dword ptr [edi]

10:

11:       unsigned char *buf[100];

12:       mystruct *strs = (mystruct *)buf;

0040B81E   lea         eax,[ebp-190h]

0040B824   mov         dword ptr [ebp-194h],eax

13:       int i;

14:       for(i=0; i<5; i++)

0040B82A   mov         dword ptr [ebp-198h],0

0040B834   jmp         func+45h (0040b845)

0040B836   mov         ecx,dword ptr [ebp-198h]

0040B83C   add         ecx,1

0040B83F   mov         dword ptr [ebp-198h],ecx

0040B845   cmp         dword ptr [ebp-198h],5

0040B84C   jge         func+94h (0040b894)

15:       {

16:           strs[i].a=0;

0040B84E   mov         edx,dword ptr [ebp-198h]

0040B854   imul        edx,edx,0Ch

0040B857   mov         eax,dword ptr [ebp-194h]

0040B85D   mov         dword ptr [eax+edx],0

17:           strs[i].b=1;

0040B864   mov         ecx,dword ptr [ebp-198h]

0040B86A   imul        ecx,ecx,0Ch

0040B86D   mov         edx,dword ptr [ebp-194h]

0040B873   mov         dword ptr [edx+ecx+4],1

18:           strs[i].c=2;

0040B87B   mov         eax,dword ptr [ebp-198h]

0040B881   imul        eax,eax,0Ch

0040B884   mov         ecx,dword ptr [ebp-194h]

0040B88A   mov         dword ptr [ecx+eax+8],2

19:       }

0040B892   jmp         func+36h (0040b836)

20:

21:       return 0;

0040B894   xor         eax,eax

22:   }

0040B896   pop         edi

0040B897   pop         esi

0040B898   pop         ebx

0040B899   mov         esp,ebp

0040B89B   pop         ebp

0040B89C   ret

 

相关redis源代码:

 

typedef char *sds;

 

struct sdshdr {

    unsigned int len;

    unsigned int free;

    char buf[];

};

 

sds sdsnewlen(const void *init, size_t initlen) {

    struct sdshdr *sh;

 

    if (init) {

        sh = zmalloc(sizeof(struct sdshdr)+initlen+1);

    } else {

        sh = zcalloc(sizeof(struct sdshdr)+initlen+1);

    }

    if (sh == NULL) return NULL;

    sh->len = initlen;

    sh->free = 0;

    if (initlen && init)

        memcpy(sh->buf, init, initlen);

    sh->buf[initlen] = '\0';

    return (char*)sh->buf;

}

 

from http://www.cnblogs.com/lfsblack/p/3763993.html

分享到:
评论

相关推荐

    ref-struct

    var StructType = require('ref-struct') // define the time types var time_t = ref.types.long var suseconds_t = ref.types.long // define the "timeval" struct type var timeval = StructType({ tv_sec: ...

    推荐一款Java实体映射工具---mapstruct(csdn)————程序.pdf

    MapStruct通过注解处理器在编译时自动生成映射代码,既保证了性能,又提供了类型安全的解决方案。 MapStruct 的工作原理是基于Java的JSR 269注释处理器,它通过getter和setter方法进行字段拷贝,避免了反射带来的...

    mapstruct-1.1.0.Final-API文档-中文版.zip

    赠送源代码:mapstruct-1.1.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-1.1.0.Final.pom; 包含翻译后的API文档:mapstruct-1.1.0.Final-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.map...

    GPU-grid-block-thread-OpenMP-struct

    GPU-grid-block-thread-OpenMP-struct,GPU-grid-block-thread-OpenMP-struct

    mapstruct-spi-protobuf:Mapstruct的Protobuf访问器命名策略

    用于协议缓冲区的Mapstruct SPI实现 这种命名策略有助于在您的域类和protobuf类之间生成有效的映射代码。 无论和类支载。 注意:取决于mapstruct 1.4.0.CR1ProtobufAccessor命名策略扩展...

    C语言开发----c语言坦克游戏源代码.rar

    通过分析这个游戏的源代码,我们可以深入理解C语言在游戏开发中的应用,以及游戏的基本逻辑和算法。 首先,C语言是游戏开发中的一个重要工具,它的性能高效、可移植性强,适合编写底层程序。坦克游戏作为一款简单的...

    mapstruct-reference-guide.pdf

    1. **简介**:这部分通常会介绍MapStruct的基本概念和设计原则,包括约定优于配置的哲学,以及如何利用它来简化Java Bean之间的数据转换。MapStruct通过注解驱动的方式工作,开发者只需要定义映射接口,而具体的实现...

    C语言------成绩管理系统源代码

    《C语言实现的成绩管理系统源代码解析》 C语言是一种强大的编程工具,尤其在系统级编程和小型应用程序开发中,它的简洁性和高效性得到了广泛应用。本文将解析一款基于C语言编写的简单成绩管理系统源代码,旨在帮助...

    前端开源库-brisky-struct

    4. **模块化**:库的设计遵循模块化原则,开发者可以根据需求选择使用部分功能,降低了学习成本和引入的冗余代码。 5. **易扩展**:Brisky-struct 支持自定义插件和中间件,使得开发者可以轻松扩展功能,适应不同的...

    matlab开发-vars2struct

    而`vars2struct.m`则是该函数的源代码文件,通过阅读和理解源码,你可以深入了解其内部实现机制,甚至对其进行定制和扩展,以满足特定需求。 总之,`vars2struct`是一个在MATLAB中处理多变量数据时非常有用的工具,...

    matlab开发-xml2struct

    MEX函数是MATLAB与C/C++代码交互的一种方式,可以显著提高执行速度,因此,`xml2struct`通过MEX编译的C/C++代码来解析XML文件,能更高效地将XML数据转换为MATLAB友好的结构。 1. **MEX函数**:MEX(MATLAB ...

    ch10-C-struct-union.rar_struct and union_union

    在C语言中,`struct` 和 `union` 是两种非常重要的数据类型,它们允许我们创建自定义的数据结构来存储和操作复杂的数据。本章节将详细探讨这两种数据类型的使用及其特点。 首先,`struct` 结构体是C语言中用于组合...

    智能交通灯C语言-------源代码

    通过这个智能交通灯的C语言源代码,初学者可以学习到C语言的基本语法,图形界面编程,以及如何用结构体和链表来组织数据。同时,这个程序也涉及到了简单的流程控制和时间管理,为C语言的实践应用提供了很好的实例。

    lpeg-0.12.2-struct-0.2

    当lpeg-0.12.2与struct-0.2结合时,开发者可以利用LPEG的强大解析能力,配合Struct的数据结构,实现更为复杂的文本分析和处理任务。例如,开发者可以使用LPEG解析XML或JSON文档,然后通过Struct定义的数据结构来存储...

    mapstruct-jdk8-1.2.0.Final-API文档-中英对照版.zip

    赠送源代码:mapstruct-jdk8-1.2.0.Final-sources.jar; 赠送Maven依赖信息文件:mapstruct-jdk8-1.2.0.Final.pom; 包含翻译后的API文档:mapstruct-jdk8-1.2.0.Final-javadoc-API文档-中文(简体)-英语-对照版.zip...

    C语言程序设计--期刊管理系统

    此外,文件操作也是C语言中的重要部分,特别是在涉及数据持久化的情况下。在期刊管理系统中,我们需要将期刊数据保存到磁盘上,以便于后续的读取和更新。这涉及到文件的打开、写入、读取和关闭等操作,以及格式化...

    C语言开发----c语言电子时钟程序.rar

    这个“C语言开发----c语言电子时钟程序”压缩包很可能是包含了一个简单的C语言源代码,用于实现一个实时显示当前时间的功能。下面将详细介绍这个过程中的关键知识点。 首先,C语言不直接支持获取系统时间,我们需要...

    C语言编程---火车订票系统源代码.doc

    【火车订票系统源代码分析】 本篇文档提供的是一份基于C语言编写的火车订票系统的源代码。这个系统能够实现基本的火车信息管理、查询、预订和信息更新等功能。以下将对源代码的主要结构和功能进行详细解析。 1. **...

    C语言课程设计----销售管理系统课程设计

    - **开发目的**:通过此项目,学生能够掌握C语言的基本语法及高级特性,并学会如何运用C语言解决实际问题。 #### 二、需求分析 - **业务场景**:一家公司有四位销售员(编号1至4),负责五种产品的销售(编号1至5...

Global site tag (gtag.js) - Google Analytics