展开

关键词

触发OSR 编译(以goto指令为例)及安装与卸载

rdx 0x00007fffe101dd5f: push %rcx 0x00007fffe101dd60: callq 0x00007fffe101dd6a 0x00007fffe101dd65: jmpq 0x00007fffe101dd97: callq 0x00007ffff66b581c 0x00007fffe101dd9c: add $0x8,%rsp 0x00007fffe101dda0: jmpq 0x00007fffe101de77: callq 0x00007ffff66b4d84 0x00007fffe101de7c: add $0x8,%rsp 0x00007fffe101de80: jmpq 0x00007fffe101def6: callq 0x00007ffff66b4bb4 0x00007fffe101defb: add $0x8,%rsp 0x00007fffe101deff: jmpq %rbx 0x00007fffe101df1c: pop %rax // 结束set_method_data_pointer_for_bcp()函数调用 0x00007fffe101df1d: jmpq

44030

汇编模板解释器(Template Interpreter)和字节码执行

0x00000192d1972bb8: add $0x2,%r13 0x00000192d1972bbc: movabs $0x7fffd56e0fa0,%r10 0x00000192d1972bc6: jmpq 0x00000192d1972be7: add $0x4,%r13 0x00000192d1972beb: movabs $0x7fffd56e0fa0,%r10 0x00000192d1972bf5: jmpq 0x00000192d1972bb8: add $0x2,%r13 0x00000192d1972bbc: movabs $0x7fffd56e0fa0,%r10 0x00000192d1972bc6: jmpq $0x2,%r13 ; 防止意外执行到死代码 0x00000192d1972bbc: movabs $0x7fffd56e0fa0,%r10 0x00000192d1972bc6: jmpq $0x4,%r13 ; 防止意外执行到死代码 0x00000192d1972beb: movabs $0x7fffd56e0fa0,%r10 0x00000192d1972bf5: jmpq

