美文网首页
碰到编译优化的问题

碰到编译优化的问题

作者: icingFire | 来源:发表于2019-05-29 17:29 被阅读0次

今天想通过free伪造fast bin trunk,代码如下:

int main()

{

        char *p = (char *) malloc(10);

        long arr[20];

        arr[0] = 0;

        arr[1] = 0x20;

        arr[2] = 0;

        arr[5] = 200;

//      printf("%p\n", p);

        free(p);

        free(&arr[2]);

        printf("%lu %p\n", arr[1],arr[2]);

        return 0;

}

发现不注释printf("%p\n", p);能得到正确的结果,注释掉后运行报错。

*** Error in `./fastbinfree': corrupted size vs. prev_size: 0x00007fffb448ae80

怀疑编译优化导致的,于是在编译选项增加了 -O0 强行关闭优化,但运行依旧报错!

上IDA,反编译 -O0 得到的bin:

v7 = __readfsqword(0x28u);

  ptr = malloc(0xAuLL);

  v5 = 0LL;

  v6 = 200LL;

  free(ptr);

  free(&v5);

  printf("%lu %p\n", 32LL, v5);

发现栈数据 arr[1] = 0x20 的赋值被忽略,导致fast bin构造失败。

看来 -O0 也挡不住gcc的优化啊

相关文章

  • 碰到编译优化的问题

    今天想通过free伪造fast bin trunk,代码如下: int main() { char *p ...

  • Orcale解锁脚本

    在数据库的开发过程中,经常碰到包、存储过程、函数无法编译或编译时会导致PL/SQL 无法响应的问题。碰到这种问题,...

  • LLVM

    一、编译器 性能优化:启动优化、界面优化、架构优化 编译型语言:OC(编译器是clang)、C(编译器可以直接执行...

  • apkTool反编译apk碰到的问题

    在Mac平台上反编译了某个知识付费类的app,用的weex技术。发现反编译不成功 流程如下 反编译apkjava ...

  • java docker file

    主要优化时区问题 编译注意项:编译的目录结构:Dockerfile Shanghai app.jar Shan...

  • Build settings探究之—编译优化

    Build settings探究之—编译优化 Build settings探究之—编译优化

  • 对LLVM和跨平台的理解

    广义 LLVM 架构包括编译前端 + 中间优化 + 编译后端; 狭隘 LLVM 指的就是中间优化 + 编译后端; ...

  • 晚期(运行期)优化

    HotSpot的即时编译器 解释器与编译器 编译对象与触发条件 编译过程 编译优化技术 如果还对其他的经典编译优化...

  • iOS的性能优化

    1、ipa包体积优化 1.1 编译配置优化:编译器代码层面优化Optimize Level;Bitcode(较难...

  • iOS打包可执行MachO文件瘦身

    编译选项 1.编译器优化级别 Build Settings->Optimization Level有几个编译优化选...

网友评论

      本文标题:碰到编译优化的问题

      本文链接:https://www.haomeiwen.com/subject/jctutctx.html