zoukankan      html  css  js  c++  java
  • 跳转指令公式计算 HOOK

    注:不要HOOK 函数里可能会被跳转的地址, 不要HOOK 字节中包含函数调用的地址 如 HOOK的地址里有 CALL EDX 等

    x86

    • JMP计算公式
    •    目标地址-当前地址-5 = 机器码E9后面所跟的32位数
    • JE计算公式
    •    目标地址-当前地址-6 = 机器码0F 84后面所跟的32位数
    • JNE计算公式
    •    目标地址-当前地址-6 = 机器码0F 85后面所跟的32位数
    • CALL计算公式
    •    目标地址-下条指令的地址=机器码E8后面所跟的32位数  ret十六进制码 C3

    x64

          jmp计算公式

                 1 第一种方法 jmp qword ptr[ 保存目标地址的指针地址]

                 保存目标地址的指针地址-下条指令的地址= 特征码 FF 25 后面跟着的32位数  

                     (注意保存目标地址的指针地址 和 下条指令地址 都必须在一个PE段(section)) 而且  保存目标地址的指针地址 必须在 下条指令的地址下面

                      计算下条指令方法就是 FF 25 32位数 总共 六个字节

                      保存目标地址的指针地址 必须是 八个字节

                      总共 14 个字节

                 2  第二种方法

                   push r15

                        mov r15, 目标地址

                        jmp r15    

                       到目标地址一系列操作后 还原 r15 pop               

                   pop r15 

                3 第三种方法

                    mov r15,目标地址

                    push r15

                    ret

                 个人建议 使用 第一种方法

  • 相关阅读:
    centos安装rabbitMQ
    迁移文件时发现SyntaxError: Generator expression must be parenthesized
    2020.9.14、星期一
    自己的github 项目怎么构建
    卡尔曼滤波
    模型转换
    vs2019 安装ncnn
    VS2019配置opencv 4.4
    others
    小脚本
  • 原文地址:https://www.cnblogs.com/kuangke/p/5480987.html
Copyright © 2011-2022 走看看