1.1K50
  • 广告
    关闭

    开发者专享福利,1988元优惠券限量发放

    带你体验博客、网盘相册搭建部署、视频渲染、模型训练及语音、文字识别等热门场景。云服务器低至65元/年,GPU15元起

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    学会一个JVM插件:使用HSDIS反汇编JIT生成的代码

    r15) 0x00000001037b37ba: add $0x30,%rsp 0x00000001037b37be: pop %rbp 0x00000001037b37bf: jmpq movabs $0x1037b385c,%r10 ; {section_word} 0x00000001037b3866: push %r10 0x00000001037b3868: jmpq r15) 0x00000001037b3b17: add $0x30,%rsp 0x00000001037b3b1b: pop %rbp 0x00000001037b3b1c: jmpq movabs $0x1037b3bbc,%r10 ; {section_word} 0x00000001037b3bc6: push %r10 0x00000001037b3bc8: jmpq

    5K2312

    效能优化实践 | CC++单元测试万能插桩工具

    的某处跳到了函数 B 的开头,所以如果想用一个新的函数 C 取代函数 B,可以在函数 B 的开头用机器码的形式写入如下等价逻辑: MOVQ ADDRESS_OF_C %RAX //将函数C的地址放到寄存器RAX JMPQ

    16810

    效能优化实践:CC++单元测试万能插桩工具

    的某处跳到了函数 B 的开头,所以如果想用一个新的函数 C 取代函数 B,可以在函数 B 的开头用机器码的形式写入如下等价逻辑: MOVQ ADDRESS_OF_C %RAX //将函数C的地址放到寄存器RAX JMPQ

    65110

    高级语言的编译:链接及装载过程介绍

    test3 | less,搜索printf我们应该能看到以下内容: 0000000000400490 <strncpy@plt>: 400490: ff 25 6a 0b 20 00 jmpq GLOBAL_OFFSET_TABLE_+0x18> 400496: 68 00 00 00 00 pushq $0x0 40049b: e9 e0 ff ff ff jmpq 400480 <_init+0x20> ... 00000000004004b0 <printf@plt>: 4004b0: ff 25 5a 0b 20 00 jmpq GLOBAL_OFFSET_TABLE_+0x28> 4004b6: 68 02 00 00 00 pushq $0x2 4004bb: e9 c0 ff ff ff jmpq 一个是main函数的地址 */ ... 00000000004004f0 <__libc_start_main@plt>: 4004f0: ff 25 22 0b 20 00 jmpq

    90880

    Hello World背后的故事:如何在Linux上编译C语言程序

    0000000000400360 <puts@plt-0x10>: ... 0000000000400370 <puts@plt>: 400370: ff 25 aa 03 20 00 jmpq GLOBAL_OFFSET_TABLE_+0x18> 400376: 68 00 00 00 00 pushq $0x0 40037b: e9 e0 ff ff ff jmpq

    55911

    X86函数调用模型分析

    # 参数2入寄存器传递 0x0000000000401130 <+14>: e8 07 00 00 00 callq 0x40113c <foo> # push %rip 然后 jmpq

    8120

    mock C++ function for unit test

    4010e1: b8 20 0c 40 00 mov $0x400c20,%eax //4010e6: ff e0 jmpq

    32120

    从内存布局上看,Rust的胖指针到底胖在栈上还是堆上?

    s1=String::from("hello"); 而堆上的内存分配是操作系统malloc的产物,都是动态分配的,示例如下: 220a3: ff 25 af 8c 22 00 jmpq

    24020

    Rust为什么放弃Switch结构

    49a10e: 48 ff 40 18 incq 0x18(%rax) 49a112: e9 70 ff ff ff jmpq

    43900

    实战分析一个运行起来会卡死的Go程序

    <runtime.GC> 0x00000000004891a6 <+374>: mov 0x50(%rsp),%rax 0x00000000004891ab <+379>: jmpq 0x00000000004891b0 <+384>: callq 0x44f730 <runtime.morestack_noctxt> 0x00000000004891b5 <+389>: jmpq

    2.3K40

    kvm环境下分析虚拟机crash

    ...................................................... 1232: e9 1b ef ff ff jmpq

    85530

    深入理解defer(上)defer基础

    0x0000000000488b33 <+259>: callq 0x44f300 <runtime.morestack_noctxt> 0x0000000000488b38 <+264>: jmpq

    33320

    linux的so注入与热更新原理

    puts的地方,实际上是调用了puts@plt,即plt的某个位置 2.png 往上找一找,找到puts@plt的定义,即0x580的位置,可以看到机器码如下: 3.png 第一行jmpq

    2.9K30

    crash浅析tasklist_lock与进程释放

    kernel-3.10.0-862.el7/linux-3.10.0-862.el7.x86_64/kernel/exit.c: 1570 0xffffffffb8a97176 <do_wait+502>: jmpq

    50040

    ​CS:APP Attack Lab: 缓冲区溢出攻击

    (gdb) disas strncmp Dump of assembler code for function strncmp@plt: 0x0000000000400ca0 <+0>: jmpq # 0x604018 <strncmp@got.plt> 0x0000000000400ca6 <+6>: pushq $0x3 0x0000000000400cab <+11>: jmpq

    1.5K10

    深入理解defer(下)defer实现机制

    0x0000000000488f10 <+304>: callq 0x44f300 <runtime.morestack_noctxt> #扩栈处理 0x0000000000488f15 <+309>: jmpq

    53220

    java方法调用的StubCode

    0x0000026b0a5d0b39: jmp 0x0000026b0a5d0abd 0x0000026b0a5d0b3b: vmovsd %xmm0,(%rcx) 0x0000026b0a5d0b3f: jmpq

    50730

    一次kvm上kernel crash分析记录

    syn_recv_sock_toa+328>: sub %esi,%r13d 0xffffffffc03e045b <tcp_v4_syn_recv_sock_toa+331>: jmpq

    63710

    扫码关注腾讯云开发者

    领取腾讯云代金券